public async Task <IActionResult> PutRoles(int id, Roles roles) { if (id != roles.Id) { return(BadRequest()); } _context.Entry(roles).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RolesExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <ActionResult <Tickets> > BuyTicket([FromForm] int Session) { if (Session == null) { return(BadRequest("Nenhuma sessão selecionada")); } if (!await _context.Sessions.AnyAsync(e => e.Id == Session)) { return(NotFound("Não existe nenhuma sessão com este ID.")); } var qtt = await _context.Ticket.Where(t => t.Cinema_Movie == _context.Sessions.Find(Session)).CountAsync(); if (qtt >= await _context.Sessions.Where(s => s.Id == Session).Select(s => s.Cinema.Capacity).FirstOrDefaultAsync()) { return(BadRequest("Sessão esgotada.")); } if (await _context.Ticket.Where(t => t.Cinema_Movie.Id == Session && t.User.Token == HttpContext.Request.Headers["token"].ToString()).AnyAsync()) { return(BadRequest("Já adquiriu este bilhete préviamente.")); } var userDob = await _context.User.Where(u => u.Token == HttpContext.Request.Headers["token"].ToString()).Select(t => t.DoB).FirstOrDefaultAsync(); var movieAgeReq = await _context.Sessions.Select(s => s.Movie.Min_age).FirstOrDefaultAsync(); if (DateTime.UtcNow.Subtract(userDob).Ticks - DateTime.UtcNow.AddYears(-18).Ticks > 0) { return(BadRequest("Não tem idade para assistir a este filme.")); } Tickets ticket = new Tickets { Cinema_Movie = await _context.Sessions.FindAsync(Session), Seat = qtt + 1, User = await _context.User.Where(u => u.Token == HttpContext.Request.Headers["token"].ToString()).FirstOrDefaultAsync(), }; var session = await _context.Sessions.Where(s => s.Id == Session).FirstOrDefaultAsync(); session.Occupated_seats += 1; _context.Ticket.Add(ticket); await _context.SaveChangesAsync(); return(StatusCode(201)); }
public async Task <IActionResult> PutSession(int id, [FromForm] DateTime Start, [FromForm] DateTime End, [FromForm] int Cinema, [FromForm] int Movie) { try { Start = Start.ToUniversalTime(); End = End.ToUniversalTime(); //verifica se já existe uma cinema a decorrer if (await _context.Sessions.Where(s => Start >= s.Start && Start <= s.End && s.Cinema.Id == Cinema).AnyAsync()) { return(BadRequest("Já existe uma sessão neste cinema entre esta data.")); } Movies movie = await _context.Movie.Where(c => c.Id == Movie).FirstOrDefaultAsync(); var session = await _context.Sessions.FindAsync(id); session.Start = Start; session.End = Start.AddMinutes(movie.Duration); session.Cinema = await _context.Cinema.Where(c => c.Id == Cinema).FirstOrDefaultAsync(); session.Movie = movie; _context.Entry(session).State = EntityState.Modified; await _context.SaveChangesAsync(); } catch (Exception) { if (!SessionExists(id)) { return(NotFound("Nenhuma sessão com este ID foi encontrada.")); } else { return(BadRequest("Erro inesperado")); } } return(Ok()); }
public async Task <IActionResult> PutCinema(int id, [FromForm] string Name, [FromForm] string Location, [FromForm] string City, [FromForm] int Capacity) { var anySession = await _context.Sessions.Where(s => s.Cinema.Id == id).AnyAsync(); if (anySession == false) { return(NotFound("Não é possivel alterar este cinema, pois há sessões associadas.")); } try { var cinema = await _context.Cinema.FindAsync(id); cinema.Name = Name; cinema.Location = Location; cinema.Capacity = Capacity; cinema.City = City; _context.Entry(cinema).State = EntityState.Modified; await _context.SaveChangesAsync(); } catch (DbUpdateException) { if (!CinemaExists(id)) { return(NotFound("Não existe nenhum cinema com esse ID.")); } else if (_context.Cinema.Where(c => c.Name == Name).FirstOrDefault() != null) { return(BadRequest("Já existe um cinema com esse nome.")); } else { return(BadRequest("Erro inesperado.")); } } return(Ok()); }
public async Task <IActionResult> PutMovie(int id, [FromForm] string Name, [FromForm] string Description, [FromForm] int Min_age, [FromForm] string Genres, [FromForm] int Duration, [FromForm] bool Highlighted, [FromForm] IFormFile Poster) { var anySession = await _context.Sessions.Where(s => s.Movie.Id == id).AnyAsync(); if (anySession == false) { return(NotFound("Não é possivel apagar este filme, pois há sessões associadas.")); } try { var movie = await _context.Movie.FindAsync(id); movie.Name = Name; movie.Description = Description; movie.Min_age = Min_age; movie.Genres = Genres; movie.Duration = Duration; movie.Highlighted = Highlighted; _context.Entry(movie).State = EntityState.Modified; string[] oldName = movie.Poster.Split('/'); if (Poster == null) { await _context.SaveChangesAsync(); } else if (!Poster.ContentType.Contains("image")) //se o poster não fôr imagem usa-se a imagem default { movie.Poster = _environment.WebRootPath + "/images/movies/default.png"; await _context.SaveChangesAsync(); if (oldName[^ 1] != "default.png")
public async Task <IActionResult> PutCurrentUser([FromForm] DateTime DoB, [FromForm] string Email, [FromForm] string Name, [FromForm] string Password, IFormFile Avatar) { try { var user = await _context.User.Where(u => u.Token == HttpContext.Request.Headers["token"].ToString()).FirstOrDefaultAsync(); if (user == null) { return(BadRequest("Nenhum utilizador com este ID")); } user.DoB = DoB; user.Email = Email; user.Name = Name; //password encriptada if (Password != null) { user.Hash = BitConverter.ToString(SHA256.Create().ComputeHash(UTF8Encoding.Default.GetBytes(Password))); } _context.Entry(user).State = EntityState.Modified; string[] oldName = user.Avatar.Split('/'); if (Avatar == null) { await _context.SaveChangesAsync(); } else if (!Avatar.ContentType.Contains("image")) //se o poster não fôr imagem usa-se a imagem default { user.Avatar = _environment.WebRootPath + "/images/users/default.png"; await _context.SaveChangesAsync(); if (oldName[^ 1] != "default.png")