improvements, fixes, etc...

This commit is contained in:
Loretta 2025-11-24 08:27:02 +01:00
parent 7c07811ef6
commit 1673f1fd90
7 changed files with 74 additions and 21 deletions

View File

@ -1,5 +1,6 @@
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using DocumentFormat.OpenXml.Drawing;
using FruitBank.Common.Dtos; using FruitBank.Common.Dtos;
using FruitBank.Common.Entities; using FruitBank.Common.Entities;
using FruitBank.Common.Interfaces; using FruitBank.Common.Interfaces;
@ -20,14 +21,16 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Areas.Admin.Controllers;
public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, SignalRSendToClientService sendToClient, IPriceCalculationService customPriceCalculationService,IEventPublisher eventPublisher, IWorkContext workContext, IEnumerable<IAcLogWriterBase> logWriters) public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, SignalRSendToClientService sendToClient, IPriceCalculationService customPriceCalculationService,IEventPublisher eventPublisher, IWorkContext workContext, IEnumerable<IAcLogWriterBase> logWriters)
: ICustomOrderSignalREndpointServer : ICustomOrderSignalREndpointServer
{ {
private const int FromOrderDays = -14; private const int LastOrderDays = 15;
private readonly ILogger _logger = new Logger<CustomOrderSignalREndpoint>(logWriters.ToArray()); private readonly ILogger _logger = new Logger<CustomOrderSignalREndpoint>(logWriters.ToArray());
[SignalR(SignalRTags.GetAllOrderDtos)] [SignalR(SignalRTags.GetAllOrderDtos)]
public async Task<List<OrderDto>> GetAllOrderDtos() public async Task<List<OrderDto>> GetAllOrderDtos()
{ {
var fromDateUtc = DateTime.UtcNow.Date.AddDays(FromOrderDays); _logger.Detail($"GetAllOrderDtos invoked; lastDaysCount: {LastOrderDays}");
return await ctx.OrderDtos.GetAll(true).Where(o => o.CreatedOnUtc > fromDateUtc).ToListAsync();
var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastOrderDays);
return await ctx.OrderDtos.GetAll(true).Where(o => o.CreatedOnUtc >= fromDateUtc).ToListAsync();
} }
[SignalR(SignalRTags.GetOrderDtoById)] [SignalR(SignalRTags.GetOrderDtoById)]
@ -45,8 +48,15 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, SignalRSendToCli
[SignalR(SignalRTags.GetPendingOrderDtosForMeasuring)] [SignalR(SignalRTags.GetPendingOrderDtosForMeasuring)]
public async Task<List<OrderDto>> GetPendingOrderDtosForMeasuring(int lastDaysCount) public async Task<List<OrderDto>> GetPendingOrderDtosForMeasuring(int lastDaysCount)
{ {
_logger.Detail($"GetPendingOrderDtosForMeasuring invoked; lastDaysCount: {lastDaysCount}");
var startTime = DateTime.Now;
var fromDate = DateTime.Now.AddDays(-lastDaysCount); var fromDate = DateTime.Now.AddDays(-lastDaysCount);
return await ctx.OrderDtos.GetAllForMeasuring(fromDate).ToListAsync();
var orders = await ctx.OrderDtos.GetAllForMeasuring(fromDate).ToListAsync();
_logger.Detail($"GetPendingOrderDtosForMeasuring; ordersCount: {orders.Count}; dbResponse: {(DateTime.Now - startTime).TotalSeconds} sec.");
return orders;
} }
[SignalR(SignalRTags.GetOrderDatesForMeasuring)] [SignalR(SignalRTags.GetOrderDatesForMeasuring)]
@ -78,8 +88,10 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, SignalRSendToCli
[SignalR(SignalRTags.GetAllOrderItemDtos)] [SignalR(SignalRTags.GetAllOrderItemDtos)]
public async Task<List<OrderItemDto>> GetAllOrderItemDtos() public async Task<List<OrderItemDto>> GetAllOrderItemDtos()
{ {
var fromDateUtc = DateTime.UtcNow.Date.AddDays(FromOrderDays); _logger.Detail($"GetAllOrderItemDtos invoked; lastDaysCount: {LastOrderDays}");
return await ctx.OrderItemDtos.GetAll(true).Where(oi => oi.OrderDto.CreatedOnUtc > fromDateUtc).ToListAsync();
var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastOrderDays);
return await ctx.OrderItemDtos.GetAll(true).Where(oi => oi.OrderDto == null || oi.OrderDto.CreatedOnUtc >= fromDateUtc).ToListAsync();
} }
[SignalR(SignalRTags.GetAllOrderItemDtoByOrderId)] [SignalR(SignalRTags.GetAllOrderItemDtoByOrderId)]
@ -103,7 +115,10 @@ public class CustomOrderSignalREndpoint(FruitBankDbContext ctx, SignalRSendToCli
[SignalR(SignalRTags.GetAllOrderItemPallets)] [SignalR(SignalRTags.GetAllOrderItemPallets)]
public async Task<List<OrderItemPallet>> GetAllOrderItemPallets() public async Task<List<OrderItemPallet>> GetAllOrderItemPallets()
{ {
return await ctx.OrderItemPallets.GetAll(true).ToListAsync(); _logger.Detail($"GetAllOrderItemPallets invoked; lastDaysCount: {LastOrderDays}");
var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastOrderDays);
return await ctx.OrderItemPallets.GetAll(true).Where(oip => oip.OrderItemDto.OrderDto == null || oip.OrderItemDto.OrderDto.CreatedOnUtc >= fromDateUtc).ToListAsync();
} }
[SignalR(SignalRTags.GetAllOrderItemPalletByOrderItemId)] [SignalR(SignalRTags.GetAllOrderItemPalletByOrderItemId)]
public async Task<List<OrderItemPallet>> GetAllOrderItemPalletByOrderItemId(int orderItemId) public async Task<List<OrderItemPallet>> GetAllOrderItemPalletByOrderItemId(int orderItemId)

View File

@ -1,4 +1,8 @@
using AyCode.Core.Extensions; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AyCode.Core.Extensions;
using AyCode.Core.Loggers; using AyCode.Core.Loggers;
using AyCode.Services.SignalRs; using AyCode.Services.SignalRs;
using DocumentFormat.OpenXml.Office2010.Excel; using DocumentFormat.OpenXml.Office2010.Excel;
@ -37,6 +41,7 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
IEnumerable<IAcLogWriterBase> logWriters) IEnumerable<IAcLogWriterBase> logWriters)
: BasePluginController, IFruitBankDataControllerServer : BasePluginController, IFruitBankDataControllerServer
{ {
private const int LastShippingDays = 15;
private readonly ILogger _logger = new Logger<FruitBankDataController>(logWriters.ToArray()); private readonly ILogger _logger = new Logger<FruitBankDataController>(logWriters.ToArray());
[SignalR(SignalRTags.ProcessAndSaveFullShippingJson)] [SignalR(SignalRTags.ProcessAndSaveFullShippingJson)]
@ -93,18 +98,24 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
[SignalR(SignalRTags.GetShippings)] [SignalR(SignalRTags.GetShippings)]
public async Task<List<Shipping>> GetShippings() public async Task<List<Shipping>> GetShippings()
{ {
_logger.Detail($"GetShippings invoked"); _logger.Detail($"GetShippings invoked; lastDaysCount: {LastShippingDays}");
return await ctx.Shippings.GetAll(true).ToListAsync(); var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastShippingDays);
return await ctx.Shippings.GetAll(true).Where(s => s.ShippingDate >= fromDateUtc).ToListAsync();
//return await ctx.Shippings.Table.LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems).ToListAsync(); //return await ctx.Shippings.Table.LoadWith(sd => sd.ShippingDocuments).ThenLoad(si => si.ShippingItems).ToListAsync();
} }
[SignalR(SignalRTags.GetNotMeasuredShippings)] [SignalR(SignalRTags.GetNotMeasuredShippings)]
public async Task<List<Shipping>> GetNotMeasuredShippings() public async Task<List<Shipping>> GetNotMeasuredShippings()
{ {
_logger.Detail($"GetNotMeasuredShippings invoked"); _logger.Detail($"GetNotMeasuredShippings invoked; lastDaysCount: {LastShippingDays}");
var startTime = DateTime.Now;
var shippings = await ctx.Shippings.GetAllNotMeasured(true, LastShippingDays).ToListAsync();
_logger.Detail($"GetNotMeasuredShippings; shippingsCount: {shippings.Count}; dbResponse: {(DateTime.Now - startTime).TotalSeconds} sec.");
return shippings;
return await ctx.Shippings.GetAllNotMeasured(true).ToListAsync();
} }
[SignalR(SignalRTags.GetShippingById)] [SignalR(SignalRTags.GetShippingById)]
@ -140,9 +151,11 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
[SignalR(SignalRTags.GetShippingItems)] [SignalR(SignalRTags.GetShippingItems)]
public async Task<List<ShippingItem>> GetShippingItems() public async Task<List<ShippingItem>> GetShippingItems()
{ {
_logger.Detail($"GetShippingItems invoked"); _logger.Detail($"GetShippingItems invoked; lastDaysCount: {LastShippingDays}");
return await ctx.ShippingItems.GetAll(true).ToListAsync(); var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastShippingDays);
return await ctx.ShippingItems.GetAll(true).Where(si => si.ShippingDocument.Shipping == null ||
si.ShippingDocument.Shipping.ShippingDate >= fromDateUtc).ToListAsync();
} }
[SignalR(SignalRTags.GetShippingItemsByDocumentId)] [SignalR(SignalRTags.GetShippingItemsByDocumentId)]
@ -161,6 +174,14 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
return await ctx.ShippingItems.GetAllByShippingIdAsync(shippingId, true).ToListAsync(); return await ctx.ShippingItems.GetAllByShippingIdAsync(shippingId, true).ToListAsync();
} }
[SignalR(SignalRTags.GetShippingItemsByPartnerId)]
public async Task<List<ShippingItem>> GetShippingItemsByPartnerId(int partnerId)
{
_logger.Detail($"GetShippingItemsByPartnerId invoked");
return await ctx.ShippingItems.GetAllByPartnerIdAsync(partnerId, true).ToListAsync();
}
[SignalR(SignalRTags.GetShippingItemById)] [SignalR(SignalRTags.GetShippingItemById)]
public async Task<ShippingItem> GetShippingItemById(int id) public async Task<ShippingItem> GetShippingItemById(int id)
{ {
@ -203,6 +224,17 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
return await ctx.ShippingItems.GetByIdAsync(shippingItem.Id, shippingItem.ShippingDocument != null); return await ctx.ShippingItems.GetByIdAsync(shippingItem.Id, shippingItem.ShippingDocument != null);
} }
[SignalR(SignalRTags.GetShippingItemPallets)]
public async Task<List<ShippingItemPallet>> GetShippingItemPallets()
{
_logger.Detail($"GetShippingItemPallets invoked; lastDaysCount: {LastShippingDays}");
var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastShippingDays);
return await ctx.ShippingItemPallets.GetAll(true).Where(sip => sip.ShippingItem.ShippingDocument.Shipping == null ||
sip.ShippingItem.ShippingDocument.Shipping.ShippingDate >= fromDateUtc).ToListAsync();
}
[SignalR(SignalRTags.AddShippingItemPallet)] [SignalR(SignalRTags.AddShippingItemPallet)]
public async Task<ShippingItemPallet> AddShippingItemPallet(ShippingItemPallet shippingItemPallet) public async Task<ShippingItemPallet> AddShippingItemPallet(ShippingItemPallet shippingItemPallet)
{ {
@ -259,9 +291,10 @@ namespace Nop.Plugin.Misc.FruitBankPlugin.Controllers
[SignalR(SignalRTags.GetShippingDocuments)] [SignalR(SignalRTags.GetShippingDocuments)]
public async Task<List<ShippingDocument>> GetShippingDocuments() public async Task<List<ShippingDocument>> GetShippingDocuments()
{ {
_logger.Detail($"GetShippingDocuments invoked"); _logger.Detail($"GetShippingDocuments invoked; lastDaysCount: {LastShippingDays}");
return await ctx.ShippingDocuments.GetAll(true).ToListAsync(); var fromDateUtc = DateTime.UtcNow.Date.AddDays(-LastShippingDays);
return await ctx.ShippingDocuments.GetAll(true).Where(sd => sd.Shipping == null || sd.Shipping.ShippingDate >= fromDateUtc).ToListAsync();
} }
[SignalR(SignalRTags.GetShippingDocumentById)] [SignalR(SignalRTags.GetShippingDocumentById)]

View File

@ -21,6 +21,7 @@ public class OrderItemDtoDbTable : MgDtoDbTableBase<OrderItemDto, OrderItem>
{ {
return GetAll() return GetAll()
.LoadWith(oi => oi.GenericAttributes) .LoadWith(oi => oi.GenericAttributes)
.LoadWith(oi => oi.OrderDto).ThenLoad(o => o.Customer)
.LoadWith(oi => oi.OrderDto).ThenLoad(o => o.OrderNotes) .LoadWith(oi => oi.OrderDto).ThenLoad(o => o.OrderNotes)
.LoadWith(oi => oi.OrderDto).ThenLoad(o => o.GenericAttributes) .LoadWith(oi => oi.OrderDto).ThenLoad(o => o.GenericAttributes)
.LoadWith(oi => oi.OrderItemPallets).ThenLoad(oip => oip.OrderItemDto).ThenLoad(oi => oi.GenericAttributes) .LoadWith(oi => oi.OrderItemPallets).ThenLoad(oip => oip.OrderItemDto).ThenLoad(oi => oi.GenericAttributes)
@ -29,8 +30,8 @@ public class OrderItemDtoDbTable : MgDtoDbTableBase<OrderItemDto, OrderItem>
public Task<OrderItemDto> GetByIdAsync(int orderItemId, bool loadRelations) => GetAll(loadRelations).Where(oi => oi.Id == orderItemId).FirstOrDefaultAsync(null); public Task<OrderItemDto> GetByIdAsync(int orderItemId, bool loadRelations) => GetAll(loadRelations).Where(oi => oi.Id == orderItemId).FirstOrDefaultAsync(null);
public IQueryable<OrderItemDto> GetAllByOrderId(int orderId, bool loadRelations = true)=> GetAll(loadRelations).Where(oi => oi.OrderId == orderId); public IQueryable<OrderItemDto> GetAllByOrderId(int orderId, bool loadRelations = true) => GetAll(loadRelations).Where(oi => oi.OrderId == orderId);
public IQueryable<OrderItemDto> GetAllByProductId(int productId, bool loadRelations = true)=> GetAll(loadRelations).Where(oi => oi.ProductId == productId); public IQueryable<OrderItemDto> GetAllByProductId(int productId, bool loadRelations = true) => GetAll(loadRelations).Where(oi => oi.ProductId == productId);
public IQueryable<OrderItemDto> GetAllByIds(IEnumerable<int> orderItemIds, bool loadRelations = true) => GetAll(loadRelations).Where(oi => orderItemIds.Contains(oi.Id)); public IQueryable<OrderItemDto> GetAllByIds(IEnumerable<int> orderItemIds, bool loadRelations = true) => GetAll(loadRelations).Where(oi => orderItemIds.Contains(oi.Id));
public IQueryable<OrderItemDto> GetAllByOrderIds(IEnumerable<int> orderIds, bool loadRelations = true) => GetAll(loadRelations).Where(oi => orderIds.Contains(oi.OrderId)); public IQueryable<OrderItemDto> GetAllByOrderIds(IEnumerable<int> orderIds, bool loadRelations = true) => GetAll(loadRelations).Where(oi => orderIds.Contains(oi.OrderId));

View File

@ -31,8 +31,8 @@ public class ShippingDbTable : MgDbTableBase<Shipping>
: GetAll(); : GetAll();
} }
public IQueryable<Shipping> GetAllNotMeasured(bool loadRelations) public IQueryable<Shipping> GetAllNotMeasured(bool loadRelations, int lastDaysCount)
=> GetAll(loadRelations).Where(s => !s.IsAllMeasured || s.MeasuredDate == null || s.MeasuredDate < DateTime.Now.AddDays(1000)); => GetAll(loadRelations).Where(s => !s.IsAllMeasured || s.MeasuredDate == null || s.MeasuredDate >= DateTime.Now.AddDays(-lastDaysCount));
public Task<Shipping> GetByIdAsync(int id, bool loadRelations) public Task<Shipping> GetByIdAsync(int id, bool loadRelations)

View File

@ -62,6 +62,9 @@ public class ShippingItemDbTable : MgDbTableBase<ShippingItem>
public IQueryable<ShippingItem> GetAllByShippingIdAsync(int shippingId, bool loadRelations) public IQueryable<ShippingItem> GetAllByShippingIdAsync(int shippingId, bool loadRelations)
=> GetAll(loadRelations).Where(si => si.ShippingDocument.ShippingId == shippingId); => GetAll(loadRelations).Where(si => si.ShippingDocument.ShippingId == shippingId);
public IQueryable<ShippingItem> GetAllByPartnerIdAsync(int partnerId, bool loadRelations)
=> GetAll(loadRelations).Where(si => si.ShippingDocument.PartnerId == partnerId);
private static void PrepareValues(ShippingItem shippingItem) private static void PrepareValues(ShippingItem shippingItem)
{ {
if (shippingItem.MeasuringCount < 1) shippingItem.MeasuringCount = 1; if (shippingItem.MeasuringCount < 1) shippingItem.MeasuringCount = 1;

View File

@ -23,6 +23,7 @@ public class ShippingItemPalletDbTable : MeasuringItemPalletBaseDbTable<Shipping
return loadRelations return loadRelations
? GetAll() ? GetAll()
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes) .LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ProductDto).ThenLoad(prod => prod.GenericAttributes)
.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.Shipping)
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.Shipping) //.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.Shipping)
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(p => p.Partner) //.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(p => p.Partner)
//.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile) //.LoadWith(sip => sip.ShippingItem).ThenLoad(si => si.ShippingDocument).ThenLoad(sd => sd.ShippingDocumentToFiles).ThenLoad(sdtof => sdtof.ShippingDocumentFile)

View File

@ -119,7 +119,7 @@ public class PluginNopStartup : INopStartup
services.AddSignalR(hubOptions => services.AddSignalR(hubOptions =>
{ {
//hubOptions.EnableDetailedErrors = true; hubOptions.EnableDetailedErrors = true;
hubOptions.MaximumReceiveMessageSize = null; // 256 * 1024; hubOptions.MaximumReceiveMessageSize = null; // 256 * 1024;
hubOptions.KeepAliveInterval = TimeSpan.FromSeconds(FruitBankConstClient.SignalRKeepAliveIntervalSecond); hubOptions.KeepAliveInterval = TimeSpan.FromSeconds(FruitBankConstClient.SignalRKeepAliveIntervalSecond);
hubOptions.ClientTimeoutInterval = TimeSpan.FromSeconds(FruitBankConstClient.SignarlRTimeoutIntervalSecond); hubOptions.ClientTimeoutInterval = TimeSpan.FromSeconds(FruitBankConstClient.SignarlRTimeoutIntervalSecond);