using CH.CQRS.Service.Energy; using CH.CQRS.Service.Energy.Options; using FluentValidation; using OpenHarbor.CQRS.Abstractions; namespace CH.CQRS.Command.Energy; public class CreateEnergyRateExceptionCommand { public long RateId { get; set; } public required string Name { get; set; } public decimal EnergyThreshold { get; set; } public string? ResetType { get; set; } public DateTime? StartedAt { get; set; } public DateTime? EndedAt { get; set; } } public class CreateEnergyRateExceptionCommandHandler(EnergyService energyService) : ICommandHandler { public Task HandleAsync(CreateEnergyRateExceptionCommand command, CancellationToken cancellationToken = new CancellationToken()) { return energyService.CreateEnergyRateExceptionAsync(new CreateEnergyRateExceptionCommandOptions { RateId = command.RateId, Name = command.Name, EnergyThreshold = command.EnergyThreshold, ResetType = command.ResetType, StartedAt = command.StartedAt, EndedAt = command.EndedAt }, cancellationToken); } } public class CreateEnergyRateExceptionCommandValidator : AbstractValidator { public CreateEnergyRateExceptionCommandValidator() { RuleFor(command => command.EnergyThreshold) .GreaterThan(0); RuleFor(command => command.RateId) .NotEmpty(); } }