using System; using System.Threading.Tasks; using System.Text; using Compliance.Domain.Models; using Compliance.DTOs; using Compliance.Infrastructure.Repositories; namespace Compliance.Services.ValidationRules { public class ConsecutiveEstimationValidationRule : IValidationRule { private const string RULE_NAME = "Consecutive Estimation Validation"; private const int MAX_CONSECUTIVE_ESTIMATIONS = 3; public int Priority => 1; public Task ValidateAsync( BillComplianceRequest request, DistributorInformation distributorInfo, Client clientInfo) { if (request.ConsecutiveEstimations > MAX_CONSECUTIVE_ESTIMATIONS) { return Task.FromResult(ValidationResult.Failure(RULE_NAME, $"Maximum consecutive estimated readings ({MAX_CONSECUTIVE_ESTIMATIONS}) exceeded")); } return Task.FromResult(ValidationResult.Success(RULE_NAME)); } } }