// EN: FluentValidation validator for CreateResourceCommand.
// VI: FluentValidation validator cho CreateResourceCommand.

using BookingService.API.Application.Commands;
using FluentValidation;

namespace BookingService.API.Application.Validations;

/// <summary>
/// EN: Validator for CreateResourceCommand.
/// VI: Validator cho CreateResourceCommand.
/// </summary>
public class CreateResourceCommandValidator : AbstractValidator<CreateResourceCommand>
{
    public CreateResourceCommandValidator()
    {
        RuleFor(x => x.ShopId)
            .NotEmpty()
            .WithMessage("Shop ID is required / Shop ID là bắt buộc");

        RuleFor(x => x.Name)
            .NotEmpty()
            .WithMessage("Resource name is required / Tên tài nguyên là bắt buộc")
            .MaximumLength(200)
            .WithMessage("Name cannot exceed 200 characters / Tên không được vượt quá 200 ký tự");

        RuleFor(x => x.ResourceType)
            .NotEmpty()
            .WithMessage("Resource type is required / Loại tài nguyên là bắt buộc")
            .MaximumLength(50)
            .WithMessage("Resource type cannot exceed 50 characters / Loại tài nguyên không được vượt quá 50 ký tự");

        RuleFor(x => x.Capacity)
            .GreaterThan(0)
            .WithMessage("Capacity must be greater than 0 / Sức chứa phải lớn hơn 0");
    }
}
