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

125 lines
5.1 KiB
C#

using AyCode.Core.Loggers;
using AyCode.Services.SignalRs;
using FruitBank.Common.Dtos;
using FruitBank.Common.Entities;
using FruitBank.Common.Interfaces;
using FruitBank.Common.Server.Interfaces;
using FruitBank.Common.SignalRs;
using Mango.Nop.Core.Loggers;
using Nop.Core;
using Nop.Core.Domain.Orders;
using Nop.Plugin.Misc.FruitBankPlugin.Controllers;
using Nop.Plugin.Misc.FruitBankPlugin.Domains.DataLayer;
namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers;
public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, IWorkContext workContext, IEnumerable<IAcLogWriterBase> logWriters) : ICustomOrderSignalREndpointServer
{
private readonly ILogger _logger = new Logger<CustomOrderSignalREndpoint>(logWriters.ToArray());
[SignalR(SignalRTags.GetAllOrderDtos)]
public async Task<List<OrderDto>> GetAllOrderDtos()
{
return await ctx.OrderDtos.GetAll(true).ToListAsync();
}
[SignalR(SignalRTags.GetOrderDtoById)]
public async Task<OrderDto> GetOrderDtoById(int orderId)
{
return await ctx.OrderDtos.GetByIdAsync(orderId, true);
}
[SignalR(SignalRTags.GetPendingOrderDtos)]
public async Task<List<OrderDto>> GetPendingOrderDtos()
{
return await ctx.OrderDtos.GetAllByOrderStatus(OrderStatus.Pending).ToListAsync();
}
[SignalR(SignalRTags.GetAllOrderDtoByIds)]
public async Task<List<OrderDto>> GetAllOrderDtoByIds(int[] orderIds)
{
return await ctx.OrderDtos.GetAllByIds(orderIds).ToListAsync();
}
[SignalR(SignalRTags.StartMeasuring)]
public async Task<OrderDto> StartMeasuring(int orderId, int userId)
{
_logger.Detail($"StartMeasuring invoked; orderId: {orderId}; userId: {userId}");
if (!await ctx.StartMeasuringSafeAsync(orderId, userId)) return null;
return await ctx.OrderDtos.GetByIdAsync(orderId, true);
}
[SignalR(SignalRTags.SetOrderStatusToComplete)]
public async Task<OrderDto> SetOrderStatusToComplete(int orderId, int revisorId)
{
_logger.Detail($"SetOrderStatusToComplete invoked; orderId: {orderId}; revisorId: {revisorId}");
if (!await ctx.SetOrderStatusToCompleteSafeAsync(orderId, revisorId)) return null;
return await ctx.OrderDtos.GetByIdAsync(orderId, true);
}
[SignalR(SignalRTags.AddOrUpdateMeasuredOrderItemPallet)]
public async Task<OrderItemPallet> AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet)
{
ArgumentNullException.ThrowIfNull(orderItemPallet);
_logger.Detail($"AddOrUpdateMeasuredOrderItemPallet invoked; {orderItemPallet}");
if (!await ctx.AddOrUpdateOrderItemPalletSafeAsync(orderItemPallet)) return null;
return await ctx.OrderItemPallets.GetByIdAsync(orderItemPallet.Id, false);
}
//[SignalR(SignalRTags.AddOrderItemPallet)]
//public async Task<OrderItemPallet> AddOrderItemPallet(OrderItemPallet orderItemPallet)
//{
// ArgumentNullException.ThrowIfNull(orderItemPallet);
// _logger.Detail($"AddOrderItemPallet invoked; {orderItemPallet}");
// if (!await ctx.AddOrderItemPalletSafeAsync(orderItemPallet)) return null;
// return await ctx.OrderItemPallets.GetByIdAsync(orderItemPallet.Id, false);
//}
//[SignalR(SignalRTags.UpdateOrderItemPallet)]
//public async Task<OrderItemPallet> UpdateOrderItemPallet(OrderItemPallet orderItemPallet)
//{
// ArgumentNullException.ThrowIfNull(orderItemPallet);
// _logger.Detail($"UpdateOrderItemPallet invoked; {orderItemPallet}");
// if (!await ctx.UpdateOrderItemPalletSafeAsync(orderItemPallet)) return null;
// return await ctx.OrderItemPallets.GetByIdAsync(orderItemPallet.Id, false);
//}
//[SignalR(SignalRTags.AddOrUpdateMeasuredOrderItemPallets)]
//public async Task<ShippingItem> AddOrUpdateMeasuredOrderItemPallets(List<OrderItemPallet> orderItemPallets)
//{
// // ArgumentNullException.ThrowIfNull(orderItemPallets);
// // _logger.Detail($"AddOrUpdateMeasuredOrderItemPallets invoked; count: {orderItemPallets.Count}");
// // if (orderItemPallets.Count == 0) return null;
// // var shippingItemId = orderItemPallets.FirstOrDefault()!.ShippingItemId;
// // if (shippingItemId <= 0 || orderItemPallets.Any(x => x.ShippingItemId != shippingItemId)) return null;
// // var shippingItem = await ctx.ShippingItems.GetByIdAsync(shippingItemId, false);
// // shippingItem.orderItemPallets = orderItemPallets.Where(sip => sip.IsValidMeasuringValues(shippingItem.IsMeasurable)).ToList();
// // return await UpdateMeasuredShippingItem(shippingItem);
// return null;
//}
//[SignalR(SignalRTags.AddOrUpdateMeasuredOrderItemPallet)]
//public async Task<OrderItemPallet> AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet)
//{
// ArgumentNullException.ThrowIfNull(orderItemPallet);
// _logger.Detail($"AddOrUpdateMeasuredOrderItemPallet invoked; {orderItemPallet}");
// if (!await ctx.AddOrUpdateOrderItemPalletSafeAsync(orderItemPallet)) return null;
// return await ctx.OrderItemPallets.GetByIdAsync(orderItemPallet.Id, false);
//}
}