From 12d207e2083e9e14b12f13f867b6226bb0ded596 Mon Sep 17 00:00:00 2001 From: Loretta Date: Tue, 26 Nov 2024 16:45:52 +0100 Subject: [PATCH] BidsCount; improvements, fixes, etc.. --- .../Domains/DataLayer/AuctionBidDbTable.cs | 3 +++ .../Domains/DataLayer/AuctionDbContext.cs | 4 ++++ .../Hubs/Messages/AuctionNotificationBase.cs | 7 ++++++- .../Hubs/Messages/AuctionStatusNotification.cs | 8 ++++++-- .../Hubs/Messages/BidNotificationMessage.cs | 12 ++++++++---- .../Messages/ProductToAuctionStatusNotification.cs | 8 ++++++-- .../Hubs/SignalRMessageHandler.cs | 10 ++++------ .../Services/AuctionService.cs | 3 +++ .../Services/IAuctionService.cs | 3 ++- 9 files changed, 42 insertions(+), 16 deletions(-) diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionBidDbTable.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionBidDbTable.cs index 0b869af..cc436d7 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionBidDbTable.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionBidDbTable.cs @@ -18,6 +18,9 @@ public class AuctionBidDbTable : MgDbTableBase public IQueryable GetLastAuctionBidByProductToAuctionId(int productToAuctionId) => GetByProductToAuctionId(productToAuctionId).OrderByDescending(x => x.Id); + public Task GetBidsCountByProductToAuctionIdAsync(int productToAuctionId) + => Table.CountAsync(x => x.ProductAuctionMappingId == productToAuctionId); + public IQueryable GetByProductToAuctionId(int productToAuctionId) => Table.Where(x => x.ProductAuctionMappingId == productToAuctionId); diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs index 540e1e3..b3b3c85 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/AuctionDbContext.cs @@ -60,6 +60,10 @@ public class AuctionDbContext : MgDbContextBase, IAuctionDbSet, public Task GetLastAuctionBidByProductToAuctionId(int productToAuctionId) => AuctionBids.GetLastAuctionBidByProductToAuctionId(productToAuctionId).FirstOrDefaultAsync(); + public Task GetBidsCountByProductToAuctionIdAsync(int productToAuctionId) + => AuctionBids.GetBidsCountByProductToAuctionIdAsync(productToAuctionId); + + public Task RevertAuctionBidByProductToAuctionId(int productToAuctionId) => AuctionBids.RevertByProductToAuctionIdAsync(productToAuctionId); diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs index 760c980..a9b1d09 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs @@ -5,12 +5,17 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; public abstract class AuctionNotificationBase { public AuctionDto AuctionDto { get; set; } + public string ToasterMessage { get; set; } + public int BidsCount { get; set; } protected AuctionNotificationBase(){} - protected AuctionNotificationBase(AuctionDto auctionDto) + protected AuctionNotificationBase(AuctionDto auctionDto, int bidsCount, string toasterMessage) { AuctionDto = auctionDto; + + BidsCount = bidsCount; + ToasterMessage = toasterMessage; } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionStatusNotification.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionStatusNotification.cs index a8698ea..69ccfd4 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionStatusNotification.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionStatusNotification.cs @@ -4,7 +4,11 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; public class AuctionStatusNotification : AuctionNotificationBase { - public AuctionStatusNotification() { } - public AuctionStatusNotification(AuctionDto auctionDto):base(auctionDto) { } + public AuctionStatusNotification() + { + } + public AuctionStatusNotification(AuctionDto auctionDto, int bidsCount, string toasterMessage) : base(auctionDto, bidsCount, toasterMessage) + { + } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/BidNotificationMessage.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/BidNotificationMessage.cs index 910b641..9791c11 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/BidNotificationMessage.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/BidNotificationMessage.cs @@ -18,9 +18,13 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages public decimal CurrentPrice { get; set; } public decimal NextBidPrice { get; set; } public decimal NextStepAmount { get; set; } - - public BidNotificationMessage() { } - public BidNotificationMessage(AuctionDto auctionDto):base(auctionDto) { } - } + public BidNotificationMessage() + { + } + + public BidNotificationMessage(AuctionDto auctionDto, int bidsCount, string toasterMessage) : base(auctionDto, bidsCount, toasterMessage) + { + } + } } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs index d42f9cd..e8b1805 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs @@ -4,7 +4,11 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; public class ProductToAuctionStatusNotification : AuctionNotificationBase { - public ProductToAuctionStatusNotification() { } - public ProductToAuctionStatusNotification(AuctionDto auctionDto):base(auctionDto) { } + public ProductToAuctionStatusNotification() + { + } + public ProductToAuctionStatusNotification(AuctionDto auctionDto, int bidsCount, string toasterMessage) : base(auctionDto, bidsCount, toasterMessage) + { + } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs index ccfbab8..1835714 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs @@ -199,14 +199,12 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs await auctionService.UpdateProductToAuctionMappingAsync(productToAuction); } + var bidsCount = await auctionService.GetBidsCountByProductToAuctionIdAsync(productToAuction.Id); var productToauctionChangedNotification = new MessageWrapper { MessageType = nameof(ProductToAuctionStatusNotification), SenderId = customer.Id, - Data = new ProductToAuctionStatusNotification(await auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuction.Id, true)) - { - ToasterMessage = "EMPTY", //TODO: - J. - }.ToJson() + Data = new ProductToAuctionStatusNotification(await auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuction.Id, true), bidsCount, "EMPTY").ToJson() }; await hubContext.Clients.All.SendAsync("send", productToauctionChangedNotification.ToJson()); @@ -286,17 +284,17 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs var stepAmount = GetStepAmount(productToAuction.CurrentPrice); var nextBidPrice = GetNextBidPrice(productToAuction.CurrentPrice, stepAmount); + var bidsCount = await auctionService.GetBidsCountByProductToAuctionIdAsync(productToAuction.Id); var bidMessage = new MessageWrapper { MessageType = "bidNotification", SenderId = customerId, - Data = new BidNotificationMessage(await auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuction.Id, true)) //TODO: NE KÉRJÜK LE DB-BŐL!!! - j. + Data = new BidNotificationMessage(await auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuction.Id, true), bidsCount, "EMPTY") //TODO: NE KÉRJÜK LE DB-BŐL!!! - j. { ProductName = product.Name, CurrentPrice = productToAuction.CurrentPrice, NextStepAmount = stepAmount, NextBidPrice = nextBidPrice, - ToasterMessage = "EMPTY", //TODO: - J. }.ToJson() }; diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs index 60b971e..17cdcc5 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs @@ -114,6 +114,9 @@ public class AuctionService : IAuctionService public Task GetLastAuctionBidByProductToAuctionIdAsync(int productToAuctionId) => _ctx.GetLastAuctionBidByProductToAuctionId(productToAuctionId); + public Task GetBidsCountByProductToAuctionIdAsync(int productToAuctionId) + => _ctx.GetBidsCountByProductToAuctionIdAsync(productToAuctionId); + public Task RevertAuctionBidByProductToAuctionIdAsync(int productToAuctionId) => _ctx.RevertAuctionBidByProductToAuctionId(productToAuctionId); diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs index bba0e5f..7667034 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/IAuctionService.cs @@ -26,7 +26,8 @@ public interface IAuctionService /// The task result contains the bids /// Task> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue); - + + Task GetBidsCountByProductToAuctionIdAsync(int productToAuctionId); Task GetBidByIdAsync(int bidId); Task InsertBidAsync(AuctionBid auctionBid);