From 2a76051a4e2f71d849fb8177b27275823cbe2839 Mon Sep 17 00:00:00 2001 From: Loretta Date: Sat, 16 Nov 2024 19:10:20 +0100 Subject: [PATCH] Implement AuctionDtos; improvements, fixes, etc... --- .../Domains/DataLayer/AuctionDbContext.cs | 7 ++- .../{ => Interfaces}/IAuctionBidDbSet.cs | 2 +- .../{ => Interfaces}/IAuctionDbSet.cs | 2 +- .../Domains/Dtos/AuctionBidDto.cs | 6 ++ .../Domains/Dtos/AuctionDto.cs | 6 ++ .../Domains/Dtos/Interfaces/IAuctionBidDto.cs | 10 ++++ .../Dtos/Interfaces/IAuctionBidDtoBase.cs | 15 +++++ .../Domains/Dtos/Interfaces/IAuctionDto.cs | 13 ++++ .../Dtos/Interfaces/IAuctionDtoBase.cs | 17 ++++++ .../Domains/Dtos/ProductToAuctionDto.cs | 6 ++ .../Domains/Entities/Auction.cs | 9 +-- .../Domains/Entities/AuctionBid.cs | 8 +-- .../Domains/Entities/AuctionItem.cs | 2 + .../Domains/Entities/Interfaces/IAuction.cs | 10 ++++ .../Entities/Interfaces/IAuctionBid.cs | 9 +++ .../Entities/ProductToAuctionMapping.cs | 3 + .../Services/AnnouncementService.cs | 60 +++++-------------- .../Services/EventConsumer.cs | 11 +--- .../Services/IAnnouncementService.cs | 6 +- 19 files changed, 125 insertions(+), 77 deletions(-) rename Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/{ => Interfaces}/IAuctionBidDbSet.cs (78%) rename Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/{ => Interfaces}/IAuctionDbSet.cs (78%) create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionBidDto.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDto.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDtoBase.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDto.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDtoBase.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/ProductToAuctionDto.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuction.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs index 2e50666..c74d25a 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs @@ -1,6 +1,7 @@ using Mango.Nop.Core.Repositories; using Nop.Core; using Nop.Data; +using Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer.Interfaces; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using System; @@ -11,8 +12,8 @@ public class AuctionDbContext : MgDbContextBase, IAuctionDbSet, public AuctionDbTable Auctions { get; set; } public AuctionBidDbTable AuctionBids { get; set; } - public EntityRepository Auctions2 { get; set; } - public IRepository AuctionBids2 { get; set; } + //public EntityRepository Auctions2 { get; set; } + //public IRepository AuctionBids2 { get; set; } public AuctionDbContext(INopDataProvider dataProvider, AuctionDbTable auctionDbTable, AuctionBidDbTable auctionBidDbTable) : base(dataProvider) @@ -21,7 +22,7 @@ public class AuctionDbContext : MgDbContextBase, IAuctionDbSet, AuctionBids = auctionBidDbTable; //Auctions.Table - var auctions = DataProvider.GetTable().Where(x => x.Closed); + //var auctions = DataProvider.GetTable().Where(x => x.Closed); } //public AuctionDbContext(IRepository _auctionRepository, IRepository _auctionBidRepository) diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionBidDbSet.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionBidDbSet.cs similarity index 78% rename from Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionBidDbSet.cs rename to Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionBidDbSet.cs index c7b0532..168ba08 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionBidDbSet.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionBidDbSet.cs @@ -2,7 +2,7 @@ using Nop.Data; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; -namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer; +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer.Interfaces; public interface IAuctionBidDbSet : IMgDbTableBase where TDbTable : IRepository { diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionDbSet.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionDbSet.cs similarity index 78% rename from Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionDbSet.cs rename to Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionDbSet.cs index 3ab2380..3753c4c 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/IAuctionDbSet.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/Interfaces/IAuctionDbSet.cs @@ -2,7 +2,7 @@ using Nop.Data; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; -namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer; +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer.Interfaces; public interface IAuctionDbSet : IMgDbTableBase where TDbTable : IRepository { diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionBidDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionBidDto.cs new file mode 100644 index 0000000..c9df656 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionBidDto.cs @@ -0,0 +1,6 @@ +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; + +public class AuctionBidDto +{ + +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs new file mode 100644 index 0000000..8fab18d --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs @@ -0,0 +1,6 @@ +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; + +public class AuctionDto +{ + +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDto.cs new file mode 100644 index 0000000..01a2371 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDto.cs @@ -0,0 +1,10 @@ +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +public interface IAuctionBidDto : IAuctionBidDtoBase +{ + //[NotMapped] + //[NotColumn] + public List AuctionBids { get; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDtoBase.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDtoBase.cs new file mode 100644 index 0000000..e978195 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionBidDtoBase.cs @@ -0,0 +1,15 @@ +using Mango.Nop.Core.Interfaces; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +public interface IAuctionBidDtoBase : IMgModelDtoBase +{ + public int ProductAuctionMappingId { get; set; } + + public int CustomerId { get; set; } + + public int ProductId { get; set; } + + public bool IsWinner { get; set; } + public int BidPrice { get; set; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDto.cs new file mode 100644 index 0000000..3e38d8a --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDto.cs @@ -0,0 +1,13 @@ +using AyCode.Interfaces; +using AyCode.Interfaces.Server.Logins; +using AyCode.Interfaces.Users.Dtos; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +public interface IAuctionDto : IAuctionDtoBase +{ + //[NotMapped] + //[NotColumn] + public List ProductToAuctionMappings { get; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDtoBase.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDtoBase.cs new file mode 100644 index 0000000..07bf5be --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/Interfaces/IAuctionDtoBase.cs @@ -0,0 +1,17 @@ +using AyCode.Interfaces; +using Mango.Nop.Core.Interfaces; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +public interface IAuctionDtoBase : IMgModelDtoBase +{ + 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; } +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/ProductToAuctionDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/ProductToAuctionDto.cs new file mode 100644 index 0000000..2ba9255 --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/ProductToAuctionDto.cs @@ -0,0 +1,6 @@ +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; + +public class ProductToAuctionDto +{ + +} \ 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 index f36ebed..67c4e70 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Auction.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Auction.cs @@ -1,15 +1,14 @@ using System.ComponentModel.DataAnnotations.Schema; -using AyCode.Interfaces.Entities; -using AyCode.Interfaces.TimeStampInfo; using LinqToDB.Mapping; using Mango.Nop.Core.Entities; using Mango.Nop.Core.Interfaces; using Nop.Core; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; -public partial class Auction: MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt +public partial class Auction: MgEntityBase, IAuction { public string AuctionName { get; set; } @@ -20,10 +19,6 @@ public partial class Auction: MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityI public bool Closed { get; set; } - [NotMapped] - [NotColumn] - public List ProductToAuctionMappings { get; } = []; - [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs index ff49ec3..1028668 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs @@ -1,11 +1,12 @@ using AyCode.Interfaces.Entities; -using AyCode.Interfaces.TimeStampInfo; +using LinqToDB.Mapping; using Mango.Nop.Core.Entities; using Nop.Core; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities { - public partial class AuctionBid : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt + public partial class AuctionBid : MgEntityBase, IAuctionBid { public int ProductAuctionMappingId { get; set; } @@ -16,8 +17,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities public bool IsWinner { get; set; } public int BidPrice { get; set; } - public DateTime CreateDate { get; set; } - + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs index 24f233c..2f07705 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionItem.cs @@ -1,5 +1,6 @@ using AyCode.Interfaces.Entities; using AyCode.Interfaces.TimeStampInfo; +using LinqToDB.Mapping; using Mango.Nop.Core.Entities; using Nop.Core; @@ -7,6 +8,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; public partial class AuctionItem : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt { + [SkipValuesOnUpdate] 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/Interfaces/IAuction.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuction.cs new file mode 100644 index 0000000..449f98b --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuction.cs @@ -0,0 +1,10 @@ +using AyCode.Interfaces.Entities; +using AyCode.Interfaces.TimeStampInfo; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; + +public interface IAuction : IAuctionDtoBase, ITimeStampInfo //, ISoftRemoveEntityInt +{ + +} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs new file mode 100644 index 0000000..cfc544e --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs @@ -0,0 +1,9 @@ +using AyCode.Interfaces.TimeStampInfo; +using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces; + +namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; + +public interface IAuctionBid : IAuctionBidDtoBase, ITimeStampInfo//, ISoftRemoveEntityInt +{ + +} \ 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 index 1d4303c..e69fe3f 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/ProductToAuctionMapping.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/ProductToAuctionMapping.cs @@ -1,5 +1,6 @@ using AyCode.Interfaces.Entities; using AyCode.Interfaces.TimeStampInfo; +using LinqToDB.Mapping; using Mango.Nop.Core.Entities; using Nop.Core; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; @@ -17,6 +18,8 @@ public partial class ProductToAuctionMapping : MgEntityBase, ITimeStampInfo//, I public int BidPrice { get; set; } public int BidAmount { get; set; } = 1; + + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs index 6b3fc4e..7775fb6 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/AnnouncementService.cs @@ -23,9 +23,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services public AnnouncementService(IRepository announcementRepository) { - _announcementRepository = announcementRepository; - } #endregion @@ -34,86 +32,56 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services public async Task DeleteAsync(Announcement announcement) { - await _announcementRepository.DeleteAsync(announcement); - } public async Task UpdateAsync(Announcement announcement) - { - - if (announcement == null) - - throw new ArgumentNullException("customer"); - - - + if (announcement == null) throw new ArgumentNullException("customer"); + await _announcementRepository.UpdateAsync(announcement); - return true; - } public async Task InsertAsync(Announcement announcement) - { - await _announcementRepository.InsertAsync(announcement); - } public async Task> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue) - { + var announcements = _announcementRepository.Table.OrderBy(announcement => announcement.IsActive).ToList(); - var query = from c in _announcementRepository.Table - - select c; - - var query2 = query.OrderBy(b => b.IsActive).ToList(); - - var liveAnnouncementDomain = new PagedList(query2, pageIndex, pageSize); - - return liveAnnouncementDomain; - + return new PagedList(announcements, pageIndex, pageSize); } public async Task GetAnnouncementDesignFirstAsync() - { - var result = await _announcementRepository.GetAllAsync(query => - { - query = query.Where(record => record.IsActive == true); - return query; - }); + return await _announcementRepository.Table.FirstOrDefaultAsync(announcement => announcement.IsActive == true); - //var query = from c in _announcementRepository.Table + //var result = await _announcementRepository.GetAllAsync(announcements => announcements.Where(record => record.IsActive == true)); - // where c.IsActive == true + ////var query = from c in _announcementRepository.Table - // orderby c.CreateDate descending + //// where c.IsActive == true - // select c; + //// orderby c.CreateDate descending - var LatestAnnouncement = result.ToList().FirstOrDefault(); + //// select c; - return LatestAnnouncement; + //var LatestAnnouncement = result.ToList().FirstOrDefault(); + //return LatestAnnouncement; } - public async Task GetAnnouncementByIdAsync(int Id) - + public async Task GetAnnouncementByIdAsync(int id) { - - return await _announcementRepository.GetByIdAsync(Id); - + return await _announcementRepository.GetByIdAsync(id); } - #endregion } } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/EventConsumer.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/EventConsumer.cs index 5a22bdc..7f73ca4 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/EventConsumer.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/EventConsumer.cs @@ -1,18 +1,9 @@ using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Routing; using Nop.Core.Domain.Catalog; -using Nop.Core.Domain.Customers; -using Nop.Core.Domain.Messages; -using Nop.Core.Domain.Orders; using Nop.Core.Events; using Nop.Services.Events; -using Nop.Services.Messages; -using Nop.Web.Framework; -using Nop.Web.Framework.Events; -using Nop.Web.Framework.Models; -using Nop.Web.Models.Catalog; -namespace Nop.Plugin.Misc.AuctionPlugin; +namespace Nop.Plugin.Misc.AuctionPlugin.Services; /// /// Represents plugin event consumer diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs index fa3d2fb..352f624 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/IAnnouncementService.cs @@ -11,9 +11,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services { public interface IAnnouncementService - { - public Task DeleteAsync(Announcement announcement); public Task InsertAsync(Announcement announcement); @@ -24,8 +22,6 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services public Task GetAnnouncementDesignFirstAsync(); - public Task GetAnnouncementByIdAsync(int Id); - + public Task GetAnnouncementByIdAsync(int id); } - }