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,