Compare commits

..

No commits in common. "8ad64ac523dbdc78bce74fbb82ca6daa3f0665f3" and "53abcb5a6416254adc1a87e645a7cb457eb91607" have entirely different histories.

19 changed files with 30 additions and 240 deletions

View File

@ -68,7 +68,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Controllers
if (viewModel.IsActive == true) if (viewModel.IsActive == true)
{ {
var announcement = new MessageWrapper var announcement = new MessageBase
{ {
MessageType = "announcement", MessageType = "announcement",
Data = new AnnouncementMessage Data = new AnnouncementMessage
@ -108,7 +108,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Controllers
//await _announcementService.InsertAsync(objOfAuctionBid); //await _announcementService.InsertAsync(objOfAuctionBid);
var bid = new MessageWrapper var bid = new MessageBase
{ {
MessageType = "bidNotification", MessageType = "bidNotification",
Data = new BidNotificationMessage Data = new BidNotificationMessage

View File

@ -110,13 +110,10 @@ public class AuctionPluginAdminController : BasePluginController
} }
public async Task<IActionResult> TestPage() public IActionResult TestPage()
{ {
var model = new TestPageViewModel(); var model = new TestPageViewModel();
model.Message = "Teszt üzenet";
var auctions = await _auctionService.GetAllAuctionsAsync();
model.Message = $"Teszt üzenet; Auctions count: {auctions.Count}";
return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/TestPage.cshtml", model); return View("~/Plugins/Misc.AuctionPlugin/Areas/Admin/Views/TestPage.cshtml", model);
} }

View File

@ -13,6 +13,5 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Models
public string Title { get; set; } public string Title { get; set; }
public string Message { get; set; } public string Message { get; set; }
public Auction TestAuction { get; set; } public Auction TestAuction { get; set; }
} }
} }

View File

@ -1,15 +0,0 @@
using Mango.Nop.Core.Repositories;
using Nop.Core.Caching;
using Nop.Core.Configuration;
using Nop.Core.Events;
using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public class AuctionBidDbTable: MgDbTableBase<AuctionBid>
{
public AuctionBidDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings) : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
{
}
}

View File

@ -1,32 +0,0 @@
using Mango.Nop.Core.Repositories;
using Nop.Core;
using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
using System;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public class AuctionDbContext : MgDbContextBase, IAuctionDbSet<AuctionDbTable>, IAuctionBidDbSet<AuctionBidDbTable>
{
public AuctionDbTable Auctions { get; set; }
public AuctionBidDbTable AuctionBids { get; set; }
public EntityRepository<Auction> Auctions2 { get; set; }
public IRepository<AuctionBid> AuctionBids2 { get; set; }
public AuctionDbContext(INopDataProvider dataProvider, AuctionDbTable auctionDbTable, AuctionBidDbTable auctionBidDbTable) : base(dataProvider)
{
Auctions = auctionDbTable;
AuctionBids = auctionBidDbTable;
//Auctions.Table
var auctions = DataProvider.GetTable<Auction>().Where(x => x.Closed);
}
//public AuctionDbContext(IRepository<Auction> _auctionRepository, IRepository<AuctionBid> _auctionBidRepository)
//{
// Auctions2 = _auctionRepository as EntityRepository<Auction>;
// AuctionBids2 = _auctionBidRepository;
//}
}

View File

@ -1,22 +0,0 @@
using Mango.Nop.Core.Entities;
using Mango.Nop.Core.Repositories;
using Nop.Core.Caching;
using Nop.Core.Configuration;
using Nop.Core.Events;
using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public class AuctionDbTable: MgDbTableBase<Auction>
{
public AuctionDbTable(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings) : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
{
}
public Task<IList<Auction>> GetAllAuctionsAsync()
{
return GetAllAsync(auctions => auctions.OrderByDescending(x => x.StartDateUtc), _ => default);
}
}

View File

@ -1,33 +0,0 @@
using System.Transactions;
using Mango.Nop.Core.Repositories;
using Nop.Core;
using Nop.Core.Caching;
using Nop.Core.Configuration;
using Nop.Core.Domain.Catalog;
using Nop.Core.Events;
using Nop.Data;
using Nop.Data.DataProviders;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public class AuctionMgDal : MgDalBase<MgDbContextBase>
{
public IRepository<Auction> Auctions { get; set; }
//public AuctionMgDal(IEventPublisher eventPublisher, INopDataProvider dataProvider, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, AppSettings appSettings)
// : base(eventPublisher, dataProvider, shortTermCacheManager, staticCacheManager, appSettings)
//{
//}
public async Task AddProductToAuction(Product product, Auction auction)
{
//using var dataContext = ((MsSqlNopDataProvider)_dataProvider).
//dataProvider.GetTable<TEntity>().wh
//using var transaction = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);
//await _dataProvider.InsertEntityAsync()
// InsertEntityAsync(product);
//transaction.Complete();
}
}

View File

@ -1,10 +0,0 @@
using Mango.Nop.Core.Interfaces;
using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public interface IAuctionBidDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<AuctionBid>
{
public TDbTable AuctionBids { get; set; }
}

View File

@ -1,10 +0,0 @@
using Mango.Nop.Core.Interfaces;
using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
public interface IAuctionDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<Auction>
{
public TDbTable Auctions { get; set; }
}

View File

@ -6,7 +6,7 @@ using Nop.Core;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities
{ {
public class Announcement : MgEntityBase, ITimeStampCreated public class Announcement : EntityBase, ITimeStampCreated
{ {
public string Name { get; set; } public string Name { get; set; }

View File

@ -1,7 +1,5 @@
using System.ComponentModel.DataAnnotations.Schema; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using AyCode.Interfaces.TimeStampInfo;
using LinqToDB.Mapping;
using Mango.Nop.Core.Entities; using Mango.Nop.Core.Entities;
using Mango.Nop.Core.Interfaces; using Mango.Nop.Core.Interfaces;
using Nop.Core; using Nop.Core;
@ -9,10 +7,9 @@ using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
public partial class Auction: MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public class Auction: EntityBase, ITimeStampInfo//, ISoftRemoveEntityInt
{ {
public string AuctionName { get; set; } public string AuctionName { get; set; }
public AuctionType AuctionType{ get; set; } public AuctionType AuctionType{ get; set; }
public DateTime StartDateUtc { get; set; } public DateTime StartDateUtc { get; set; }
@ -20,11 +17,6 @@ public partial class Auction: MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityI
public bool Closed { get; set; } public bool Closed { get; set; }
[NotMapped]
[NotColumn]
public List<ProductToAuctionMapping> ProductToAuctionMappings { get; } = [];
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -5,10 +5,8 @@ using Nop.Core;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities
{ {
public partial class AuctionBid : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public class AuctionBid : EntityBase, ITimeStampInfo//, ISoftRemoveEntityInt
{ {
public int ProductAuctionMappingId { get; set; }
public int CustomerId { get; set; } public int CustomerId { get; set; }
public int ProductId { get; set; } public int ProductId { get; set; }

View File

@ -5,7 +5,7 @@ using Nop.Core;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
public partial class AuctionItem : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public class AuctionItem : EntityBase, ITimeStampInfo//, ISoftRemoveEntityInt
{ {
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }

View File

@ -6,7 +6,7 @@ using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
public partial class ProductToAuctionMapping : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public class ProductToAuctionMapping : EntityBase, ITimeStampInfo//, ISoftRemoveEntityInt
{ {
public int ProductId { get; set; } public int ProductId { get; set; }
public int AuctionId { get; set; } public int AuctionId { get; set; }

View File

@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages namespace Nop.Plugin.Misc.AuctionPlugin.Hubs.Messages
{ {
public class MessageWrapper public class MessageBase
{ {
public string MessageType { get; set; } public string MessageType { get; set; }
public object Data { get; set; } public object Data { get; set; }

View File

@ -10,7 +10,6 @@ using Nop.Core;
using Nop.Core.Caching; using Nop.Core.Caching;
using Nop.Core.Infrastructure; using Nop.Core.Infrastructure;
using Nop.Data; using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
using Nop.Plugin.Misc.AuctionPlugin.Hubs; using Nop.Plugin.Misc.AuctionPlugin.Hubs;
using Nop.Plugin.Misc.AuctionPlugin.Services; using Nop.Plugin.Misc.AuctionPlugin.Services;
using Nop.Services.Catalog; using Nop.Services.Catalog;
@ -55,10 +54,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Infrastructure
services.AddScoped<IProductAttributeService, ProductAttributeService>(); services.AddScoped<IProductAttributeService, ProductAttributeService>();
services.AddScoped<UrlHelperFactory>(); services.AddScoped<UrlHelperFactory>();
services.AddScoped<IActionContextAccessor, ActionContextAccessor>(); services.AddScoped<IActionContextAccessor, ActionContextAccessor>();
services.AddScoped<IRouteProvider, RouteProvider>();
services.AddScoped<AuctionDbTable>();
services.AddScoped<AuctionBidDbTable>();
services.AddScoped<AuctionDbContext>();
} }
/// <summary> /// <summary>

View File

@ -1,38 +0,0 @@
using FluentMigrator;
using FluentMigrator.Builders.Create.Table;
using Nop.Data.Mapping.Builders;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
using Nop.Data.Extensions;
using System.Data;
using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Common;
using Nop.Data.Mapping;
namespace Nop.Plugin.Misc.AuctionPlugin.Mapping.Builders;
public class ProductToAuctionMappingBuilder : NopEntityBuilder<ProductToAuctionMapping>
{
#region Methods
/// <summary>
/// Apply entity configuration
/// </summary>
/// <param name="table">Create table expression builder</param>
public override void MapEntity(CreateTableExpressionBuilder table)
{
table.WithColumn(nameof(ProductToAuctionMapping.Id)).AsInt32().PrimaryKey()
.WithColumn(nameof(ProductToAuctionMapping.AuctionId)).AsInt32().ForeignKey<Auction>(onDelete: Rule.None) //Rule.Cascade??
.WithColumn(nameof(ProductToAuctionMapping.ProductId)).AsInt32().ForeignKey<Product>(onDelete: Rule.None) //Rule.Cascade??
.WithColumn(nameof(ProductToAuctionMapping.AuctionStatus)).AsByte().NotNullable() //enum??? - J.
.WithColumn(nameof(ProductToAuctionMapping.StartingPrice)).AsInt32().NotNullable()
.WithColumn(nameof(ProductToAuctionMapping.BidPrice)).AsInt32().NotNullable()
.WithColumn(nameof(ProductToAuctionMapping.BidAmount)).AsInt32().NotNullable().WithDefaultValue(1)
.WithColumn(nameof(ProductToAuctionMapping.Created)).AsDateTime().NotNullable()
.WithColumn(nameof(ProductToAuctionMapping.Modified)).AsDateTime().NotNullable().WithDefault(SystemMethods.CurrentUTCDateTime);
}
#endregion
}

View File

@ -1,9 +1,7 @@
using Nop.Core; using Nop.Core;
using Nop.Core.Caching; using Nop.Core.Caching;
using Nop.Core.Domain.Customers;
using Nop.Data; using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains; using Nop.Plugin.Misc.AuctionPlugin.Domains;
using Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Services; namespace Nop.Plugin.Misc.AuctionPlugin.Services;
@ -28,12 +26,11 @@ public class AuctionService : IAuctionService
#region Fields #region Fields
protected readonly AuctionDbContext _ctx; protected readonly IRepository<AuctionBid> _customerBidRepository;
//protected readonly IRepository<AuctionBid> _customerBidRepository; protected readonly IRepository<Auction> _auctionRepository;
//protected readonly IRepository<Auction> _auctionRepository;
protected readonly IShortTermCacheManager _shortTermCacheManager; protected readonly IShortTermCacheManager _shortTermCacheManager;
protected readonly IStaticCacheManager _staticCacheManager; protected readonly IStaticCacheManager _staticCacheManager;
protected readonly IWorkContext _workContext;
#endregion #endregion
#region Ctor #region Ctor
@ -44,31 +41,22 @@ public class AuctionService : IAuctionService
/// <param name="customerBidRepository">Store pickup point repository</param> /// <param name="customerBidRepository">Store pickup point repository</param>
/// <param name="shortTermCacheManager">Short term cache manager</param> /// <param name="shortTermCacheManager">Short term cache manager</param>
/// <param name="staticCacheManager">Cache manager</param> /// <param name="staticCacheManager">Cache manager</param>
public AuctionService(AuctionDbContext ctx, IShortTermCacheManager shortTermCacheManager, IStaticCacheManager staticCacheManager, IWorkContext workContext) public AuctionService(
IRepository<AuctionBid> customerBidRepository,
IRepository<Auction> auctionRepository,
IShortTermCacheManager shortTermCacheManager,
IStaticCacheManager staticCacheManager)
{ {
_ctx = ctx; _customerBidRepository = customerBidRepository;
//_customerBidRepository = customerBidRepository; _auctionRepository = auctionRepository;
//_auctionRepository = auctionRepository;
_shortTermCacheManager = shortTermCacheManager; _shortTermCacheManager = shortTermCacheManager;
_staticCacheManager = staticCacheManager; _staticCacheManager = staticCacheManager;
_workContext = workContext;
} }
#endregion #endregion
#region Methods #region Methods
private async Task<bool> ValidateAuctionBid(AuctionBid auctionBid)
{
auctionBid.CustomerId = (await _workContext.GetCurrentCustomerAsync()).Id; //elvileg megnézi cache-ben, csak utána DB-zik! - J.
auctionBid.Modified = DateTime.UtcNow;
//etc...
return true;
}
/// <summary> /// <summary>
/// Gets all bids /// Gets all bids
/// </summary> /// </summary>
@ -96,26 +84,20 @@ public class AuctionService : IAuctionService
public virtual async Task<AuctionBid> GetBidByIdAsync(int bidId) public virtual async Task<AuctionBid> GetBidByIdAsync(int bidId)
{ {
return await _ctx.AuctionBids.GetByIdAsync(bidId); return await _customerBidRepository.GetByIdAsync(bidId);
} }
public virtual async Task InsertBidAsync(AuctionBid auctionBid) public virtual async Task InsertBidAsync(AuctionBid auctionBid)
{ {
if (await ValidateAuctionBid(auctionBid)) await _customerBidRepository.InsertAsync(auctionBid, false);
{
await _ctx.AuctionBids.InsertAsync(auctionBid, false);
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
} }
}
public virtual async Task UpdateBidAsync(AuctionBid auctionBid) public virtual async Task UpdateBidAsync(AuctionBid auctionBid)
{ {
if (await ValidateAuctionBid(auctionBid)) await _customerBidRepository.UpdateAsync(auctionBid, false);
{
await _ctx.AuctionBids.UpdateAsync(auctionBid, false);
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
} }
}
/// <summary> /// <summary>
/// Deletes a pickup point /// Deletes a pickup point
@ -124,28 +106,16 @@ public class AuctionService : IAuctionService
/// <returns>A task that represents the asynchronous operation</returns> /// <returns>A task that represents the asynchronous operation</returns>
public virtual async Task DeleteBidAsync(AuctionBid pickupPoint) public virtual async Task DeleteBidAsync(AuctionBid pickupPoint)
{ {
await _ctx.AuctionBids.DeleteAsync(pickupPoint, false); await _customerBidRepository.DeleteAsync(pickupPoint, false);
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
} }
#region auctions #region auctions
public virtual async Task InsertAuctionAsync(Auction auction) public virtual async Task InsertAuctionAsync(Auction auction)
{ {
await _ctx.Auctions.InsertAsync(auction, false); await _auctionRepository.InsertAsync(auction, false);
await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY); await _staticCacheManager.RemoveByPrefixAsync(AUCTION_PATTERN_KEY);
} }
public async Task<IList<Auction>> GetAllAuctionsAsync()
{
return await _ctx.Auctions.GetAllAuctionsAsync();
}
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 [];
}
#endregion #endregion
#endregion #endregion

View File

@ -30,6 +30,4 @@ public interface IAuctionService
Task DeleteBidAsync(AuctionBid pickupPoint); Task DeleteBidAsync(AuctionBid pickupPoint);
Task InsertAuctionAsync(Auction auction); Task InsertAuctionAsync(Auction auction);
Task<IList<Auction>> GetAllAuctionsAsync();
} }