From 3b24755c3575918fcbad78395b614a8a62b4fe03 Mon Sep 17 00:00:00 2001 From: TekH Date: Fri, 14 Nov 2025 11:49:51 +0100 Subject: [PATCH] feat(CountHistoryQuery): add CountHistoryQuery to retrieve envelope history count - Introduced `CountHistoryQuery` record for querying the count of history entries of an envelope. - Implemented `CountHistoryQueryHandler` using repository pattern and AutoMapper. - Supports optional filtering by `Status`. - Throws `NotFoundException` if necessary (placeholder for future extension). --- .../Histories/Queries/CountHistoryQuery.cs | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 EnvelopeGenerator.Application/Histories/Queries/CountHistoryQuery.cs diff --git a/EnvelopeGenerator.Application/Histories/Queries/CountHistoryQuery.cs b/EnvelopeGenerator.Application/Histories/Queries/CountHistoryQuery.cs new file mode 100644 index 00000000..795799fc --- /dev/null +++ b/EnvelopeGenerator.Application/Histories/Queries/CountHistoryQuery.cs @@ -0,0 +1,54 @@ +using AutoMapper; +using DigitalData.Core.Abstraction.Application.Repository; +using DigitalData.Core.Exceptions; +using EnvelopeGenerator.Application.Common.Dto.History; +using EnvelopeGenerator.Domain.Constants; +using MediatR; +using System.ComponentModel.DataAnnotations; +using EnvelopeGenerator.Domain.Entities; +using Microsoft.EntityFrameworkCore; + +namespace EnvelopeGenerator.Application.Histories.Queries; + +//TODO: Add sender query +/// +/// Repräsentiert eine Abfrage für die Verlaufshistorie eines Umschlags. +/// +public record CountHistoryQuery : HistoryQueryBase, IRequest; + +/// +/// +/// +public class CountHistoryQueryHandler : IRequestHandler +{ + private readonly IRepository _repo; + + private readonly IMapper _mapper; + + /// + /// + /// + /// + /// + public CountHistoryQueryHandler(IRepository repo, IMapper mapper) + { + _repo = repo; + _mapper = mapper; + } + + /// + /// + /// + /// + /// + /// + /// + public Task Handle(CountHistoryQuery request, CancellationToken cancel = default) + { + var query = _repo.Where(h => h.EnvelopeId == request.EnvelopeId); + if (request.Status is not null) + query = query.Where(h => h.Status == request.Status); + + return query.CountAsync(cancel); + } +} \ No newline at end of file