From 59a530ea559c3e4b7bff8f231d29a4016f6b0020 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 18 Dec 2024 20:54:16 +0100 Subject: [PATCH] fxes improvements --- .../AuctionPluginAdminController.cs | 37 +++++++++ .../Areas/Admin/Models/AuctionViewModel.cs | 2 + .../Areas/Admin/Views/Auction.cshtml | 43 +++++++++++ .../Areas/Admin/Views/AuctionList.cshtml | 75 ++++++++++++++++++- .../AuctionDefaults.cs | 2 + .../Domains/Dtos/AuctionDto.cs | 1 + .../Domains/Entities/AuctionBid.cs | 2 + .../Entities/Interfaces/IAuctionBid.cs | 2 +- .../Infrastructure/RouteProvider.cs | 8 ++ 9 files changed, 170 insertions(+), 2 deletions(-) diff --git a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Controllers/AuctionPluginAdminController.cs b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Controllers/AuctionPluginAdminController.cs index 08f5cbe..744702a 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Controllers/AuctionPluginAdminController.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Controllers/AuctionPluginAdminController.cs @@ -106,7 +106,15 @@ public class AuctionPluginAdminController : BasePluginController [HttpPost] public async Task GetAuctionViewModel(AuctionViewModel viewModel) { + viewModel.AuctionDto = new Domains.Dtos.AuctionDto(); + viewModel.AuctionDto.AuctionName = viewModel.AuctionName; + viewModel.AuctionDto.AuctionType = viewModel.AuctionType; + viewModel.AuctionDto.Closed = viewModel.Closed; + viewModel.AuctionDto.StartDateUtc = viewModel.StartDateUtc; + viewModel.AuctionDto.EndDateUtc = viewModel.EndDateUtc; var objOfAuctionDomain = viewModel.AuctionDto.CreateMainEntity(); + + await _auctionService.InsertAuctionAsync(objOfAuctionDomain); //if (viewModel.IsActive == true) @@ -175,4 +183,33 @@ public class AuctionPluginAdminController : BasePluginController return result != null ? Ok("Baaaazdmeeeeeeeeg") : StatusCode(500, "Error assigning product to auction."); } + + public async Task GetAuctionById(int id) + { + var auction = await _auctionService.GetAuctionByIdAsync(id); + if (auction == null) + return NotFound(); + + return Json(new + { + id = auction.Id, + auctionName = auction.AuctionName, + startDateUtc = auction.StartDateUtc, + closed = auction.Closed + }); + } + + [HttpPost] + public async Task SaveAuction(Auction auction) + { + var dbAuction = await _auctionService.GetAuctionByIdAsync(auction.Id); + if (auction != null) + { + dbAuction.AuctionName = auction.AuctionName; + + dbAuction.Closed = auction.Closed; + await _auctionService.UpdateAuctionAsync(auction); + } + return Ok(); + } } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Models/AuctionViewModel.cs b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Models/AuctionViewModel.cs index 1f85d54..ebe4fc1 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Models/AuctionViewModel.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Models/AuctionViewModel.cs @@ -15,6 +15,8 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Areas.Admin.Models public string AuctionName { get; set; } public AuctionType AuctionType { get; set; } + public int? CategoryId { get; set; } + public DateTime StartDateUtc { get; set; } public DateTime? EndDateUtc { get; set; } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/Auction.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/Auction.cshtml index 96ffc39..6c5553b 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/Auction.cshtml +++ b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/Auction.cshtml @@ -49,6 +49,21 @@   +
+
+ + @Html.LabelFor(model => model.AuctionType) + +
+
+ + @Html.EditorFor(model => model.AuctionType) + +
+
+   +
+
@@ -63,6 +78,34 @@  
+
+
+ + @Html.LabelFor(model => model.EndDateUtc) + +
+
+ @* *@ + @Html.EditorFor(model => model.EndDateUtc) +
+
+   +
+
+
+
+ + @Html.LabelFor(model => model.CategoryId) + +
+
+ @* *@ + @Html.EditorFor(model => model.CategoryId) +
+
+   +
+
diff --git a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/AuctionList.cshtml b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/AuctionList.cshtml index cce8830..976815d 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/AuctionList.cshtml +++ b/Nop.Plugin.Misc.AuctionPlugin/Areas/Admin/Views/AuctionList.cshtml @@ -13,7 +13,7 @@
- + Add @@ -47,6 +47,12 @@ { Title = "Closed", Width = "300" + }, + new ColumnProperty(nameof(Auction.Id)) // Assuming Auction.Id exists + { + Title = "Actions", + Render = new RenderCustom("renderEditButton"), + Width = "100" } } }) @@ -59,3 +65,70 @@
+ + + + + + diff --git a/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs b/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs index 15bbc3f..f1d93e4 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/AuctionDefaults.cs @@ -29,6 +29,8 @@ public static class AuctionDefaults public static string AnnouncementListRouteName => "Plugin.Misc.AuctionPlugin.AnnouncementList"; public static string AuctionRouteName => "Plugin.Misc.AuctionPlugin.Auction"; public static string AuctionListRouteName => "Plugin.Misc.AuctionPlugin.AuctionList"; + public static string GetAuctionByIdRouteName => "Plugin.Misc.AuctionPlugin.GetAuctionById"; + public static string SaveAuctionRouteName => "Plugin.Misc.AuctionPlugin.SaveAuction"; public static string TestPageRouteName => "Plugin.Misc.AuctionPlugin.TestPage"; public static string BidNotificationRouteName => "Plugin.Misc.AuctionPlugin.BidNotification"; public static string RefreshAuctionWidgetRouteName => "Plugin.Misc.AuctionPlugin.RefreshAuctionWidget"; diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs index 827bb58..4de1319 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Dtos/AuctionDto.cs @@ -42,6 +42,7 @@ public class AuctionDto : IAuctionDto mainEntity.Id = Id; mainEntity.AuctionName = AuctionName; mainEntity.AuctionType = AuctionType; + mainEntity.CategoryId = 0; mainEntity.StartDateUtc = StartDateUtc; mainEntity.EndDateUtc = EndDateUtc; mainEntity.Closed = Closed; diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs index 9695fd8..b7e70c1 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/AuctionBid.cs @@ -17,6 +17,8 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities public bool IsWinner { get; set; } public decimal BidPrice { get; set; } + public int AuctionId { get; set; } + [SkipValuesOnUpdate] public DateTime Created { get; set; } public DateTime Modified { get; set; } diff --git a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs index cfc544e..10f2a50 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Domains/Entities/Interfaces/IAuctionBid.cs @@ -5,5 +5,5 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Domains.Entities.Interfaces; public interface IAuctionBid : IAuctionBidDtoBase, ITimeStampInfo//, ISoftRemoveEntityInt { - + public int AuctionId { get; set; } } \ No newline at end of file diff --git a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs index 3fa05eb..ac8a269 100644 --- a/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs +++ b/Nop.Plugin.Misc.AuctionPlugin/Infrastructure/RouteProvider.cs @@ -38,6 +38,14 @@ namespace Nop.Plugin.Misc.AuctionPlugin.Infrastructure pattern: "Admin/AuctionPlugin/AuctionList", defaults: new { controller = "AuctionPluginAdmin", action = "AuctionList" }); + endpointRouteBuilder.MapControllerRoute(name: AuctionDefaults.GetAuctionByIdRouteName, + pattern: "Admin/AuctionPlugin/GetAuctionById/{auctionId}", + defaults: new { controller = "AuctionPluginAdmin", action = "GetAuctionById" }); + + endpointRouteBuilder.MapControllerRoute(name: AuctionDefaults.SaveAuctionRouteName, + pattern: "Admin/AuctionPlugin/SaveAuction", + defaults: new { controller = "AuctionPluginAdmin", action = "SaveAuction" }); + endpointRouteBuilder.MapControllerRoute(name: AuctionDefaults.TestPageRouteName, pattern: "Admin/Auction/TestPage", defaults: new { controller = "AuctionPluginAdmin", action = "TestPage" });