using AutoMapper; using DigitalData.Core.Application; using Microsoft.Extensions.Localization; using EnvelopeGenerator.Application.Contracts; using EnvelopeGenerator.Application.DTOs; using EnvelopeGenerator.Domain.Entities; using EnvelopeGenerator.Infrastructure.Contracts; using static EnvelopeGenerator.Common.Constants; using EnvelopeGenerator.Application.Resources; namespace EnvelopeGenerator.Application.Services { public class EnvelopeHistoryService : BasicCRUDService, IEnvelopeHistoryService { public EnvelopeHistoryService(IEnvelopeHistoryRepository repository, IStringLocalizer localizer, IMapper mapper) : base(repository, localizer, mapper) { } public async Task CountAsync(int? envelopeId = null, string? userReference = null, int? status = null) => await _repository.CountAsync(envelopeId: envelopeId, userReference: userReference, status: status); public async Task HasStatus(EnvelopeStatus status, int envelopeId, string userReference) => await _repository.CountAsync( envelopeId: envelopeId, userReference: userReference, status: (int) status) > 0; public async Task AccessCodeAlreadyRequested(int envelopeId, string userReference) => await _repository.CountAsync( envelopeId: envelopeId, userReference:userReference, status: (int) EnvelopeStatus.AccessCodeRequested) > 0; public async Task IsSigned(int envelopeId, string userReference) => await _repository.CountAsync( envelopeId: envelopeId, userReference: userReference, status: (int) EnvelopeStatus.DocumentSigned) > 0; } }