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);
}
}