From d7f49829a24ec82245b03fe71b5342991608739a Mon Sep 17 00:00:00 2001 From: Piotr Kus Date: Thu, 3 Apr 2025 09:27:32 +0200 Subject: [PATCH] * Added required methods to services --- .../Queries/ScheduleOrderQueries.cs | 5 ++++ .../Services/IScheduleOrderDetailsService.cs | 4 +-- .../Services/IScheduleOrderService.cs | 2 +- .../Services/ScheduleOrderDetailsService.cs | 13 +++------ .../Services/ScheduleOrderService.cs | 11 ++++--- .../Services/IMaterialTransactionService.cs | 4 +-- .../Services/MaterialTransactionService.cs | 29 ++++++++++++++----- 7 files changed, 41 insertions(+), 27 deletions(-) diff --git a/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs b/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs index 85044f2..61918b8 100644 --- a/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs +++ b/FaKrosnoEfDataModel/Queries/ScheduleOrderQueries.cs @@ -11,6 +11,11 @@ namespace FaKrosnoEfDataModel.Queries .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails) .ThenInclude(x => x.ScheduleOrderDetailDetailMiscs).Include(x => x.ScheduleOrderMiscs)); + public static readonly Func> GetEntitiesByPurchaser = + EF.CompileQuery((FaKrosnoDbContext context, int purchaser) => context.ScheduleOrders + .Include(x => x.Recipient).ThenInclude(x => x.Purchaser).Include(x => x.ScheduleOrderDetails) + .ThenInclude(x => x.ScheduleOrderDetailMiscs).Where(x => x.Recipient.Purchaser.ID == purchaser)); + public static readonly Func> GetEntitiesByDate = EF.CompileQuery((FaKrosnoDbContext context, DateTime fromDate) => context.ScheduleOrders .Include(x => x.Recipient).ThenInclude(x => x.Purchaser).Include(x => x.ScheduleOrderDetails) diff --git a/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs b/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs index 0f3fc63..5844383 100644 --- a/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs +++ b/FaKrosnoEfDataModel/Services/IScheduleOrderDetailsService.cs @@ -11,7 +11,7 @@ namespace FaKrosnoEfDataModel.Services { Task?> GetScheduleOrderDetailsAsync(int scheduleOrderId); - Task?> GetScheduleOrderDetailMiscsAsync( - IList scheduleOrderDetailIds, string miscName); + Task> GetScheduleOrderDetailsDetailsByIdAsync( + int scheduleOrderDetailId); } } diff --git a/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs b/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs index 74f133f..079fa66 100644 --- a/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs +++ b/FaKrosnoEfDataModel/Services/IScheduleOrderService.cs @@ -12,7 +12,7 @@ namespace FaKrosnoEfDataModel.Services Task> GetEntities(); Task GetById(int id); Task> GetByRecipientId(int recipientId); - Task> GetByPurchaserId(int purchaserId); + Task> GetByPurchaserId(int purchaserId); Task> GetEntitiesByLastUpdateDate(DateTime date); Task> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date); } diff --git a/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs b/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs index 728a45d..e526907 100644 --- a/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs +++ b/FaKrosnoEfDataModel/Services/ScheduleOrderDetailsService.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using AutoMapper; +using AutoMapper; using AutoMapper.QueryableExtensions; using FaKrosnoEfDataModel.Dtos; using Microsoft.EntityFrameworkCore; @@ -22,10 +17,10 @@ namespace FaKrosnoEfDataModel.Services .ProjectTo(Mapper.ConfigurationProvider).ToListAsync(); } - public async Task?> GetScheduleOrderDetailMiscsAsync(IList scheduleOrderDetailIds, string miscName) + public async Task> GetScheduleOrderDetailsDetailsByIdAsync(int scheduleOrderDetailId) { - return await Context.ScheduleOrderDetailMiscs.Where(x => x.ID == scheduleOrderDetailIds.First()) - .ProjectTo(Mapper.ConfigurationProvider).ToListAsync(); + return await Context.ScheduleOrderDetailDetails.Where(x => x.ScheduleOrderDetailID == scheduleOrderDetailId) + .ProjectTo(Mapper.ConfigurationProvider).ToListAsync(); } } } diff --git a/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs b/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs index 1cc53a3..b8b1297 100644 --- a/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs +++ b/FaKrosnoEfDataModel/Services/ScheduleOrderService.cs @@ -26,13 +26,12 @@ namespace FaKrosnoEfDataModel.Services return scheduleOrders.Where(x => x?.RecipientID == recipientId); } - public async Task> GetByPurchaserId(int purchaserId) + public async Task> GetByPurchaserId(int purchaserId) { - return await Context.ScheduleOrders.Include(x => x.Recipient).ThenInclude(x => x.Purchaser) - .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailMiscs) - .Include(x => x.ScheduleOrderDetails).ThenInclude(x => x.ScheduleOrderDetailDetails) - .Where(x => x.Recipient.Purchaser.ID == purchaserId).Select(x => Mapper.Map(x)) - .ToListAsync(); + IEnumerable scheduleOrders = + (await Task.FromResult(ScheduleOrderQueries.GetEntitiesByPurchaser(Context, purchaserId))).ToList(); + + return scheduleOrders.Select(x => Mapper.Map(x)); } public async Task> GetByRecipientAndLastUpdateDate(int recipientId, DateTime date) diff --git a/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs b/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs index 47e4ebf..60774ee 100644 --- a/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs +++ b/SytelineSaAppEfDataModel/Services/IMaterialTransactionService.cs @@ -6,6 +6,6 @@ public interface IMaterialTransactionService { Task> GetAll(); Task GetByWzNumber(string wzNumber); - Task> GetByWzNumbers(ISet wzNumbers); - Task> GetByOrderNumber(string orderNumber); + Task> GetByWzNumbers(ISet wzNumbers); + Task> GetByOrderNumber(string orderNumber); } \ No newline at end of file diff --git a/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs b/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs index 6902679..e278475 100644 --- a/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs +++ b/SytelineSaAppEfDataModel/Services/MaterialTransactionService.cs @@ -1,6 +1,7 @@ using AutoMapper; using Microsoft.EntityFrameworkCore; using SytelineSaAppEfDataModel.Dtos; +using SytelineSaAppEfDataModel.Entities; namespace SytelineSaAppEfDataModel.Services; @@ -17,17 +18,31 @@ public class MaterialTransactionService(SytelineSaAppDbContext context, IMapper .Where(x => x.MTGroupNum == wzNumber) .Select(x => mapper.Map(x)).FirstOrDefaultAsync(); } - - public async Task> GetByWzNumbers(ISet wzNumbers) + + public async Task> GetByWzNumbers(ISet wzNumbers) { - return await context.MaterialTransactions - .Where(x => !string.IsNullOrWhiteSpace(x.MTGroupNum) && wzNumbers.Contains(x.MTGroupNum)) - .Select(x => mapper.Map(x)).ToListAsync(); + if (!wzNumbers.Any()) + return Enumerable.Empty(); + + var wzNumbersList = string.Join(",", wzNumbers.Select(w => $"'{w}'")); + + var sql = $@" + SELECT z.* + FROM ZPL_InternalNum_Matltran z + WHERE z.MTGroupNum <> '' + AND z.MTGroupNum IN ({wzNumbersList})"; + + IList result = await context.MaterialTransactions + .FromSqlRaw(sql) + .AsNoTracking() + .ToListAsync(); + + return result.Select(mapper.Map); } - public async Task> GetByOrderNumber(string orderNumber) + public async Task> GetByOrderNumber(string orderNumber) { - return await context.MaterialTransactions.Where(x => x.RefNum == orderNumber) + return await context.MaterialTransactions.Where(x => x.RefNum == orderNumber).OrderByDescending(x => x.TransDate) .Select(x => mapper.Map(x)).ToListAsync(); } } \ No newline at end of file