using FluentValidation;
using SocialService.API.Application.Commands;

namespace SocialService.API.Application.Validations;

/// <summary>
/// EN: Validator for BlockUserCommand.
/// VI: Validator cho BlockUserCommand.
/// </summary>
public class BlockUserCommandValidator : AbstractValidator<BlockUserCommand>
{
    public BlockUserCommandValidator()
    {
        RuleFor(x => x.BlockerId)
            .NotEmpty().WithMessage("Blocker ID is required / ID người block là bắt buộc");

        RuleFor(x => x.BlockedId)
            .NotEmpty().WithMessage("Blocked user ID is required / ID người bị block là bắt buộc");

        RuleFor(x => x)
            .Must(x => x.BlockerId != x.BlockedId)
            .WithMessage("Cannot block yourself / Không thể block chính mình");

        RuleFor(x => x.Reason)
            .MaximumLength(500).WithMessage("Reason max 500 chars / Lý do tối đa 500 ký tự")
            .When(x => x.Reason != null);
    }
}
