Add MeasurementOwnerId; RevisorId generic attributes to Order; improvements, fixes, etc..
This commit is contained in:
parent
89aa10e07b
commit
c8434ed10f
|
|
@ -72,7 +72,8 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
|
|||
[NonAction] public Task<List<OrderDto>> GetAllOrderDtos() => _customOrderSignalREndpoint.GetAllOrderDtos();
|
||||
[NonAction]public Task<OrderDto> GetOrderDtoById(int orderId) => _customOrderSignalREndpoint.GetOrderDtoById(orderId);
|
||||
[NonAction]public Task<List<OrderDto>> GetPendingOrderDtos() => _customOrderSignalREndpoint.GetPendingOrderDtos();
|
||||
[NonAction]public Task<OrderDto> SetOrderStatusToComplete(int orderId) => _customOrderSignalREndpoint.SetOrderStatusToComplete(orderId);
|
||||
[NonAction] public Task<OrderDto> StartMeasuring(int orderId, int userId) => _customOrderSignalREndpoint.StartMeasuring(orderId, userId);
|
||||
[NonAction]public Task<OrderDto> SetOrderStatusToComplete(int orderId, int revisorId) => _customOrderSignalREndpoint.SetOrderStatusToComplete(orderId, revisorId);
|
||||
[NonAction] public Task<List<OrderDto>> GetAllOrderDtoByIds(int[] orderIds) => _customOrderSignalREndpoint.GetAllOrderDtoByIds(orderIds);
|
||||
[NonAction] public Task<OrderItemPallet> AddOrUpdateMeasuredOrderItemPallet(OrderItemPallet orderItemPallet) => _customOrderSignalREndpoint.AddOrUpdateMeasuredOrderItemPallet(orderItemPallet);
|
||||
#endregion CustomOrderSignalREndpoint
|
||||
|
|
@ -403,7 +404,6 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
|
|||
return Json(result);
|
||||
}
|
||||
|
||||
|
||||
//[HttpPost]
|
||||
//public async Task<IActionResult> CreateInvoice(int orderId)
|
||||
//{
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, IWorkContext wor
|
|||
[SignalR(SignalRTags.GetOrderDtoById)]
|
||||
public async Task<OrderDto> GetOrderDtoById(int orderId)
|
||||
{
|
||||
return await ctx.OrderDtos.GetByIdAsync(orderId);
|
||||
return await ctx.OrderDtos.GetByIdAsync(orderId, true);
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.GetPendingOrderDtos)]
|
||||
|
|
@ -41,13 +41,22 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, IWorkContext wor
|
|||
return await ctx.OrderDtos.GetAllByIds(orderIds).ToListAsync();
|
||||
}
|
||||
|
||||
[SignalR(SignalRTags.SetOrderStatusToComplete)]
|
||||
public async Task<OrderDto> SetOrderStatusToComplete(int orderId)
|
||||
[SignalR(SignalRTags.StartMeasuring)]
|
||||
public async Task<OrderDto> StartMeasuring(int orderId, int userId)
|
||||
{
|
||||
_logger.Detail($"SetOrderStatusToComplete invoked; orderId: {orderId}");
|
||||
_logger.Detail($"StartMeasuring invoked; orderId: {orderId}; userId: {userId}");
|
||||
|
||||
if (!await ctx.SetOrderStatusToCompleteSafe(orderId)) return null;
|
||||
return await ctx.OrderDtos.GetByIdAsync(orderId);
|
||||
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)]
|
||||
|
|
@ -55,8 +64,7 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, IWorkContext wor
|
|||
{
|
||||
ArgumentNullException.ThrowIfNull(orderItemPallet);
|
||||
|
||||
var customer = await workContext.GetCurrentCustomerAsync();
|
||||
_logger.Detail($"AddOrUpdateMeasuredOrderItemPallet invoked; {orderItemPallet}; CustomerId: {customer?.Id}");
|
||||
_logger.Detail($"AddOrUpdateMeasuredOrderItemPallet invoked; {orderItemPallet}");
|
||||
|
||||
if (!await ctx.AddOrUpdateOrderItemPalletSafeAsync(orderItemPallet)) return null;
|
||||
return await ctx.OrderItemPallets.GetByIdAsync(orderItemPallet.Id, false);
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers
|
|||
|
||||
public ManagementPageController(IPermissionService permissionService, FruitBankDbContext fruitBankDbContext, AICalculationService aiCalculationService, OpenAIApiService openAIApiService, IEnumerable<IAcLogWriterBase> logWriters)
|
||||
{
|
||||
_logger = new Logger<CustomOrderController>(logWriters.ToArray());
|
||||
_logger = new Logger<ManagementPageController>(logWriters.ToArray());
|
||||
|
||||
_permissionService = permissionService;
|
||||
_dbContext = fruitBankDbContext;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#nullable enable
|
||||
using AyCode.Core.Extensions;
|
||||
using AyCode.Core.Loggers;
|
||||
using AyCode.Utils.Extensions;
|
||||
using FruitBank.Common.Entities;
|
||||
|
|
@ -371,20 +372,38 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
return true;
|
||||
});
|
||||
}
|
||||
public async Task<bool> StartMeasuringSafeAsync(int orderId, int revisorId)
|
||||
=> await TransactionSafeAsync(async _ => await StartMeasuringAsync(orderId, revisorId) != null);
|
||||
|
||||
public async Task<bool> SetOrderStatusToCompleteSafe(int orderId)
|
||||
=> await TransactionSafeAsync(async _ => await SetOrderStatusToComplete(orderId) != null);
|
||||
|
||||
public async Task<OrderDto?> SetOrderStatusToComplete(int orderId)
|
||||
public async Task<OrderDto?> StartMeasuringAsync(int orderId, int customerId)
|
||||
{
|
||||
var orderDto = await OrderDtos.GetByIdAsync(orderId);
|
||||
if (customerId <= 0) return null;
|
||||
|
||||
var orderDto = await OrderDtos.GetByIdAsync(orderId, true);
|
||||
if (orderDto == null || orderDto.MeasurementOwnerId > 0) return orderDto;
|
||||
|
||||
await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, int>(orderDto.Id, nameof(IOrderDto.MeasurementOwnerId), customerId);
|
||||
|
||||
return orderDto;
|
||||
}
|
||||
|
||||
public async Task<bool> SetOrderStatusToCompleteSafeAsync(int orderId, int revisorId)
|
||||
=> await TransactionSafeAsync(async _ => await SetOrderStatusToCompleteAsync(orderId, revisorId) != null);
|
||||
|
||||
public async Task<OrderDto?> SetOrderStatusToCompleteAsync(int orderId, int revisorId)
|
||||
{
|
||||
if (revisorId <= 0) return null;
|
||||
|
||||
var orderDto = await OrderDtos.GetByIdAsync(orderId, true);
|
||||
if (orderDto == null) return null;
|
||||
|
||||
if (!orderDto.IsMeasured || orderDto.OrderStatus == OrderStatus.Complete) return null; //throw new Exception($"SetOrderDtoToComplete; orderDto.IsMeasured == false; {orderDto}");
|
||||
if (!orderDto.IsMeasuredAndValid() || orderDto.OrderStatus == OrderStatus.Complete) return null; //throw new Exception($"SetOrderDtoToComplete; orderDto.IsMeasured == false; {orderDto}");
|
||||
orderDto.OrderStatus = OrderStatus.Complete;
|
||||
|
||||
await OrderDtos.UpdateAsync(orderDto);
|
||||
|
||||
await _fruitBankAttributeService.InsertOrUpdateGenericAttributeAsync<Order, int>(orderDto.Id, nameof(IOrderDto.RevisorId), revisorId);
|
||||
|
||||
foreach (var orderItemDto in orderDto.OrderItemDtos)
|
||||
{
|
||||
if (!orderItemDto.IsMeasurable) continue;
|
||||
|
|
@ -443,7 +462,11 @@ public class FruitBankDbContext : MgDbContextBase,
|
|||
if (orderItemPallet.OrderItemDto?.ProductDto == null) orderItemDto = await OrderItemDtos.GetByIdAsync(orderItemPallet.OrderItemId, true);
|
||||
else orderItemDto = orderItemPallet.OrderItemDto;
|
||||
|
||||
if (orderItemDto == null || orderItemPallet.OrderItemId != orderItemDto.Id) return false;
|
||||
if (orderItemDto == null || orderItemPallet.OrderItemId != orderItemDto.Id || //orderItemDto.IsOtherMeasuringInProgress(orderItemPallet.CreatorId) ||
|
||||
orderItemPallet.TrayQuantity > orderItemDto.Quantity || !orderItemPallet.IsValidSafeMeasuringValues()) return false;
|
||||
|
||||
orderItemDto.OrderItemPallets.UpdateCollection(orderItemPallet, false);
|
||||
if (orderItemDto.TrayQuantity > orderItemDto.Quantity) return false;
|
||||
|
||||
orderItemPallet.SetupCustomItemPalletMeauringValues(orderItemDto.IsMeasurable);
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -30,7 +30,8 @@ public class OrderDtoDbTable : MgDtoDbTableBase<OrderDto, Order>
|
|||
|
||||
public Task<OrderDto> GetByIdAsync(int orderId, bool loadRelations) => GetAll(loadRelations).Where(x => x.Id == orderId).FirstOrDefaultAsync(null);
|
||||
|
||||
public IQueryable<OrderDto> GetAllByOrderStatus(OrderStatus orderStatus, bool loadRelations = true) => GetAll(loadRelations).Where(o => o.OrderStatusId == (int)orderStatus);
|
||||
public IQueryable<OrderDto> GetAllByOrderStatus(OrderStatus orderStatus, bool loadRelations = true)
|
||||
=> GetAll(loadRelations);//.Where(o => o.OrderStatusId == (int)orderStatus);
|
||||
|
||||
public IQueryable<OrderDto> GetAllByIds(IEnumerable<int> orderIds, bool loadRelations = true) => GetAll(loadRelations).Where(o => orderIds.Contains(o.Id));
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue