Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin/Areas/Admin/Controllers/CustomOrderController.cs

120 lines
4.8 KiB
C#

using AyCode.Services.SignalRs;
using FruitBank.Common.Dtos;
using FruitBank.Common.Interfaces;
using FruitBank.Common.Server.Interfaces;
using FruitBank.Common.SignalRs;
using Microsoft.AspNetCore.Mvc;
using Nop.Core.Domain.Orders;
using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer;
using Nop.Plugin.Misc.FruitBankPlugin.Factories;
using Nop.Plugin.Misc.FruitBankPlugin.Models;
using Nop.Services.Orders;
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.Mvc.Filters;
namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
{
[Area(AreaNames.ADMIN)]
[AuthorizeAdmin]
public class CustomOrderController : BaseAdminController, ICustomOrderSignalREndpointServer
{
private readonly IOrderService _orderService;
private readonly CustomOrderModelFactory _orderModelFactory;
private readonly ICustomOrderSignalREndpointServer _customOrderSignalREndpoint;
private readonly IPermissionService _permissionService;
// ... other dependencies
public CustomOrderController(IOrderService orderService, IOrderModelFactory orderModelFactory, ICustomOrderSignalREndpointServer customOrderSignalREndpoint, IPermissionService permissionService)
{
_orderService = orderService;
_orderModelFactory = orderModelFactory as CustomOrderModelFactory;
_customOrderSignalREndpoint = customOrderSignalREndpoint;
_permissionService = permissionService;
// ... initialize other deps
}
#region CustomOrderSignalREndpoint
public Task<List<OrderDto>> GetAllOrderDtos()
=> _customOrderSignalREndpoint.GetAllOrderDtos();
public Task<OrderDto> GetOrderDtoById(int orderId)
=> _customOrderSignalREndpoint.GetOrderDtoById(orderId);
public Task<List<OrderDto>> GetPendingOrderDtos()
=> _customOrderSignalREndpoint.GetPendingOrderDtos();
#endregion CustomOrderSignalREndpoint
[CheckPermission(StandardPermission.Orders.ORDERS_VIEW)]
public virtual async Task<IActionResult> List(List<int> orderStatuses = null, List<int> paymentStatuses = null, List<int> shippingStatuses = null)
{
//prepare model
var model = await _orderModelFactory.PrepareOrderSearchModelAsync(new OrderSearchModel
{
OrderStatusIds = orderStatuses,
PaymentStatusIds = paymentStatuses,
ShippingStatusIds = shippingStatuses,
});
return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Order/List.cshtml", model);
}
[HttpPost]
[CheckPermission(StandardPermission.Orders.ORDERS_VIEW)]
public async Task<IActionResult> OrderList(OrderSearchModel searchModel)
{
//prepare model
//var orderListModel = await GetOrderListModelByFilter(searchModel);
var orderListModel = new OrderListModel();
var valami = Json(orderListModel);
Console.WriteLine(valami);
return valami;
}
public async Task<OrderListModelExtended> GetOrderListModelByFilter(OrderSearchModel searchModel)
{
//return _customOrderService.
var orderListModel = await _orderModelFactory.PrepareOrderListModelExtendedAsync(searchModel);
Console.WriteLine($"Total: {orderListModel.RecordsTotal}, Data Count: {orderListModel.Data.Count()}");
foreach (var item in orderListModel.Data.Take(3))
{
Console.WriteLine($"Order: {item.Id}, {item.CustomOrderNumber}");
}
return orderListModel;
}
public async Task<OrderListModelExtended> GetPendingOrderListModel()
{
var orderSearchModel = new OrderSearchModel
{
OrderStatusIds = new List<int> { (int)OrderStatus.Pending }
};
return await GetOrderListModelByFilter(orderSearchModel);
}
public virtual IActionResult Test()
{
// Your custom logic here
// This will use your custom List.cshtml view
return View("~/Plugins/Misc.FruitBankPlugin/Areas/Admin/Views/Order/Test.cshtml");
}
//[HttpPost]
//[CheckPermission(Nop.Services.Security.StandardPermission.Orders.ORDERS_VIEW)]
//public virtual async Task<IActionResult> OrderList(OrderSearchModel searchModel)
//{
// //prepare model
// var model = await _orderModelFactory.PrepareOrderListModelAsync(searchModel);
// return Json(model);
//}
}
}