AuctionProductStatusRequest; improvements, fixes, etc...
This commit is contained in:
parent
3cc1269bd8
commit
d343a997bd
|
|
@ -4,22 +4,33 @@ using Nop.Core.Configuration;
|
|||
using Nop.Core.Events;
|
||||
using Nop.Data;
|
||||
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
|
||||
using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
|
||||
|
||||
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
|
||||
|
||||
public class ProductToAuctionDbTable: MgDbTableBase<ProductToAuctionMapping>
|
||||
public class ProductToAuctionDbTable : MgDbTableBase<ProductToAuctionMapping>
|
||||
{
|
||||
public ProductToAuctionDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings) : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
|
||||
{
|
||||
}
|
||||
|
||||
public IQueryable<ProductToAuctionMapping> GetByAuctionAndProductId(int auctionId, int productId)
|
||||
private bool HasActiveAuctionStatus(AuctionStatus auctionStatus)
|
||||
{
|
||||
return Table.Where(x => x.AuctionId == auctionId && x.ProductId == productId);
|
||||
return auctionStatus.HasFlag(AuctionStatus.Active) || auctionStatus.HasFlag(AuctionStatus.FirstWarning) || auctionStatus.HasFlag(AuctionStatus.SecondWarning);
|
||||
}
|
||||
|
||||
public IQueryable<ProductToAuctionMapping> GetByProductId(int productId)
|
||||
public IQueryable<ProductToAuctionMapping> GetByAuctionAndProductId(int auctionId, int productId, bool activeProductOnly = false)
|
||||
{
|
||||
return Table.Where(x => x.ProductId == productId);
|
||||
return GetProductToAuctionsByAuctionId(auctionId, activeProductOnly).Where(x => x.ProductId == productId);
|
||||
}
|
||||
|
||||
public IQueryable<ProductToAuctionMapping> GetByProductId(int productId, bool activeProductOnly = false)
|
||||
{
|
||||
return Table.Where(x => x.ProductId == productId && (!activeProductOnly || HasActiveAuctionStatus(x.AuctionStatus)));
|
||||
}
|
||||
|
||||
public IQueryable<ProductToAuctionMapping> GetProductToAuctionsByAuctionId(int auctionId, bool activeProductOnly = false)
|
||||
{
|
||||
return Table.Where(x => x.AuctionId == auctionId && (!activeProductOnly || HasActiveAuctionStatus(x.AuctionStatus)));
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos;
|
||||
using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
|
||||
|
||||
namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages
|
||||
{
|
||||
public class AuctionProductStatusRequest// : AuctionBidDto
|
||||
{
|
||||
public int ProductToAuctionId { get; set; }
|
||||
public AuctionStatus AuctionStatus { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos;
|
||||
|
||||
namespace Nop.Plugin.Misc.AuctionPlugin.Models
|
||||
{
|
||||
public class OpenItemRequest : AuctionBidDto
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -56,7 +56,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs
|
|||
break;
|
||||
|
||||
case "OpenItemRequestMessage":
|
||||
await HandleOpenItemMessageRequest(message.SenderId, message.Data.JsonTo<OpenItemRequest>());
|
||||
await HandleProductToAuctionStatusChangedRequest(message.SenderId, message.Data.JsonTo<AuctionProductStatusRequest>());
|
||||
break;
|
||||
|
||||
// Add other message types here
|
||||
|
|
@ -66,28 +66,53 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Hubs
|
|||
}
|
||||
}
|
||||
|
||||
private async Task HandleOpenItemMessageRequest(int SenderId, OpenItemRequest openItemMessage)
|
||||
private async Task HandleProductToAuctionStatusChangedRequest(int senderId, AuctionProductStatusRequest auctionProductStatusRequest)
|
||||
{
|
||||
if (openItemMessage == null)
|
||||
if (auctionProductStatusRequest == null)
|
||||
{
|
||||
_logger.Error($"SignalRMessageHandler.HandleOpenItemMessageRequest(); openItemRequestMessage == null");
|
||||
_logger.Error($"SignalRMessageHandler.HandleProductToAuctionStatusChangedRequest(); auctionProductStatusRequest == null");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
await _logger.InformationAsync($"SignalRMessageHandler.HandleOpenItemMessageRequest(); Item to open: - ProductToAuctionMappingId: {openItemMessage.ProductAuctionMappingId}");
|
||||
|
||||
//get auction
|
||||
var auction = await _auctionService.GetAuctionDtoByProductToAuctionIdAsync(openItemMessage.ProductAuctionMappingId);
|
||||
//get productToAuction
|
||||
var productToAuction = await _auctionService.GetProductToAuctionDtoByIdAsync(openItemMessage.ProductAuctionMappingId);
|
||||
|
||||
auction.Closed = false;
|
||||
await _logger.InformationAsync($"SignalRMessageHandler.HandleProductToAuctionStatusChangedRequest(); ProductToAuctionMappingId: {auctionProductStatusRequest.ProductToAuctionId}; Status: {auctionProductStatusRequest.AuctionStatus}({(int)auctionProductStatusRequest.AuctionStatus})");
|
||||
|
||||
await _logger.InformationAsync($"SignalRMessageHandler.HandleOpenItemMessageRequest(); Auction {auction.Id}, ProducToAuction {productToAuction.Id}");
|
||||
//_auctionService.UpdateAuctionAsync(auction);
|
||||
//TODO: if IsAdmin.. - J.
|
||||
//TODO: if nincs aktív item.. - J.
|
||||
|
||||
var auction = await _auctionService.GetAuctionDtoByProductToAuctionIdAsync(auctionProductStatusRequest.ProductToAuctionId);
|
||||
if (auction == null || auction.Closed)
|
||||
{
|
||||
_logger.Error($"SignalRMessageHandler.HandleProductToAuctionStatusChangedRequest(); auction == null || auction.Closed");
|
||||
return;
|
||||
}
|
||||
|
||||
var productToAuction = await _auctionService.GetProductToAuctionMappingByIdAsync(auctionProductStatusRequest.ProductToAuctionId);
|
||||
if (productToAuction == null)
|
||||
{
|
||||
_logger.Error($"SignalRMessageHandler.HandleProductToAuctionStatusChangedRequest(); productToAuction == null");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (auctionProductStatusRequest.AuctionStatus)
|
||||
{
|
||||
case AuctionStatus.FirstWarning:
|
||||
productToAuction.AuctionStatus = AuctionStatus.Active | AuctionStatus.FirstWarning;
|
||||
break;
|
||||
case AuctionStatus.SecondWarning:
|
||||
productToAuction.AuctionStatus = AuctionStatus.Active | AuctionStatus.SecondWarning;
|
||||
break;
|
||||
case AuctionStatus.None:
|
||||
case AuctionStatus.Active:
|
||||
case AuctionStatus.SoldOut:
|
||||
case AuctionStatus.NotSold:
|
||||
default:
|
||||
auctionProductStatusRequest.AuctionStatus = auctionProductStatusRequest.AuctionStatus;
|
||||
break;
|
||||
}
|
||||
|
||||
await _auctionService.UpdateProductToAuctionMappingAsync(productToAuction);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ public class AuctionService : IAuctionService
|
|||
/// A task that represents the asynchronous operation
|
||||
/// The task result contains the bids
|
||||
/// </returns>
|
||||
public virtual async Task<IPagedList<AuctionBid>> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue)
|
||||
public async Task<IPagedList<AuctionBid>> GetAllBidsAsync(int customerId = 0, int pageIndex = 0, int pageSize = int.MaxValue)
|
||||
{
|
||||
var rez = new List<AuctionBid>();
|
||||
//var rez = await _shortTermCacheManager.GetAsync(async () => await _customerBidRepository.GetAllAsync(query =>
|
||||
|
|
@ -106,12 +106,12 @@ public class AuctionService : IAuctionService
|
|||
return new PagedList<AuctionBid>(rez, pageIndex, pageSize);
|
||||
}
|
||||
|
||||
public virtual async Task<AuctionBid> GetBidByIdAsync(int bidId)
|
||||
public async Task<AuctionBid> GetBidByIdAsync(int bidId)
|
||||
{
|
||||
return await _ctx.AuctionBids.GetByIdAsync(bidId);
|
||||
}
|
||||
|
||||
public virtual async Task InsertBidAsync(AuctionBid auctionBid)
|
||||
public async Task InsertBidAsync(AuctionBid auctionBid)
|
||||
{
|
||||
if (await ValidateAuctionBid(auctionBid))
|
||||
{
|
||||
|
|
@ -120,7 +120,7 @@ public class AuctionService : IAuctionService
|
|||
}
|
||||
}
|
||||
|
||||
public virtual async Task UpdateBidAsync(AuctionBid auctionBid)
|
||||
public async Task UpdateBidAsync(AuctionBid auctionBid)
|
||||
{
|
||||
if (await ValidateAuctionBid(auctionBid))
|
||||
{
|
||||
|
|
@ -134,20 +134,20 @@ public class AuctionService : IAuctionService
|
|||
/// </summary>
|
||||
/// <param name="pickupPoint">Pickup point</param>
|
||||
/// <returns>A task that represents the asynchronous operation</returns>
|
||||
public virtual async Task DeleteBidAsync(AuctionBid pickupPoint)
|
||||
public async Task DeleteBidAsync(AuctionBid pickupPoint)
|
||||
{
|
||||
await _ctx.AuctionBids.DeleteAsync(pickupPoint, false);
|
||||
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
|
||||
}
|
||||
|
||||
#region auctions
|
||||
public virtual async Task InsertAuctionAsync(Auction auction)
|
||||
public async Task InsertAuctionAsync(Auction auction)
|
||||
{
|
||||
await _ctx.Auctions.InsertAsync(auction, false);
|
||||
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
|
||||
}
|
||||
|
||||
public virtual async Task UpdateAuctionAsync(Auction auction)
|
||||
public async Task UpdateAuctionAsync(Auction auction)
|
||||
{
|
||||
await _ctx.Auctions.UpdateAsync(auction);
|
||||
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
|
||||
|
|
@ -160,8 +160,7 @@ public class AuctionService : IAuctionService
|
|||
|
||||
public async Task<List<ProductToAuctionMapping>> GetProductToAuctionsByAuctionIdAsync(int auctionId, bool onlyActiveItems = false)
|
||||
{
|
||||
//return (await _ctx.Auctions.GetAllAsync(auctions => auctions.OrderByDescending(x => x.StartDateUtc), _ => default)).ToList();
|
||||
return [];
|
||||
return await _ctx.ProductToAuctions.GetProductToAuctionsByAuctionId(auctionId, onlyActiveItems).ToListAsync();
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
|
@ -215,9 +214,7 @@ public class AuctionService : IAuctionService
|
|||
|
||||
public async Task<List<ProductToAuctionMapping>> GetProductToAuctionByAuctionIdAndProductIdAsync(int auctionId, int productId, bool activeProductOnly = false)
|
||||
{
|
||||
return new List<ProductToAuctionMapping>(await _ctx.ProductToAuctions.GetByAuctionAndProductId(auctionId, productId)
|
||||
.Where(x => !activeProductOnly || (x.AuctionStatus == AuctionStatus.Active || x.AuctionStatus == AuctionStatus.FirstWarning || x.AuctionStatus == AuctionStatus.SecondWarning))
|
||||
.ToListAsync());
|
||||
return new List<ProductToAuctionMapping>(await _ctx.ProductToAuctions.GetByAuctionAndProductId(auctionId, productId, activeProductOnly).ToListAsync());
|
||||
}
|
||||
|
||||
public async Task<ProductToAuctionMapping> AssignProductToAuctionAsync(int productId, decimal startingPrice, decimal bidPrice, int auctionId)
|
||||
|
|
@ -235,7 +232,7 @@ public class AuctionService : IAuctionService
|
|||
StartingPrice = startingPrice,
|
||||
BidPrice = bidPrice,
|
||||
ProductAmount = 0,
|
||||
AuctionStatus = Domains.Enums.AuctionStatus.Active, //Ez miért Active alapból? - J.
|
||||
AuctionStatus = AuctionStatus.Active, //TODO: Ez miért Active alapból? - J.
|
||||
AuctionId = auctionId
|
||||
};
|
||||
|
||||
|
|
@ -251,7 +248,12 @@ public class AuctionService : IAuctionService
|
|||
return mapping;
|
||||
}
|
||||
|
||||
public virtual async Task UpdateProductToAuctionMappingAsync(ProductToAuctionMapping productToAuctionMapping)
|
||||
public async Task<ProductToAuctionMapping> GetProductToAuctionMappingByIdAsync(int productToAuctionMappingId)
|
||||
{
|
||||
return await _ctx.ProductToAuctions.GetByIdAsync(productToAuctionMappingId);
|
||||
}
|
||||
|
||||
public async Task UpdateProductToAuctionMappingAsync(ProductToAuctionMapping productToAuctionMapping)
|
||||
{
|
||||
await _ctx.ProductToAuctions.UpdateAsync(productToAuctionMapping);
|
||||
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ public interface IAuctionService
|
|||
Task DeleteBidAsync(AuctionBid pickupPoint);
|
||||
|
||||
Task InsertAuctionAsync(Auction auction);
|
||||
Task UpdateAuctionAsync(Auction auction);
|
||||
|
||||
Task<IList<Auction>> GetAllAuctionsAsync();
|
||||
|
||||
|
|
@ -50,4 +51,6 @@ public interface IAuctionService
|
|||
Task<List<ProductToAuctionMapping>> GetProductToAuctionsByProductIdAsync(int productId);
|
||||
|
||||
Task<List<ProductToAuctionMapping>> GetProductToAuctionByAuctionIdAndProductIdAsync(int auctionId, int productId, bool activeProductOnly);
|
||||
Task<ProductToAuctionMapping> GetProductToAuctionMappingByIdAsync(int productToAuctionMappingId);
|
||||
Task UpdateProductToAuctionMappingAsync(ProductToAuctionMapping productToAuctionMapping);
|
||||
}
|
||||
Loading…
Reference in New Issue