コード例 #1
0
        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());
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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")
コード例 #6
0
        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")