Implement AuctionDtos; improvements, fixes, etc...

This commit is contained in:
Loretta 2024-11-16 19:10:20 +01:00
parent 8ad64ac523
commit 2a76051a4e
19 changed files with 125 additions and 77 deletions

View File

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

View File

@ -2,7 +2,7 @@
using Nop.Data; using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer.Interfaces;
public interface IAuctionBidDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<AuctionBid> public interface IAuctionBidDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<AuctionBid>
{ {

View File

@ -2,7 +2,7 @@
using Nop.Data; using Nop.Data;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities; using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer; namespace Nop.Plugin.Misc.AuctionPlugin.Domains.DataLayer.Interfaces;
public interface IAuctionDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<Auction> public interface IAuctionDbSet<TDbTable> : IMgDbTableBase where TDbTable : IRepository<Auction>
{ {

View File

@ -0,0 +1,6 @@
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos;
public class AuctionBidDto
{
}

View File

@ -0,0 +1,6 @@
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos;
public class AuctionDto
{
}

View File

@ -0,0 +1,10 @@
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
public interface IAuctionBidDto : IAuctionBidDtoBase
{
//[NotMapped]
//[NotColumn]
public List<AuctionBid> AuctionBids { get; }
}

View File

@ -0,0 +1,15 @@
using Mango.Nop.Core.Interfaces;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
public interface IAuctionBidDtoBase : IMgModelDtoBase
{
public int ProductAuctionMappingId { get; set; }
public int CustomerId { get; set; }
public int ProductId { get; set; }
public bool IsWinner { get; set; }
public int BidPrice { get; set; }
}

View File

@ -0,0 +1,13 @@
using AyCode.Interfaces;
using AyCode.Interfaces.Server.Logins;
using AyCode.Interfaces.Users.Dtos;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
public interface IAuctionDto : IAuctionDtoBase
{
//[NotMapped]
//[NotColumn]
public List<ProductToAuctionMapping> ProductToAuctionMappings { get; }
}

View File

@ -0,0 +1,17 @@
using AyCode.Interfaces;
using Mango.Nop.Core.Interfaces;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
public interface IAuctionDtoBase : IMgModelDtoBase
{
public string AuctionName { get; set; }
public AuctionType AuctionType { get; set; }
public DateTime StartDateUtc { get; set; }
public DateTime? EndDateUtc { get; set; }
public bool Closed { get; set; }
}

View File

@ -0,0 +1,6 @@
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos;
public class ProductToAuctionDto
{
}

View File

@ -1,15 +1,14 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo;
using LinqToDB.Mapping; 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;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; 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 partial class Auction: MgEntityBase, IAuction
{ {
public string AuctionName { get; set; } public string AuctionName { get; set; }
@ -20,10 +19,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] [SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }

View File

@ -1,11 +1,12 @@
using AyCode.Interfaces.Entities; using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo; using LinqToDB.Mapping;
using Mango.Nop.Core.Entities; using Mango.Nop.Core.Entities;
using Nop.Core; using Nop.Core;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities
{ {
public partial class AuctionBid : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public partial class AuctionBid : MgEntityBase, IAuctionBid
{ {
public int ProductAuctionMappingId { get; set; } public int ProductAuctionMappingId { get; set; }
@ -16,8 +17,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities
public bool IsWinner { get; set; } public bool IsWinner { get; set; }
public int BidPrice { get; set; } public int BidPrice { get; set; }
public DateTime CreateDate { get; set; } [SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -1,5 +1,6 @@
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 Nop.Core; using Nop.Core;
@ -7,6 +8,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities;
public partial class AuctionItem : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt public partial class AuctionItem : MgEntityBase, ITimeStampInfo//, ISoftRemoveEntityInt
{ {
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -0,0 +1,10 @@
using AyCode.Interfaces.Entities;
using AyCode.Interfaces.TimeStampInfo;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces;
public interface IAuction : IAuctionDtoBase, ITimeStampInfo //, ISoftRemoveEntityInt
{
}

View File

@ -0,0 +1,9 @@
using AyCode.Interfaces.TimeStampInfo;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Dtos.Interfaces;
namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces;
public interface IAuctionBid : IAuctionBidDtoBase, ITimeStampInfo//, ISoftRemoveEntityInt
{
}

View File

@ -1,5 +1,6 @@
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 Nop.Core; using Nop.Core;
using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums; using Nop.Plugin.Misc.AuctionPlugin.Domains.Enums;
@ -17,6 +18,8 @@ public partial class ProductToAuctionMapping : MgEntityBase, ITimeStampInfo//, I
public int BidPrice { get; set; } public int BidPrice { get; set; }
public int BidAmount { get; set; } = 1; public int BidAmount { get; set; } = 1;
[SkipValuesOnUpdate]
public DateTime Created { get; set; } public DateTime Created { get; set; }
public DateTime Modified { get; set; } public DateTime Modified { get; set; }
} }

View File

@ -23,9 +23,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services
public AnnouncementService(IRepository<Announcement> announcementRepository) public AnnouncementService(IRepository<Announcement> announcementRepository)
{ {
_announcementRepository = announcementRepository; _announcementRepository = announcementRepository;
} }
#endregion #endregion
@ -34,86 +32,56 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services
public async Task DeleteAsync(Announcement announcement) public async Task DeleteAsync(Announcement announcement)
{ {
await _announcementRepository.DeleteAsync(announcement); await _announcementRepository.DeleteAsync(announcement);
} }
public async Task<bool> UpdateAsync(Announcement announcement) public async Task<bool> UpdateAsync(Announcement announcement)
{ {
if (announcement == null) throw new ArgumentNullException("customer");
if (announcement == null)
throw new ArgumentNullException("customer");
await _announcementRepository.UpdateAsync(announcement); await _announcementRepository.UpdateAsync(announcement);
return true; return true;
} }
public async Task InsertAsync(Announcement announcement) public async Task InsertAsync(Announcement announcement)
{ {
await _announcementRepository.InsertAsync(announcement); await _announcementRepository.InsertAsync(announcement);
} }
public async Task<IPagedList<Announcement>> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue) public async Task<IPagedList<Announcement>> GetAnnouncementsAsync(int pageIndex = 0, int pageSize = int.MaxValue)
{ {
var announcements = _announcementRepository.Table.OrderBy(announcement => announcement.IsActive).ToList();
var query = from c in _announcementRepository.Table return new PagedList<Announcement>(announcements, pageIndex, pageSize);
select c;
var query2 = query.OrderBy(b => b.IsActive).ToList();
var liveAnnouncementDomain = new PagedList<Announcement>(query2, pageIndex, pageSize);
return liveAnnouncementDomain;
} }
public async Task<Announcement> GetAnnouncementDesignFirstAsync() public async Task<Announcement> GetAnnouncementDesignFirstAsync()
{ {
var result = await _announcementRepository.GetAllAsync(query => return await _announcementRepository.Table.FirstOrDefaultAsync(announcement => announcement.IsActive == true);
{
query = query.Where(record => record.IsActive == true);
return query;
});
//var query = from c in _announcementRepository.Table //var result = await _announcementRepository.GetAllAsync(announcements => announcements.Where(record => record.IsActive == true));
// where c.IsActive == true ////var query = from c in _announcementRepository.Table
// orderby c.CreateDate descending //// where c.IsActive == true
// select c; //// orderby c.CreateDate descending
var LatestAnnouncement = result.ToList().FirstOrDefault(); //// select c;
return LatestAnnouncement; //var LatestAnnouncement = result.ToList().FirstOrDefault();
//return LatestAnnouncement;
} }
public async Task<Announcement> GetAnnouncementByIdAsync(int Id) public async Task<Announcement> GetAnnouncementByIdAsync(int id)
{ {
return await _announcementRepository.GetByIdAsync(id);
return await _announcementRepository.GetByIdAsync(Id);
} }
#endregion #endregion
} }
} }

View File

@ -1,18 +1,9 @@
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Routing;
using Nop.Core.Domain.Catalog; using Nop.Core.Domain.Catalog;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Messages;
using Nop.Core.Domain.Orders;
using Nop.Core.Events; using Nop.Core.Events;
using Nop.Services.Events; using Nop.Services.Events;
using Nop.Services.Messages;
using Nop.Web.Framework;
using Nop.Web.Framework.Events;
using Nop.Web.Framework.Models;
using Nop.Web.Models.Catalog;
namespace Nop.Plugin.Misc.AuctionPlugin; namespace Nop.Plugin.Misc.AuctionPlugin.Services;
/// <summary> /// <summary>
/// Represents plugin event consumer /// Represents plugin event consumer

View File

@ -11,9 +11,7 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services
{ {
public interface IAnnouncementService public interface IAnnouncementService
{ {
public Task DeleteAsync(Announcement announcement); public Task DeleteAsync(Announcement announcement);
public Task InsertAsync(Announcement announcement); public Task InsertAsync(Announcement announcement);
@ -24,8 +22,6 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Services
public Task<Announcement> GetAnnouncementDesignFirstAsync(); public Task<Announcement> GetAnnouncementDesignFirstAsync();
public Task<Announcement> GetAnnouncementByIdAsync(int Id); public Task<Announcement> GetAnnouncementByIdAsync(int id);
} }
} }