64 lines
3.3 KiB
C#
64 lines
3.3 KiB
C#
using Mango.Nop.Core.Repositories;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Nop.Core.Caching;
|
|
using Nop.Core.Configuration;
|
|
using Nop.Core.Domain.Catalog;
|
|
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;
|
|
using Nop.Services.Events;
|
|
using Nop.Services.Logging;
|
|
|
|
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
|
|
|
|
public class ProductToAuctionDbTable : MgDbTableBase<ProductToAuctionMapping>
|
|
{
|
|
public ProductToAuctionDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings, ILogger logger)
|
|
: base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings, logger)
|
|
{
|
|
}
|
|
|
|
private static bool HasActiveAuctionStatus(AuctionStatus auctionStatus)
|
|
{
|
|
//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);
|
|
}
|
|
|
|
public IQueryable<ProductToAuctionMapping> GetByAuctionAndProductId(int auctionId, int productId, bool activeProductOnly = false)
|
|
{
|
|
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 || x.AuctionStatus == AuctionStatus.Active || x.AuctionStatus == AuctionStatus.FirstWarning || x.AuctionStatus == AuctionStatus.SecondWarning /*HasActiveAuctionStatus(x.AuctionStatus)*/));
|
|
}
|
|
|
|
public IQueryable<ProductToAuctionMapping> GetProductToAuctionsByAuctionId(int auctionId, bool activeProductOnly = false)
|
|
{
|
|
return Table.Where(x => x.AuctionId == auctionId &&
|
|
(!activeProductOnly || x.AuctionStatus == AuctionStatus.Active || x.AuctionStatus == AuctionStatus.FirstWarning || x.AuctionStatus == AuctionStatus.SecondWarning /*HasActiveAuctionStatus(x.AuctionStatus)*/));
|
|
}
|
|
|
|
public async Task DeactivateItemByProductId(int productId, decimal basePrice) => await DeactivateItem(await GetByProductId(productId).FirstOrDefaultAsync(), basePrice);
|
|
public async Task DeactivateItemById(int productToAuctionId, decimal basePrice) => await DeactivateItem(await GetByIdAsync(productToAuctionId), basePrice);
|
|
public async Task DeactivateItem(ProductToAuctionMapping productToAuction, decimal basePrice)
|
|
{
|
|
if (productToAuction == null)
|
|
{
|
|
Logger.Error($"ProductToAuctionDbTable.DeactivateItem(); productToAuction == null");
|
|
return;
|
|
}
|
|
|
|
productToAuction.StartingPrice = basePrice;
|
|
productToAuction.CurrentPrice = basePrice;
|
|
productToAuction.WinnerCustomerId = 0;
|
|
productToAuction.AuctionStatus = AuctionStatus.None;
|
|
|
|
await UpdateAsync(productToAuction);
|
|
}
|
|
} |