示例#1
0
        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));
        }
示例#2
0
        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));
        }