public async Task <IActionResult> Create(CancellationToken token) { AddBreadcrumb("Film session", "/FilmSession/All"); AddBreadcrumb("Create", "/FilmSession/Create"); var company = await GetCompany(token); var films = await _filmRepository.FindByCompanyIdAsync(company.Id, token); var halls = await _hallRepository.FindByCompanyIdAsync(company.Id, token); var groupedHalls = halls.GroupBy(p => p.Cinema.Name).OrderBy(p => p.Key); var viewModel = new FilmSessionCreateViewModel { Films = films.Where(p => p.IsActive).ToList(), GroupedHalls = groupedHalls.ToList(), CompanyId = company.Id }; return(View(viewModel)); }
public async Task <IActionResult> Create(FilmSessionCreateViewModel model, CancellationToken token, string returnUrl = null) { AddBreadcrumb("Film session", "/FilmSession/All"); AddBreadcrumb("Create", "/FilmSession/Create"); ViewData["ReturnUrl"] = returnUrl; if (ModelState.IsValid) { var time = TimeSpan.FromSeconds(long.Parse(model.Time)); var date = DateTime.ParseExact(model.Date, "MM\\/dd\\/yyyy", CultureInfo.InvariantCulture); var film = await _filmRepository.FindByIdAsync(long.Parse(model.SelectedFilm), token); var hall = await _hallRepository.FindByIdAsync(long.Parse(model.SelectedHall), token); var startTime = date.AddHours(time.Hours).AddMinutes(time.Minutes); var endTime = startTime.AddHours(film.Duration.Hours).AddMinutes(film.Duration.Minutes); var filmSession = new FilmSession { Film = film, Hall = hall, StartTime = startTime, EndTime = endTime, Price = long.Parse(model.Price) }; await _filmSessionRepository.AddAsync(filmSession, token); return(RedirectToAction(nameof(All), "FilmSession")); } var halls = await _hallRepository.FindByCompanyIdAsync(model.CompanyId, token); model.GroupedHalls = halls.GroupBy(p => p.Cinema.Name).OrderBy(p => p.Key).ToList(); return(View(model)); }