From a7e4d6e58f41cda5872eaf4c87bd1d718fe77f7f Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Wed, 7 May 2025 00:17:18 +0200 Subject: [PATCH] Enhance ReadByUsernameAsync with new query parameters Updated IEnvelopeReceiverService to include EnvelopeQuery and ReadReceiverQuery in ReadByUsernameAsync for improved filtering capabilities. Modified EnvelopeReceiverService to implement these changes, allowing for more precise data retrieval. Updated EnvelopeReceiverController to pass the new parameters when calling the service method. --- .../Services/IEnvelopeReceiverService.cs | 4 +++- .../Services/EnvelopeReceiverService.cs | 20 ++++++++++++++++++- .../Controllers/EnvelopeReceiverController.cs | 6 ++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/EnvelopeGenerator.Application/Contracts/Services/IEnvelopeReceiverService.cs b/EnvelopeGenerator.Application/Contracts/Services/IEnvelopeReceiverService.cs index cc384954..98a05635 100644 --- a/EnvelopeGenerator.Application/Contracts/Services/IEnvelopeReceiverService.cs +++ b/EnvelopeGenerator.Application/Contracts/Services/IEnvelopeReceiverService.cs @@ -3,6 +3,8 @@ using DigitalData.Core.Abstractions.Application; using DigitalData.Core.DTO; using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver; using EnvelopeGenerator.Application.DTOs.Messaging; +using EnvelopeGenerator.Application.Envelopes; +using EnvelopeGenerator.Application.Receivers.Queries.Read; using EnvelopeGenerator.Domain.Entities; namespace EnvelopeGenerator.Application.Contracts.Services; @@ -31,7 +33,7 @@ public interface IEnvelopeReceiverService : IBasicCRUDService> IsExisting(string envelopeReceiverId); - Task>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses); + Task>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, EnvelopeQuery? envelopeQuery = null, ReadReceiverQuery? receiverQuery = null, params int[] ignore_statuses); Task> ReadLastUsedReceiverNameByMail(string mail); diff --git a/EnvelopeGenerator.Application/Services/EnvelopeReceiverService.cs b/EnvelopeGenerator.Application/Services/EnvelopeReceiverService.cs index ddcd3e2a..dcde6d75 100644 --- a/EnvelopeGenerator.Application/Services/EnvelopeReceiverService.cs +++ b/EnvelopeGenerator.Application/Services/EnvelopeReceiverService.cs @@ -10,6 +10,8 @@ using Microsoft.Extensions.Logging; using EnvelopeGenerator.Extensions; using EnvelopeGenerator.Application.DTOs.Messaging; using EnvelopeGenerator.Application.Contracts.Services; +using EnvelopeGenerator.Application.Envelopes; +using EnvelopeGenerator.Application.Receivers.Queries.Read; namespace EnvelopeGenerator.Application.Services; @@ -137,9 +139,25 @@ public class EnvelopeReceiverService : BasicCRUDService>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses) + public async Task>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, EnvelopeQuery? envelopeQuery = null, ReadReceiverQuery? receiverQuery = null, params int[] ignore_statuses) { var er_list = await _repository.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses); + + if(envelopeQuery?.Id is int eId) + er_list = er_list.Where(er => er.EnvelopeId == eId); + + if (envelopeQuery?.Uuid is string uuid) + er_list = er_list.Where(er => er.Envelope?.Uuid == uuid); + + if (envelopeQuery?.Status is int status) + er_list = er_list.Where(er => er.Envelope?.Status == status); + + if(receiverQuery?.Id is int id) + er_list = er_list.Where(er => er.Receiver?.Id == id); + + if (receiverQuery?.Signature is string signature) + er_list = er_list.Where(er => er.Receiver?.Signature == signature); + var dto_list = _mapper.Map>(er_list); return Result.Success(dto_list); } diff --git a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs index 90b5b955..3aea39ee 100644 --- a/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs +++ b/EnvelopeGenerator.GeneratorAPI/Controllers/EnvelopeReceiverController.cs @@ -85,8 +85,10 @@ public class EnvelopeReceiverController : ControllerBase return await _erService.ReadByUsernameAsync( username: username, - min_status: envelopeReceiver.Status?.Min ?? envelopeReceiver.Envelope?.Status, - max_status:envelopeReceiver.Status?.Max ?? envelopeReceiver.Envelope?.Status, + min_status: envelopeReceiver.Status?.Min, + max_status:envelopeReceiver.Status?.Max, + envelopeQuery: envelopeReceiver.Envelope, + receiverQuery: envelopeReceiver.Receiver, ignore_statuses: envelopeReceiver.Status?.Ignore ?? Array.Empty()) .ThenAsync( Success: Ok,