public ChatRoomValidator(IChatRepository chatRepository) { _chatRepository = chatRepository; //RuleFor(room => room.RoomName).Must(name => name != "Force Error").WithMessage("Intentional error!"); RuleFor(room => room.Description).Length(0, 100).WithMessage("Description cannot exceed 100 characters!"); RuleFor(room => room.RoomName).NotEmpty(); RuleFor(room => room.ChatType).NotNull(); RuleFor(room => room.ChatType.ToString()).IsEnumName(typeof(ChatType)); RuleSet("AlreadyCreated", () => { RuleFor(room => room.RoomName).MustAsync(async(name, cancellation) => { bool isCreated = await _chatRepository.ContainsRoom(name); return(!isCreated); }).WithMessage("Room name is already taken!"); }); }