Exemplo n.º 1
0
        private async Task <Film> GetFilm(CancellationToken token)
        {
            var user = await _userManager.FindByIdAsync(_userManager.GetUserId(User)) as IdentityUser;

            var userSession = await _userSessionRepository.FindByUserIdAsync(Guid.Parse(user.Id), token);

            return(await _filmRepository.FindByIdAsync(userSession.CurrentFilmId, token));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Index(CancellationToken token)
        {
            if (!Request.Query.ContainsKey("companyId") || !Request.Query.ContainsKey("filmId"))
            {
                return(NotFound());
            }

            Request.Query.TryGetValue("companyId", out var companyId);
            var company = await _companyRepository.FindByIdAsync(long.Parse(companyId), token);

            Request.Query.TryGetValue("filmId", out var filmId);
            var currentFilm = await _filmRepository.FindByIdAsync(long.Parse(filmId), token);

            var poster = _blobRepository.Get(currentFilm.Id);

            var posters       = new Dictionary <long, string>();
            var upcomingFilms = (await _filmRepository.FindByCompanyIdAsync(company.Id, token))
                                .Where(p => p.IsActive && p.ReleaseDate > DateTime.Now).ToList();

            foreach (var film in upcomingFilms)
            {
                posters[film.Id] = _blobRepository.Get(film.Id);
            }

            var filmSessions = (await _filmSessionRepository.FindByFilmIdAsync(currentFilm.Id, token))
                               .Where(p => p.StartTime > DateTime.Now);

            var groupedSessions = filmSessions.GroupBy(p => p.Hall.Cinema.Name);

            var viewModel = new FilmViewModel
            {
                Company         = company,
                Film            = currentFilm,
                Poster          = poster,
                GroupedSessions = groupedSessions.ToList(),
                UpcomingFilms   = upcomingFilms,
                Posters         = posters
            };

            return(View(viewModel));
        }
Exemplo n.º 3
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));
        }