using FluentValidation;
using MiningService.API.Application.Commands;

namespace MiningService.API.Application.Validations;

/// <summary>
/// EN: Validator for UpdateMiningConfigCommand.
/// VI: Validator cho UpdateMiningConfigCommand.
/// </summary>
public class UpdateMiningConfigCommandValidator : AbstractValidator<UpdateMiningConfigCommand>
{
    public UpdateMiningConfigCommandValidator()
    {
        RuleFor(x => x.BaseRate)
            .GreaterThan(0).WithMessage("Base rate must be positive / Tỷ lệ cơ bản phải dương")
            .When(x => x.BaseRate.HasValue);

        RuleFor(x => x.SessionDurationHours)
            .InclusiveBetween(1, 24).WithMessage("Session duration must be 1-24 hours / Thời lượng phiên phải từ 1-24 giờ")
            .When(x => x.SessionDurationHours.HasValue);

        RuleFor(x => x.MaxSessionsPerDay)
            .InclusiveBetween(1, 10).WithMessage("Max sessions per day must be 1-10 / Số phiên tối đa mỗi ngày phải từ 1-10")
            .When(x => x.MaxSessionsPerDay.HasValue);
    }
}
