예제 #1
0
        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 }));
        }
예제 #2
0
        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);
        }