public async Task <IActionResult> Create([Bind("Id,CinemaFK,MovieFK,Start,End,Occupated_seats")] Sessions session) { if (ModelState.IsValid) { //verifica se existe alguma sessao no mesmo cinema entre a data da nova sessao if (await _context.Sessions.Where(s => session.Start >= s.Start && session.Start <= s.End && s.Cinema.Id == session.CinemaFK).AnyAsync()) { ViewData["message"] = "Já existe uma sessão neste cinema entre esta data."; ViewData["CinemaFK"] = new SelectList(_context.Cinemas, "Id", "Name", session.CinemaFK); ViewData["MovieFK"] = new SelectList(_context.Movies, "Id", "Name", session.MovieFK); return(View()); } session.End = session.Start; //fim=inicio session.End = session.End.AddMinutes(_context.Movies.Find(session.MovieFK).Duration); //fim+duração do filme _context.Add(session); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["CinemaFK"] = new SelectList(_context.Cinemas, "Id", "Name", session.CinemaFK); ViewData["MovieFK"] = new SelectList(_context.Movies, "Id", "Name", session.MovieFK); return(View(session)); }
public async Task <IActionResult> Create([Bind("Name,Capacity,City,Location")] Cinemas cinema) { if (ModelState.IsValid) { if (_context.Cinemas.Where(c => c.Name == cinema.Name).Any())//verifica se existe algum cinema com o mesmo nome { ViewData["message"] = "Já existe um cinema com o mesmo nome."; return(View(cinema)); } //adiciona o utilizador _context.Add(cinema); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(cinema)); }
public async Task <IActionResult> Create([Bind("Id,Name,Description,Genres,Duration,Min_age,Highlighted")] Movies movie, IFormFile Poster) { if (ModelState.IsValid) { if (_context.Movies.Where(m => m.Name == movie.Name).Any())//verifica se existe algum filme com o mesmo nome { ViewData["message"] = "Já existe um filme com o mesmo nome."; return(View(movie)); } //se o poster não fôr imagem usa-se a imagem default if (Poster == null || !Poster.ContentType.Contains("image")) { movie.Poster = "default.png"; } else { //usa a imagem recebida Guid g; g = Guid.NewGuid(); string extensao = Path.GetExtension(Poster.FileName).ToLower(); // caminho do ficheiro movie.Poster = g.ToString() + extensao; //guarda a imagem using var fileStream = new FileStream(_environment.WebRootPath + "/images/movies/" + g.ToString() + extensao, FileMode.Create); await Poster.CopyToAsync(fileStream); } //adiciona o filme ---------------------- _context.Add(movie); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(movie)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { //verifica se o email ja esta a ser utilizado if (_context.User.Where(u => u.Email == Input.Email).Any()) { ModelState.AddModelError(string.Empty, "Este Email já está a ser utilizado."); } returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { Users user = new Users //cria o utilizador usado nas relações { Name = Input.Nome, Email = Input.Email, DoB = Input.DoB, Role = "User", Avatar = "default.png", }; _context.Add(user); await _context.SaveChangesAsync(); var applicationUser = new ApplicationUser //cria application User { UserName = Input.Email, Email = Input.Email, Nome = Input.Nome, Timestamp = DateTime.Now, User = user.Id //id do utilizador }; var result = await _userManager.CreateAsync(applicationUser, Input.Password); //adiciona o application user if (result.Succeeded) { //dar permissão ao Application User com a permissão base: User await _userManager.AddToRoleAsync(applicationUser, "User"); _logger.LogInformation("Utilizador criado."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(applicationUser); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = applicationUser.Id, code = code, returnUrl = returnUrl }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Confirme o seu email", $"Por favor confirme o seu email ao <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicar aqui</a>."); if (_userManager.Options.SignIn.RequireConfirmedAccount) { return(RedirectToPage("RegisterConfirmation", new { email = Input.Email, returnUrl = returnUrl })); } else { await _signInManager.SignInAsync(applicationUser, isPersistent : false); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public async Task <IActionResult> Create(int SessionFK) { var session = _context.Sessions.Find(SessionFK); if (session == null) { return(RedirectToAction("Index", "Home")); } //obtem o application user atual var applicationUser = await _userManager.GetUserAsync(User); //obtem o utilizador associado ao application user atual var user = _context.User.Where(u => u.Id == applicationUser.User).FirstOrDefault(); ViewData["User"] = user.Id;//envia para a view o id do user //filme da sessao escolhida pelo utilizador var movie = await _context.Movies.Where(m => m.Id == session.MovieFK).FirstOrDefaultAsync(); //a sessão já começou var now = new DateTime().Ticks; if (now >= session.Start.Ticks && now <= session.End.Ticks) { TempData["Message"] = "Esta sessão já está a decorrer."; return(Redirect("~/Movies/Details/" + movie.Id)); } //o utilizador já tem o bilhete if (_context.Tickets.Where(t => t.Session == session && t.Id == applicationUser.User).Any()) { TempData["Message"] = "Já possui o bilhete para esta sessão."; return(Redirect("~/Movies/Details/" + movie.Id)); } //capacidade cheia if (session.Occupated_seats >= _context.Cinemas.Find(session.CinemaFK).Capacity) { TempData["Message"] = "Filme com capacidade esgotada. Atualize a página."; return(Redirect("~/Movies/Details/" + movie.Id)); } //sem idade para comprar o bilhete if (DateTime.Now.Ticks < user.DoB.AddYears(session.Movie.Min_age).Ticks) { TempData["Message"] = "Não tem idade para comprar o bilhete para este filme."; return(Redirect("~/Movies/Details/" + movie.Id)); } try {//compra o bilhete Tickets ticket = new Tickets { SessionFK = SessionFK, UserFK = _context.User.Where(u => u.Id == applicationUser.User).Select(u => u.Id).FirstOrDefault(), Seat = session.Occupated_seats + 1 }; session.Occupated_seats += 1;//incrementa o numero de lugares ocupados na sessao _context.Add(ticket); await _context.SaveChangesAsync(); return(Redirect("~/Movies/Details/" + movie.Id)); } catch (Exception) { TempData["Message"] = "Erro inesperado."; return(Redirect("~/Movies/Details/" + movie.Id)); } }