From 02ef05f054d6e5047cc3b7507ac5d9dc96b5436f Mon Sep 17 00:00:00 2001 From: TekH Date: Thu, 21 Aug 2025 18:32:41 +0200 Subject: [PATCH] feat(envelope-receivers): add query handler for reading envelope receiver with filtering - Implemented ReadEnvelopeReceiverQueryHandler using MediatR - Added filtering support for Envelope (Id, Status, Uuid) and Receiver (Id, EmailAddress, Signature) - Included related navigation properties (Envelope, Documents, Elements, History, User, Receiver) - Mapped result to EnvelopeReceiverDto using AutoMapper --- .../EnvelopeGenerator.Application.csproj | 4 +- .../ReadEnvelopeReceiverQueryHandler.cs | 52 ++++++++++++++++--- .../EnvelopeGenerator.Infrastructure.csproj | 4 +- ...EnvelopeGenerator.Tests.Application.csproj | 4 +- 4 files changed, 52 insertions(+), 12 deletions(-) diff --git a/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj b/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj index a1538c87..031ae9a6 100644 --- a/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj +++ b/EnvelopeGenerator.Application/EnvelopeGenerator.Application.csproj @@ -14,8 +14,8 @@ - - + + diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQueryHandler.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQueryHandler.cs index da18b95e..4addfc8a 100644 --- a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQueryHandler.cs +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverQueryHandler.cs @@ -1,7 +1,9 @@ -using DigitalData.Core.Abstraction.Application.Repository; +using AutoMapper; +using DigitalData.Core.Abstraction.Application.Repository; using EnvelopeGenerator.Application.Dto.EnvelopeReceiver; using EnvelopeGenerator.Domain.Entities; using MediatR; +using Microsoft.EntityFrameworkCore; namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries; @@ -12,24 +14,62 @@ public class ReadEnvelopeReceiverQueryHandler : IRequestHandler _repo; + private readonly IMapper _mapper; + /// /// /// /// - public ReadEnvelopeReceiverQueryHandler(IRepository envelopeReceiver) + public ReadEnvelopeReceiverQueryHandler(IRepository envelopeReceiver, IMapper mapper) { _repo = envelopeReceiver; + _mapper = mapper; } /// /// /// /// - /// + /// /// /// - public Task Handle(ReadEnvelopeReceiverQuery request, CancellationToken cancellationToken) + public async Task Handle(ReadEnvelopeReceiverQuery request, CancellationToken cancel) { - throw new NotImplementedException(); - } + var q = _repo.Read(); + + if(request.Envelope is not null) + { + var env = request.Envelope; + if (env.Id is not null) + q = q.Where(er => er.EnvelopeId == env.Id); + + if (env.Status is not null) + q = q.Where(er => er.Envelope.Status == env.Status); + + if (env.Uuid is not null) + q = q.Where(er => er.Envelope.Uuid == env.Uuid); + } + + if (request.Receiver is not null) + { + var rcv = request.Receiver; + if (rcv.Id is not null) + q = q.Where(r => r.ReceiverId == rcv.Id); + + if (rcv.EmailAddress is not null) + q = q.Where(r => r.Receiver.EmailAddress == rcv.EmailAddress); + + if (rcv.Signature is not null) + q = q.Where(er => er.Receiver.Signature == rcv.Signature); + } + + var er = await q.Include(er => er.Envelope).ThenInclude(e => e.Documents).ThenInclude(d => d.Elements) + .Include(er => er.Envelope).ThenInclude(e => e.History) + .Include(er => er.Envelope).ThenInclude(e => e.User) + .Include(er => er.Receiver) + .FirstOrDefaultAsync(cancel); + + var dto = _mapper.Map(er); + return dto; + } } diff --git a/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj b/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj index 027bc83b..b4fdf0ea 100644 --- a/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj +++ b/EnvelopeGenerator.Infrastructure/EnvelopeGenerator.Infrastructure.csproj @@ -8,8 +8,8 @@ - - + + diff --git a/EnvelopeGenerator.Tests.Application/EnvelopeGenerator.Tests.Application.csproj b/EnvelopeGenerator.Tests.Application/EnvelopeGenerator.Tests.Application.csproj index 1838c201..ee2e57b1 100644 --- a/EnvelopeGenerator.Tests.Application/EnvelopeGenerator.Tests.Application.csproj +++ b/EnvelopeGenerator.Tests.Application/EnvelopeGenerator.Tests.Application.csproj @@ -23,10 +23,10 @@ - + - +