From acc949649096a2ac38396cf0a7caada453052d41 Mon Sep 17 00:00:00 2001 From: Loretta Date: Thu, 21 Nov 2024 12:17:04 +0100 Subject: [PATCH] ProductToAuctionStatusNotification; improvements, fixes, etc.. --- .../DataLayer/ProductToAuctionDbTable.cs | 10 ++++-- .../Hubs/Messages/AuctionNotificationBase.cs | 1 + .../AuctionProductStatusNotification.cs | 10 ------ .../ProductToAuctionStatusNotification.cs | 10 ++++++ .../Hubs/SignalRMessageHandler.cs | 33 +++++++++++++------ .../Services/AuctionService.cs | 4 +-- 6 files changed, 43 insertions(+), 25 deletions(-) delete mode 100644 Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionProductStatusNotification.cs create mode 100644 Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/ProductToAuctionDbTable.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/ProductToAuctionDbTable.cs index b4c2724..aa51e5e 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/ProductToAuctionDbTable.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/DataLayer/ProductToAuctionDbTable.cs @@ -5,6 +5,7 @@ using Nop.Core.Events; using Nop.Data; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; +using Nop.Plugin.Misc.AuctionPlugin.Hubs; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer; @@ -16,7 +17,8 @@ public class ProductToAuctionDbTable : MgDbTableBase private static bool HasActiveAuctionStatus(AuctionStatus auctionStatus) { - return auctionStatus == AuctionStatus.Active; + //TODO: erre a problémára kitalálni valamit! - J. + return auctionStatus == AuctionStatus.Active || auctionStatus == AuctionStatus.FirstWarning || auctionStatus == AuctionStatus.SecondWarning; //return auctionStatus.HasFlag(AuctionStatus.Active) || auctionStatus.HasFlag(AuctionStatus.FirstWarning) || auctionStatus.HasFlag(AuctionStatus.SecondWarning); } @@ -27,11 +29,13 @@ public class ProductToAuctionDbTable : MgDbTableBase public IQueryable GetByProductId(int productId, bool activeProductOnly = false) { - return Table.Where(x => x.ProductId == productId && (!activeProductOnly || x.AuctionStatus == AuctionStatus.Active/*HasActiveAuctionStatus(x.AuctionStatus)*/)); + return Table.Where(x => x.ProductId == productId && + (!activeProductOnly || x.AuctionStatus == AuctionStatus.Active || x.AuctionStatus == AuctionStatus.FirstWarning || x.AuctionStatus == AuctionStatus.SecondWarning/*HasActiveAuctionStatus(x.AuctionStatus)*/)); } public IQueryable GetProductToAuctionsByAuctionId(int auctionId, bool activeProductOnly = false) { - return Table.Where(x => x.AuctionId == auctionId && (!activeProductOnly || x.AuctionStatus == AuctionStatus.Active/*HasActiveAuctionStatus(x.AuctionStatus)*/)); + return Table.Where(x => x.AuctionId == auctionId && + (!activeProductOnly || x.AuctionStatus == AuctionStatus.Active || x.AuctionStatus == AuctionStatus.FirstWarning || x.AuctionStatus == AuctionStatus.SecondWarning/*HasActiveAuctionStatus(x.AuctionStatus)*/)); } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs index 7251dd1..760c980 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionNotificationBase.cs @@ -5,6 +5,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; public abstract class AuctionNotificationBase { public AuctionDto AuctionDto { get; set; } + public string ToasterMessage { get; set; } protected AuctionNotificationBase(){} diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionProductStatusNotification.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionProductStatusNotification.cs deleted file mode 100644 index 8090a68..0000000 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/AuctionProductStatusNotification.cs +++ /dev/null @@ -1,10 +0,0 @@ -using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; - -namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; - -public class AuctionProductStatusNotification : AuctionNotificationBase -{ - public AuctionProductStatusNotification() { } - public AuctionProductStatusNotification(AuctionDto auctionDto):base(auctionDto) { } - -} \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs new file mode 100644 index 0000000..d42f9cd --- /dev/null +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/Messages/ProductToAuctionStatusNotification.cs @@ -0,0 +1,10 @@ +using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos; + +namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages; + +public class ProductToAuctionStatusNotification : AuctionNotificationBase +{ + public ProductToAuctionStatusNotification() { } + public ProductToAuctionStatusNotification(AuctionDto auctionDto):base(auctionDto) { } + +} \ 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 e21ace4..ac6c58b 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Hubs/SignalRMessageHandler.cs @@ -42,11 +42,11 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs } //TODO: A MessageWrapper-ben kéne küldözgetni a UserId (CustomerId-t) - J. - //if (message.UserId != (await _workContext.GetCurrentCustomerAsync()).Id) - //{ - // _logger.Error($"SignalRMessageHandler.HandleMessage(); message.UserId != (await _workContext.GetCurrentCustomerAsync()).Id"); - // return; - //} + if (message.SenderId <= 0 || message.SenderId != (await _workContext.GetCurrentCustomerAsync()).Id) + { + _logger.Error($"SignalRMessageHandler.HandleMessage(); message.SenderId <= 0 || message.SenderId != (await _workContext.GetCurrentCustomerAsync()).Id"); + return; + } //TODO: lock-olni! - J. switch (message.MessageType) @@ -98,10 +98,10 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs switch (auctionProductStatusRequest.AuctionStatus) { case AuctionStatus.FirstWarning: - productToAuction.AuctionStatus = AuctionStatus.Active | AuctionStatus.FirstWarning; + productToAuction.AuctionStatus = AuctionStatus.FirstWarning; //AuctionStatus.Active | AuctionStatus.FirstWarning; break; case AuctionStatus.SecondWarning: - productToAuction.AuctionStatus = AuctionStatus.Active | AuctionStatus.SecondWarning; + productToAuction.AuctionStatus = AuctionStatus.SecondWarning; //AuctionStatus.Active | AuctionStatus.SecondWarning; break; case AuctionStatus.None: case AuctionStatus.Active: @@ -113,10 +113,22 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs } await _auctionService.UpdateProductToAuctionMappingAsync(productToAuction); + + var bid = new MessageWrapper + { + MessageType = nameof(ProductToAuctionStatusNotification), + SenderId = senderId, + Data = new ProductToAuctionStatusNotification(await _auctionService.GetAuctionDtoByProductToAuctionIdAsync(productToAuction.Id, true)) + { + ToasterMessage = string.Empty, //TODO: - J. + }.ToJson() + }; + + await _hubContext.Clients.All.SendAsync("send", bid.ToJson()); } catch (Exception ex) { - _logger.Error($"Error {ex.Message}"); + _logger.Error($"SignalRMessageHandler.HandleProductToAuctionStatusChangedRequest(); Error {ex.Message}"); } } @@ -188,11 +200,12 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs { MessageType = "bidNotification", SenderId = senderId, - Data = new BidNotificationMessage(await _auctionService.GetAuctionDtoWithProductByIdAsync(auction.Id, activeProductAuction.ProductId, true)) + Data = new BidNotificationMessage(await _auctionService.GetAuctionDtoByProductToAuctionIdAsync(activeProductAuction.Id, true)) { ProductName = auctionBid.ProductId.ToString(), BidPrice = auctionBid.BidPrice.ToString(CultureInfo.InvariantCulture), - NextStepAmount = "50000" + NextStepAmount = "50000", + ToasterMessage = string.Empty, //TODO: - J. }.ToJson() }; diff --git a/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs index 4995de8..cfe47c8 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Services/AuctionService.cs @@ -231,8 +231,8 @@ public class AuctionService : IAuctionService ProductId = productId, StartingPrice = startingPrice, BidPrice = bidPrice, - ProductAmount = 0, - AuctionStatus = AuctionStatus.Active, //TODO: Ez miért Active alapból? - J. + ProductAmount = 1, + AuctionStatus = AuctionStatus.None, AuctionId = auctionId };