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)); }
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)); }
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)); }