diff --git a/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs b/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs new file mode 100644 index 0000000..3553fd8 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Controllers/AuctionController.cs @@ -0,0 +1,17 @@ +using AyCode.Core.Extensions; +using Microsoft.AspNetCore.Mvc; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; +using Nop.Plugin.Misc.AuctionPlugin.Services; +using Nop.Web.Areas.Admin.Controllers; + +namespace Nop.Plugin.Misc.AuctionPlugin.Controllers; + +public class AuctionController(AuctionService _auctionService) : BaseAdminController +{ + // GET + public IActionResult Index() + { + //var a = new Auction(); + return View(); + } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/AnnouncementEntity.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/AnnouncementEntity.cs deleted file mode 100644 index 449e034..0000000 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/AnnouncementEntity.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Nop.Core; - -namespace Nop.Plugin.Misc.AuctionPlugin.Domains -{ - - public class AnnouncementEntity : BaseEntity - - { - - public string Name { get; set; } - - public string Body { get; set; } - - public bool IsActive { get; set; } - - public DateTime Created { get; set; } - - } - -} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/BidEntity.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/BidEntity.cs deleted file mode 100644 index a9bc613..0000000 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/BidEntity.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Nop.Core; - -namespace Nop.Plugin.Misc.AuctionPlugin.Domains -{ - - public class BidEntity : BaseEntity - { - public int CustomerId { get; set; } - - public int ProductId { get; set; } - - public bool IsWinner { get; set; } - public int Value { get; set; } - - public DateTime CreateDate { get; set; } - - } - -} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Announcement.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Announcement.cs new file mode 100644 index 0000000..361579d --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Announcement.cs @@ -0,0 +1,22 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Core; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities +{ + + public class Announcement : BaseEntity, IEntityInt, ITimeStampCreated + + { + + public string Name { get; set; } + + public string Body { get; set; } + + public bool IsActive { get; set; } + + public DateTime Created { get; set; } + + } + +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Auction.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Auction.cs new file mode 100644 index 0000000..70d66a9 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Auction.cs @@ -0,0 +1,20 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Core; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; + +public class Auction: BaseEntity, IEntityInt, ITimeStampInfo +{ + public string AuctionName { get; set; } + public AuctionType AuctionType{ get; set; } + + public DateTime StartDateUtc { get; set; } + public DateTime? EndDateUtc { get; set; } + + public bool Closed { get; set; } + + public DateTime Created { get; set; } + public DateTime Modified { get; set; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs new file mode 100644 index 0000000..359edfc --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs @@ -0,0 +1,22 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Core; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities +{ + public class AuctionBid : BaseEntity, IEntityInt, ITimeStampInfo + { + public int CustomerId { get; set; } + + public int ProductId { get; set; } + + public bool IsWinner { get; set; } + public int BidPrice { get; set; } + + public DateTime CreateDate { get; set; } + + public DateTime Created { get; set; } + public DateTime Modified { get; set; } + } + +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs new file mode 100644 index 0000000..7bb0e1d --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs @@ -0,0 +1,11 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Core; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; + +public class AuctionItem : BaseEntity, IEntityInt, ITimeStampInfo +{ + public DateTime Created { get; set; } + public DateTime Modified { get; set; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/ProductToAuctionMapping.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/ProductToAuctionMapping.cs new file mode 100644 index 0000000..a58d0c1 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/ProductToAuctionMapping.cs @@ -0,0 +1,21 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Core; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; + +public class ProductToAuctionMapping : BaseEntity, IEntityInt, ITimeStampInfo +{ + public int ProductId { get; set; } + public int AuctionId { get; set; } + + public AuctionStatus AuctionStatus { get; set; } = AuctionStatus.None; + + public int StartingPrice { get; set; } + public int BidPrice { get; set; } + + public int BidAmount { get; set; } = 1; + public DateTime Created { get; set; } + public DateTime Modified { get; set; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionStatus.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionStatus.cs new file mode 100644 index 0000000..5374a6c --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionStatus.cs @@ -0,0 +1,11 @@ +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; + +public enum AuctionStatus : byte +{ + None = 0, + Active = 5, + FirstWarning = 10, + SecondWarning = 15, + SoldOut = 20, + NotSold = 25 +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionType.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionType.cs new file mode 100644 index 0000000..90fb742 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Enums/AuctionType.cs @@ -0,0 +1,8 @@ +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; + +public enum AuctionType : byte +{ + //TODO: átbeszélni és kitalálni - J. + Manual = 0, + AutomaticNext = 5, +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/PluginNopStartup.cs b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/PluginNopStartup.cs index 6436251..8e8a36f 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/PluginNopStartup.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/PluginNopStartup.cs @@ -31,7 +31,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Infrastructure //register services and interfaces services.AddScoped(); - services.AddScoped(); + services.AddScoped(); services.AddScoped(); } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Migrations/SchemaMigration.cs b/Nop.Plugin.Misc.AuctionPlugin/Migrations/SchemaMigration.cs index eb1fe6f..22baded 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Migrations/SchemaMigration.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Migrations/SchemaMigration.cs @@ -2,6 +2,7 @@ using Nop.Data.Extensions; using Nop.Data.Migrations; using Nop.Plugin.Misc.AuctionPlugin.Domains; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Migrations { @@ -13,8 +14,12 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Migrations /// public override void Up() { - Create.TableFor(); - Create.TableFor(); + Create.TableFor(); + //Create.TableFor(); + Create.TableFor(); + Create.TableFor(); + + Create.TableFor(); } } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj b/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj index a017721..1f96710 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj +++ b/Nop.Plugin.Misc.AuctionPlugin/Nop.Plugin.Misc.AuctionPlugin.csproj @@ -68,7 +68,11 @@ + + + + @@ -95,6 +99,34 @@ Always + + + + + + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Core.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Core.Server.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Entities.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Entities.Server.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Interfaces.Server.dll + + + ..\..\..\..\..\..\Aycode\Source\AyCode.Core\AyCode.Services.Server\bin\Debug\net8.0\AyCode.Utils.dll + + diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs index 9ee887a..6b3fc4e 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs @@ -7,6 +7,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Services { @@ -14,13 +15,13 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services { #region Field - private readonly IRepository _announcementRepository; + private readonly IRepository _announcementRepository; #endregion #region Ctr - public AnnouncementService(IRepository announcementRepository) + public AnnouncementService(IRepository announcementRepository) { _announcementRepository = announcementRepository; @@ -31,7 +32,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services #region Methods - public async Task DeleteAsync(AnnouncementEntity announcement) + public async Task DeleteAsync(Announcement announcement) { await _announcementRepository.DeleteAsync(announcement); @@ -40,7 +41,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services - public async Task UpdateAsync(AnnouncementEntity announcement) + public async Task UpdateAsync(Announcement announcement) { @@ -57,7 +58,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services } - public async Task InsertAsync(AnnouncementEntity announcement) + public async Task InsertAsync(Announcement announcement) { @@ -66,7 +67,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services } - public async Task> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue) + public async Task> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue) { @@ -76,13 +77,13 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services var query2 = query.OrderBy(b => b.IsActive).ToList(); - var liveAnnouncementDomain = new PagedList(query2, pageIndex, pageSize); + var liveAnnouncementDomain = new PagedList(query2, pageIndex, pageSize); return liveAnnouncementDomain; } - public async Task GetAnnouncementDesignFirstAsync() + public async Task GetAnnouncementDesignFirstAsync() { var result = await _announcementRepository.GetAllAsync(query => @@ -105,7 +106,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services } - public async Task GetAnnouncementByIdAsync(int Id) + public async Task GetAnnouncementByIdAsync(int Id) { diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/BidService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs similarity index 75% rename from Nop.Plugin.Misc.AuctionPlugin/Services/BidService.cs rename to Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs index 2383de7..3209522 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/BidService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs @@ -2,13 +2,14 @@ using Nop.Core.Caching; using Nop.Data; using Nop.Plugin.Misc.AuctionPlugin.Domains; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Services; /// /// Store pickup point service /// -public class BidService : IBidService +public class AuctionService : IAuctionService { #region Constants @@ -25,7 +26,7 @@ public class BidService : IBidService #region Fields - protected readonly IRepository _customerBidRepository; + protected readonly IRepository _customerBidRepository; protected readonly IShortTermCacheManager _shortTermCacheManager; protected readonly IStaticCacheManager _staticCacheManager; @@ -39,7 +40,7 @@ public class BidService : IBidService /// Store pickup point repository /// Short term cache manager /// Cache manager - public BidService(IRepository customerBidRepository, + public AuctionService(IRepository customerBidRepository, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager) { @@ -62,9 +63,9 @@ public class BidService : IBidService /// A task that represents the asynchronous operation /// The task result contains the bids /// - public virtual async Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue) + public virtual async Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue) { - var rez = new List(); + var rez = new List(); //var rez = await _shortTermCacheManager.GetAsync(async () => await _customerBidRepository.GetAllAsync(query => //{ // if (customerId > 0) @@ -74,23 +75,23 @@ public class BidService : IBidService // return query; //}), _pickupPointAllKey, customerId); - return new PagedList(rez, pageIndex, pageSize); + return new PagedList(rez, pageIndex, pageSize); } - public virtual async Task GetBidByIdAsync(int bidId) + public virtual async Task GetBidByIdAsync(int bidId) { return await _customerBidRepository.GetByIdAsync(bidId); } - public virtual async Task InsertBidAsync(BidEntity bid) + public virtual async Task InsertBidAsync(AuctionBid auctionBid) { - await _customerBidRepository.InsertAsync(bid, false); + await _customerBidRepository.InsertAsync(auctionBid, false); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); } - public virtual async Task UpdateBidAsync(BidEntity bid) + public virtual async Task UpdateBidAsync(AuctionBid auctionBid) { - await _customerBidRepository.UpdateAsync(bid, false); + await _customerBidRepository.UpdateAsync(auctionBid, false); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); } @@ -99,7 +100,7 @@ public class BidService : IBidService /// /// Pickup point /// A task that represents the asynchronous operation - public virtual async Task DeleteBidAsync(BidEntity pickupPoint) + public virtual async Task DeleteBidAsync(AuctionBid pickupPoint) { await _customerBidRepository.DeleteAsync(pickupPoint, false); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs index ed24e08..fa3d2fb 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs @@ -5,6 +5,7 @@ using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin.Domains; using System.Collections.Generic; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Services @@ -13,17 +14,17 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services { - public Task DeleteAsync(AnnouncementEntity announcement); + public Task DeleteAsync(Announcement announcement); - public Task InsertAsync(AnnouncementEntity announcement); + public Task InsertAsync(Announcement announcement); - public Task UpdateAsync(AnnouncementEntity announcement); + public Task UpdateAsync(Announcement announcement); - public Task> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue); + public Task> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue); - public Task GetAnnouncementDesignFirstAsync(); + public Task GetAnnouncementDesignFirstAsync(); - public Task GetAnnouncementByIdAsync(int Id); + public Task GetAnnouncementByIdAsync(int Id); } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/IBidService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs similarity index 59% rename from Nop.Plugin.Misc.AuctionPlugin/Services/IBidService.cs rename to Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs index c016f53..e0a2393 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/IBidService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs @@ -1,12 +1,13 @@ using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin.Domains; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Services; /// /// Store pickup point service interface /// -public interface IBidService +public interface IAuctionService { /// /// Gets all bids @@ -18,17 +19,17 @@ public interface IBidService /// A task that represents the asynchronous operation /// The task result contains the bids /// - Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue); + Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue); - Task GetBidByIdAsync(int bidId); + Task GetBidByIdAsync(int bidId); - Task InsertBidAsync(BidEntity bidEntity); + Task InsertBidAsync(AuctionBid auctionBid); - Task UpdateBidAsync(BidEntity bid); + Task UpdateBidAsync(AuctionBid auctionBid); - Task DeleteBidAsync(BidEntity pickupPoint); + Task DeleteBidAsync(AuctionBid pickupPoint); } \ No newline at end of file