Order edit saját kézben

This commit is contained in:
Adam 2025-10-24 19:33:21 +02:00
parent 6aff0228eb
commit ffa4e2cc31
4 changed files with 77 additions and 12 deletions

View File

@ -15,20 +15,25 @@ using Nop.Core.Domain.Orders;
using Nop.Core.Domain.Payments;
using Nop.Core.Domain.Shipping;
using Nop.Core.Domain.Tax;
using Nop.Core.Events;
using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer;
using Nop.Plugin.Misc.FruitBankPlugin.Factories;
using Nop.Plugin.Misc.FruitBankPlugin.Models.Orders;
using Nop.Services.Catalog;
using Nop.Services.Common;
using Nop.Services.Customers;
using Nop.Services.Localization;
using Nop.Services.Logging;
using Nop.Services.Messages;
using Nop.Services.Orders;
using Nop.Services.Payments;
using Nop.Services.Plugins;
using Nop.Services.Security;
using Nop.Web.Areas.Admin.Controllers;
using Nop.Web.Areas.Admin.Factories;
using Nop.Web.Areas.Admin.Models.Orders;
using Nop.Web.Framework;
using Nop.Web.Framework.Controllers;
using Nop.Web.Framework.Mvc.Filters;
using System.Text.Json.Serialization;
using System.Xml;
@ -53,11 +58,29 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
private readonly IStoreContext _storeContext;
private readonly IWorkContext _workContext;
private readonly IPriceCalculationService _priceCalculationService;
protected readonly IEventPublisher _eventPublisher;
protected readonly ILocalizationService _localizationService;
protected readonly ICustomerActivityService _customerActivityService;
// ... other dependencies
private readonly ILogger _logger;
private readonly Mango.Nop.Core.Loggers.ILogger _logger;
public CustomOrderController(FruitBankDbContext fruitBankDbContext, IOrderService orderService,IPriceCalculationService priceCalculationService, IOrderModelFactory orderModelFactory, ICustomOrderSignalREndpointServer customOrderSignalREndpoint, IPermissionService permissionService, IGenericAttributeService genericAttributeService, INotificationService notificationService, ICustomerService customerService, IProductService productService, IEnumerable<IAcLogWriterBase> logWriters, IStoreContext storeContext, IWorkContext workContext)
public CustomOrderController(FruitBankDbContext fruitBankDbContext,
IOrderService orderService,
IPriceCalculationService priceCalculationService,
IOrderModelFactory orderModelFactory,
ICustomOrderSignalREndpointServer customOrderSignalREndpoint,
IPermissionService permissionService,
IGenericAttributeService genericAttributeService,
INotificationService notificationService,
ICustomerService customerService,
IProductService productService,
IEnumerable<IAcLogWriterBase> logWriters,
IStoreContext storeContext,
IWorkContext workContext,
IEventPublisher eventPublisher,
ILocalizationService localizationService,
ICustomerActivityService customerActivityService)
{
_logger = new Logger<CustomOrderController>(logWriters.ToArray());
@ -73,6 +96,9 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
_storeContext = storeContext;
_workContext = workContext;
_priceCalculationService = priceCalculationService;
_eventPublisher = eventPublisher;
_localizationService = localizationService;
_customerActivityService = customerActivityService;
// ... initialize other deps
}
@ -114,6 +140,40 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
return valami;
}
[HttpPost, ActionName("List")]
[FormValueRequired("go-to-order-by-number")]
[CheckPermission(StandardPermission.Orders.ORDERS_VIEW)]
public virtual async Task<IActionResult> GoToOrderId(OrderSearchModel model)
{
var order = await _orderService.GetOrderByCustomOrderNumberAsync(model.GoDirectlyToCustomOrderNumber);
if (order == null)
return await List();
return RedirectToAction("Edit", new { id = order.Id });
}
[HttpGet]
//[Route("Edit/{id}")]
[CheckPermission(StandardPermission.Orders.ORDERS_VIEW)]
public virtual async Task<IActionResult> Edit(int id)
{
//try to get an order with the specified id
var order = await _orderService.GetOrderByIdAsync(id);
if (order == null || order.Deleted)
return RedirectToAction("List");
//a vendor does not have access to this functionality
if (await _workContext.GetCurrentVendorAsync() != null)
return RedirectToAction("List");
//prepare model
var model = await _orderModelFactory.PrepareOrderModelAsync(null, order);
return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Order/Edit.cshtml", model);
}
public async Task<OrderListModelExtended> GetOrderListModelByFilter(OrderSearchModel searchModel)
{
//return _customOrderService.

View File

@ -3,7 +3,7 @@
@{
//page title
ViewBag.PageTitle = T("Admin.Orders.EditOrderDetails").Text + "ANYÁD";
ViewBag.PageTitle = T("Admin.Orders.EditOrderDetails").Text;
//active menu item (system name)
NopHtml.SetActiveMenuItemSystemName("Orders");
}
@ -65,13 +65,13 @@
<nop-cards id="order-cards">
@await Component.InvokeAsync(typeof(AdminWidgetViewComponent), new { widgetZone = AdminWidgetZones.OrderDetailsBlock, additionalData = Model })
<nop-card asp-name="order-info" asp-icon="fas fa-info" asp-title="@T("Admin.Orders.Info")" asp-hide-block-attribute-name="@hideInfoBlockAttributeName" asp-hide="@hideInfoBlock" asp-advanced="false">@await Html.PartialAsync("_OrderDetails.Info", Model)</nop-card>
<nop-card asp-name="order-billing-shipping" asp-icon="fas fa-truck" asp-title="@T("Admin.Orders.BillingShippingInfo")" asp-hide-block-attribute-name="@hideBillingAndShippingBlockAttributeName" asp-hide="@hideBillingAndShippingBlock" asp-advanced="false">@await Html.PartialAsync("_OrderDetails.BillingShipping", Model)</nop-card>
<nop-card asp-name="order-info" asp-icon="fas fa-info" asp-title="@T("Admin.Orders.Info")" asp-hide-block-attribute-name="@hideInfoBlockAttributeName" asp-hide="@hideInfoBlock" asp-advanced="false">@await Html.PartialAsync("~/Areas/Admin/Views/Order/_OrderDetails.Info.cshtml", Model)</nop-card>
<nop-card asp-name="order-billing-shipping" asp-icon="fas fa-truck" asp-title="@T("Admin.Orders.BillingShippingInfo")" asp-hide-block-attribute-name="@hideBillingAndShippingBlockAttributeName" asp-hide="@hideBillingAndShippingBlock" asp-advanced="false">@await Html.PartialAsync("~/Areas/Admin/Views/Order/_OrderDetails.BillingShipping.cshtml", Model)</nop-card>
<nop-card asp-name="order-products" asp-icon="fas fa-table-list" asp-title="@T("Admin.Orders.Products")" asp-hide-block-attribute-name="@hideProductsBlockAttributeName" asp-hide="@hideProductsBlock" asp-advanced="true">@await Html.PartialAsync("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Order/_CustomOrderDetails.Products.cshtml", Model)</nop-card>
@if (!Model.IsLoggedInAsVendor)
{
<nop-card asp-name="order-notes" asp-icon="far fa-sticky-note" asp-title="@T("Admin.Orders.OrderNotes")" asp-hide-block-attribute-name="@hideNotesBlockAttributeName" asp-hide="@hideNotesBlock" asp-advanced="true">@await Html.PartialAsync("_OrderDetails.Notes", Model)</nop-card>
<nop-card asp-name="order-notes" asp-icon="far fa-sticky-note" asp-title="@T("Admin.Orders.OrderNotes")" asp-hide-block-attribute-name="@hideNotesBlockAttributeName" asp-hide="@hideNotesBlock" asp-advanced="true">@await Html.PartialAsync("~/Areas/Admin/Views/Order/_OrderDetails.Notes.cshtml", Model)</nop-card>
}
</nop-cards>

View File

@ -23,15 +23,15 @@
Fruitbank @T("Admin.Catalog.Products")
</h1>
<div class="float-right">
<a asp-action="Create" class="btn btn-primary">
<a asp-controller="Product" asp-action="Create" class="btn btn-primary">
<i class="fas fa-square-plus"></i>
@T("Admin.Common.AddNew")
</a>
<a asp-action="BulkEdit" class="btn btn-info">
<a asp-controller="Product" asp-action="BulkEdit" class="btn btn-info">
<i class="fas fa-pen"></i>
@T("Admin.Catalog.Products.BulkEdit")
</a>
<button asp-action="DownloadCatalogPDF" type="submit" name="download-catalog-pdf" class="btn bg-purple">
<button asp-controller="Product" asp-action="DownloadCatalogPDF" type="submit" name="download-catalog-pdf" class="btn bg-purple">
<i class="far fa-file-pdf"></i>
@T("Admin.Catalog.Products.List.DownloadPDF")
</button>
@ -47,7 +47,7 @@
<ul class="dropdown-menu" role="menu">
<li class="dropdown-item">
<button asp-action="ExportToXml" type="submit" name="exportxml-all">
<button asp-controller="Product" asp-action="ExportToXml" type="submit" name="exportxml-all">
<i class="far fa-file-code"></i>
@T("Admin.Common.ExportToXml.All")
</button>
@ -61,7 +61,7 @@
</li>
<li class="dropdown-divider"></li>
<li class="dropdown-item">
<button asp-action="ExportToExcel" type="submit" name="exportexcel-all">
<button asp-controller="Product" asp-action="ExportToExcel" type="submit" name="exportexcel-all">
<i class="far fa-file-excel"></i>
@T("Admin.Common.ExportToExcel.All")
</button>

View File

@ -141,10 +141,15 @@ public class RouteProvider : IRouteProvider
name: "Plugin.FruitBank.Admin.Invoice.CreateInvoice",
pattern: "Admin/Invoice/CreateInvoice",
defaults: new { controller = "Invoice", action = "CreateInvoice", area = AreaNames.ADMIN });
endpointRouteBuilder.MapControllerRoute(
name: "Plugin.FruitBank.Admin.Order.Edit",
pattern: "Admin/Order/Edit/{id}",
defaults: new { controller = "CustomOrder", action = "Edit", area = AreaNames.ADMIN });
}
/// <summary>
/// Gets a priority of route provider
/// </summary>
public int Priority => 3000;
public int Priority => 4000;
}