Beispiel #1
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Name,Capacity,City,Location")] Cinemas cinema)
        {
            if (id != cinema.Id)
            {
                RedirectToAction(nameof(Index));
            }

            if (ModelState.IsValid)
            {
                try
                {
                    if (await _context.Sessions.Where(s => s.Movie.Id == id).AnyAsync())//verifica se o filme tem sessoes agendadas
                    {
                        ViewData["message"] = "Não é possivel alterar o cinema, tendo sessões agendadas para o mesmo.";
                        return(View(cinema));
                    }

                    if (_context.Cinemas.Where(c => c.Name == cinema.Name && c.Id != cinema.Id).Any())//verifica se existe algum cinema com o mesmo nome
                    {
                        ViewData["message"] = "Já existe um cinema com o mesmo nome.";
                        return(View(cinema));
                    }

                    _context.Update(cinema);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!CinemasExists(cinema.Id))
                    {
                        RedirectToAction(nameof(Index));
                    }
                    else
                    {
                        RedirectToAction(nameof(Index));
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(cinema));
        }
Beispiel #2
0
        public async Task <IActionResult> Edit(int Id, string Email, string Name, DateTime DoB, string Role, IFormFile Avatar)
        {
            var user = _context.User.Find(Id);

            if (user == null)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                if (_context.User.Where(u => u.Email == Email && u.Id != Id).Any())//verifica se existe algum utilizador com o mesmo email
                {
                    ViewData["message"] = "Já existe um utilizador com o mesmo email.";
                    return(View(_context.User.Find(Id)));
                }

                try
                {
                    //verifica se o avatar mudou
                    if (Avatar == null)
                    {
                    }                                               //não muda a imagem
                    else if (!Avatar.ContentType.Contains("image")) //se o poster não fôr imagem usa-se a imagem default
                    {
                        //apaga a antiga imagem
                        if (user.Avatar != "default.png")
                        {
                            System.IO.File.Delete(_environment.WebRootPath + "/images/users/" + user.Avatar);
                        }

                        //guarda a nova imagem
                        user.Avatar = "default.png";
                    }
                    else
                    { //update atualiza a imagem
                        //apaga o antigo poster excepto se for o poster default
                        if (user.Avatar != "default.png")
                        {
                            System.IO.File.Delete(_environment.WebRootPath + "/images/users/" + user.Avatar);
                        }

                        Guid g;
                        g = Guid.NewGuid();

                        string extensao = Path.GetExtension(Avatar.FileName).ToLower();

                        // caminho do ficheiro
                        user.Avatar = g.ToString() + extensao;

                        //guarda a imagem
                        using var fileStream = new FileStream(_environment.WebRootPath + "/images/users/" + g.ToString() + extensao, FileMode.Create);
                        await Avatar.CopyToAsync(fileStream);
                    }
                    //altera os dados do utilizador
                    user.Email = Email;
                    user.Name  = Name;
                    user.DoB   = DoB;
                    user.Role  = Role;
                    _context.Update(user);

                    //altera os dados do application user
                    var netUser = await _context.Users.Where(u => u.User == Id).FirstOrDefaultAsync();

                    netUser.UserName = Email;
                    netUser.Email    = Email;
                    netUser.Nome     = Name;

                    //altera o cargo dependendo da opcao escolhida
                    var userRole = await _context.UserRoles.Where(uR => uR.UserId == netUser.Id).FirstOrDefaultAsync();

                    if (userRole.RoleId == "1" && Role == "User") //remove Admin e dá User
                    {
                        await _userManager.RemoveFromRoleAsync(netUser, "Admin");

                        await _userManager.AddToRoleAsync(netUser, "User");
                    }
                    else if (userRole.RoleId == "2" && Role == "Admin") // remove User e dá Admin
                    {
                        await _userManager.RemoveFromRoleAsync(netUser, "User");

                        await _userManager.AddToRoleAsync(netUser, "Admin");
                    }
                    await _userManager.UpdateAsync(netUser);  //edita o application user com os novos dados

                    _context.Update(userRole);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!UsersExists(Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }

            List <SelectListItem> list = new List <SelectListItem> {
                new SelectListItem()
                {
                    Text = "User", Value = "User"
                },
                new SelectListItem()
                {
                    Text = "Admin", Value = "Admin"
                }
            };

            ViewData["Roles"] = new SelectList(list, "Value", "Text");
            return(View(user));
        }
        public async Task <IActionResult> Edit(int id, int Id, string Name, string Description, string Genres, int Duration, int Min_age, bool Highlighted, IFormFile Poster)
        {
            Movies movie = _context.Movies.Find(Id);

            if (id != movie.Id)
            {
                RedirectToAction(nameof(Index));
            }

            if (ModelState.IsValid)
            {
                if (_context.Movies.Where(m => m.Name == movie.Name && m.Id != movie.Id).Any())//verifica se existe algum filme com o mesmo nome
                {
                    ViewData["message"] = "Já existe um filme com o mesmo nome.";
                    return(View(movie));
                }

                try
                {
                    //verifica se há sessões ativas para o filme
                    if (await _context.Sessions.Where(s => s.Movie.Id == id).AnyAsync())
                    {
                        ViewData["message"] = "Não é possivel alterar o filme, tendo sessões agendadas para o mesmo.";
                        return(View(movie));
                    }

                    //verifica se o cartaz mudou
                    if (Poster == null)
                    {
                    }                                               //não muda a imagem
                    else if (!Poster.ContentType.Contains("image")) //se o poster não fôr imagem usa-se a imagem default
                    {
                        //apaga a antiga imagem
                        if (movie.Poster != "default.png")
                        {
                            System.IO.File.Delete(_environment.WebRootPath + "/images/movies/" + movie.Poster);
                        }

                        //guarda a nova imagem
                        movie.Poster = "default.png";
                        await _context.SaveChangesAsync();
                    }
                    else
                    { //update atualiza a imagem
                        //apaga o antigo poster excepto se for o poster default
                        if (movie.Poster != "default.png")
                        {
                            System.IO.File.Delete(_environment.WebRootPath + "/images/movies/" + movie.Poster);
                        }

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

                    movie.Name        = Name;
                    movie.Description = Description;
                    movie.Genres      = Genres;
                    movie.Duration    = Duration;
                    movie.Highlighted = Highlighted;
                    movie.Min_age     = Min_age;

                    _context.Update(movie);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!MoviesExists(movie.Id))
                    {
                        RedirectToAction(nameof(Index));
                    }
                    else
                    {
                        RedirectToAction(nameof(Index));
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(movie));
        }
        public async Task <IActionResult> OnPostAsync()
        {
            var netUser = await _userManager.GetUserAsync(User);

            if (netUser == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            if (!ModelState.IsValid)
            {
                LoadAsync(netUser);
                return(Page());
            }
            var bdUser = await _context.User.FindAsync(netUser.User);

            var file = HttpContext.Request.Form.Files.GetFile("Avatar");

            //verifica se o avatar mudou
            if (file == null)
            {
            }                                             //não muda a imagem
            else if (!file.ContentType.Contains("image")) //se o poster não fôr imagem usa-se a imagem default
            {
                //apaga a antiga imagem
                if (bdUser.Avatar != "default.png")
                {
                    System.IO.File.Delete(_environment.WebRootPath + "/images/users/" + bdUser.Avatar);
                }

                //guarda a nova imagem
                bdUser.Avatar = "default.png";
            }
            else
            { //update atualiza a imagem
                //apaga o antigo poster excepto se for o poster default
                if (bdUser.Avatar != "default.png")
                {
                    System.IO.File.Delete(_environment.WebRootPath + "/images/users/" + bdUser.Avatar);
                }

                Guid g;
                g = Guid.NewGuid();

                string extensao = Path.GetExtension(file.FileName).ToLower();

                // caminho do ficheiro
                bdUser.Avatar = g.ToString() + extensao;

                //guarda a imagem
                using var fileStream = new FileStream(_environment.WebRootPath + "/images/users/" + g.ToString() + extensao, FileMode.Create);
                await file.CopyToAsync(fileStream);
            }

            if (Input.Nome != netUser.Nome) //atualiza o nome
            {
                netUser.Nome = Input.Nome;
            }

            if (Input.DoB != bdUser.DoB) //atualiza a data de nascimento
            {
                bdUser.DoB = Input.DoB;
            }

            _context.Update(bdUser); //atualiza a imagem
            await _userManager.UpdateAsync(netUser);

            await _context.SaveChangesAsync();

            await _signInManager.RefreshSignInAsync(netUser);

            StatusMessage = "O seu perfil foi atualizado.";
            return(RedirectToPage());
        }