using FluentValidation; using Gameboard.ShogiUI.Sockets.ServiceModels.Socket.Messages; using Gameboard.ShogiUI.Sockets.ServiceModels.Socket.Types; namespace Gameboard.ShogiUI.Sockets.Services.RequestValidators { public class MoveRequestValidator : AbstractValidator { public MoveRequestValidator() { RuleFor(_ => _.Action).Equal(ClientAction.Move); RuleFor(_ => _.GameName).NotEmpty(); RuleFor(_ => _.Move.From) .Null() .When(_ => _.Move.PieceFromCaptured.HasValue) .WithMessage("Move.From and Move.PieceFromCaptured are mutually exclusive properties."); RuleFor(_ => _.Move.From) .NotEmpty() .When(_ => !_.Move.PieceFromCaptured.HasValue) .WithMessage("Move.From and Move.PieceFromCaptured are mutually exclusive properties."); } } }