public async Task <IActionResult> Create(CreateDriverInputModel inputModel) { if (!this.ModelState.IsValid) { return(this.View(inputModel)); } var driverId = await this.driverService.CreateDriverAsync(inputModel); return(this.RedirectToAction(nameof(Details), new { id = driverId })); }
public async Task <int> CreateDriverAsync(CreateDriverInputModel inputModel) { if (this.DbContext.Drivers.Any(d => d.FirstName == inputModel.FirstName && d.LastName == inputModel.LastName)) { throw new DriverExistsException(); } var driver = this.Mapper.Map <Driver>(inputModel); var statistics = new Statistics(); await this.DbContext.Statistics.AddAsync(statistics); await this.DbContext.SaveChangesAsync(); driver.Statistics = statistics; var team = await this.DbContext.Teams .FirstOrDefaultAsync(t => t.Name == inputModel.TeamName); CoreValidator.ThrowIfNull(team, new InvalidTeamException()); driver.Team = team; try { await this.DbContext.Drivers.AddAsync(driver); await this.DbContext.SaveChangesAsync(); } catch { throw new SaveDbChangesException(); } return(driver.Id); }