public async Task <Result> CreateRace(CreateRaceRequest request, CancellationToken cancellationToken = default) { List <string> errorsList = new List <string>(); try { if (!ValidateCreateRace(request, errorsList)) { return(Result.Failure(errorsList)); } var race = new Race() { Year = request.Year, Length = _defaultRaceLength }; _dbContext.Insert(race); await _dbContext.SaveChangesAsync(cancellationToken); return(Result.Success); } catch (Exception e) { errorsList.Add(e.Message); return(Result.Failure(errorsList)); } }
/// <summary> /// Validates the <see cref="CreateRaceRequest"> object. /// </summary> /// <param name="request">The race creation request.</param> /// <param name="errorsList">Reference to an errors list.</param> private bool ValidateCreateRace(CreateRaceRequest request, List <string> errorsList) { if (request.Year < DateTime.Now.Year) { errorsList.Add(Domain.Constants.Races.YearInThePast); } return(errorsList.Count == 0); }
public async Task <IActionResult> CreateRace([FromBody] CreateRaceRequest request) => await Result.Create(request, Errors.UnProcessableRequest) .Map(value => new CreateRaceCommand(request.Year)) .Bind(command => Sender.Send(command)) .Match(Ok, BadRequest);
public async Task <IActionResult> CreateRace([FromBody] CreateRaceRequest request) { var result = await _racecService.CreateRace(request); return(HandleResult(result)); }