using CH.CQRS.Service.Energy; using CH.CQRS.Service.Energy.Options; using CH.Dal; using CH.Dal.DbEntity; using CH.Dal.Validators; using CH.Enum; using FluentValidation; using Microsoft.EntityFrameworkCore; using OpenHarbor.CQRS.Abstractions; namespace CH.CQRS.Command.Energy; public class UpdateEnergyRateExceptionCommand { public long EnergyRateExceptionId { get; set; } public decimal? EnergyThreshold { get; set; } public EnergyRateExceptionThresholdResetType ResetType { get; set; } public DateTime? StartedAt { get; set; } public DateTime? EndedAt { get; set; } } public class UpdateEnergyRateExceptionCommandHandler(EnergyService energyService) : ICommandHandler { public Task HandleAsync(UpdateEnergyRateExceptionCommand command, CancellationToken cancellationToken = new CancellationToken()) { return energyService.UpdateEnergyRateExceptionAsync(new UpdateEnergyRateExceptionCommandOptions { EnergyRateExceptionId = command.EnergyRateExceptionId, EnergyThreshold = command.EnergyThreshold, ResetType = command.ResetType, StartedAt = command.StartedAt, EndedAt = command.EndedAt },cancellationToken); } } public class UpdateEnergyRateExceptionCommandValidator : AbstractValidator { public UpdateEnergyRateExceptionCommandValidator(CHDbContext dbContext) { RuleFor(command => command.EnergyRateExceptionId) .NotEmpty() .SetValidator(new DbEntityExistValidator(dbContext)); RuleFor(command => command.EnergyThreshold) .GreaterThan(0) .When(command => command.EnergyThreshold.HasValue); } }