diff --git a/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverLightQuery.cs b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverLightQuery.cs new file mode 100644 index 00000000..27b4f775 --- /dev/null +++ b/EnvelopeGenerator.Application/EnvelopeReceivers/Queries/ReadEnvelopeReceiverLightQuery.cs @@ -0,0 +1,60 @@ +using AutoMapper; +using DigitalData.Core.Abstraction.Application.Repository; +using EnvelopeGenerator.Application.Common.Dto.EnvelopeReceiver; +using EnvelopeGenerator.Application.Common.Extensions; +using EnvelopeGenerator.Application.Common.Query; +using EnvelopeGenerator.Application.Envelopes.Queries; +using EnvelopeGenerator.Application.Receivers.Queries; +using EnvelopeGenerator.Domain.Entities; +using MediatR; +using Microsoft.EntityFrameworkCore; + +namespace EnvelopeGenerator.Application.EnvelopeReceivers.Queries; + +/// +/// Leichte Variante von : +/// Lädt NUR Envelope (mit Histories + User) und Receiver. +/// Lädt NICHT Documents/Elements. +/// +/// Verwendung: Status-Prüfungen wo keine Dokument-Daten benötigt werden +/// (z.B. ReceiverAuthController.GetStatus). +/// +public record ReadEnvelopeReceiverLightQuery + : EnvelopeReceiverQueryBase, IRequest; + +/// +/// Handler für . +/// +public class ReadEnvelopeReceiverLightQueryHandler + : IRequestHandler +{ + private readonly IRepository _repo; + private readonly IMapper _mapper; + + /// + /// Konstruktor. + /// + /// EnvelopeReceiver-Repository + /// AutoMapper + public ReadEnvelopeReceiverLightQueryHandler(IRepository repo, IMapper mapper) + { + _repo = repo; + _mapper = mapper; + } + + /// + /// Lädt einen EnvelopeReceiver ohne Documents/Elements. + /// + public async Task Handle(ReadEnvelopeReceiverLightQuery request, CancellationToken cancel) + { + var envRcv = await _repo.Query + .Where(request, notnull: false) + .AsNoTracking() + .Include(er => er.Envelope).ThenInclude(e => e!.Histories) + .Include(er => er.Envelope).ThenInclude(e => e!.User) + .Include(er => er.Receiver) + .FirstOrDefaultAsync(cancel); + + return envRcv is null ? null : _mapper.Map(envRcv); + } +} \ No newline at end of file