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