24 lines
842 B
C#
24 lines
842 B
C#
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<MoveRequest>
|
|
{
|
|
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.");
|
|
}
|
|
}
|
|
}
|