public async Task <IActionResult> Edit(int id, [Bind("ID,IDUser,IDEvento,Permissao")] EventoUtilizadores eventoUtilizadores) { if (id != eventoUtilizadores.ID) { return(NotFound()); } //Guarda as alteraçoes if (ModelState.IsValid) { try { _context.Update(eventoUtilizadores); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!EventoUtilizadoresExists(eventoUtilizadores.ID)) { return(NotFound()); } else { throw; } } //Redireciona de volta para o evento return(Redirect("~/Evento/Details/" + eventoUtilizadores.IDEvento)); } return(Redirect("~/Evento/Details/" + eventoUtilizadores.IDEvento)); }
public async Task <IActionResult> Create(int id, [Bind("IDEU,IDUser,IDEvento,Permissao")] EventoUtilizadores eventoUtilizadores, string passEvento) { //procura a chave do evento na BD var pass = await _context.Evento .Where(v => v.ID == id) .Select(v => v.passEvento) .FirstOrDefaultAsync(); //Testa de as chave recebida e a da BD coincide if (pass != passEvento) { ViewBag.pass = "******"; return(View()); } //id do evento var evento = await _context.Evento.FindAsync(id); if (evento == null) { return(NotFound()); } if (ModelState.IsValid) { //Pesquisa na DB pelo ID do utilizador atual int idUser = _context.Utilizadores.Where(u => u.UserId == _userManager.GetUserId(User)).Select(u => u.ID).FirstOrDefault(); //Pesquisa na tabela EventoUtilizadores por o id do utilizador atual var idDB = await _context.EventoUtilizadores .Where(v => v.IDEvento == id) .Where(v => v.IDUser == idUser) .Select(v => v.IDUser) .FirstOrDefaultAsync(); //Insere na BD if (!idDB.Equals(idUser)) { eventoUtilizadores.IDEvento = id; eventoUtilizadores.IDUser = idUser; eventoUtilizadores.Permissao = "Participante"; _context.Add(eventoUtilizadores); await _context.SaveChangesAsync(); } } return(RedirectToAction("Details", "Evento", new { id })); }
public async Task <IActionResult> Create([Bind("ID,Nome,Logo,Local,DataInicio,DataFim,Descricao,Estado,Publico,passEvento")] Evento evento, EventoUtilizadores eventoUtilizadores, IFormFile logoEvento) { //Se o evento é privado, retorna a view da criaçao com o campo para inserir a Password if (evento.Publico == false && evento.passEvento == null) { ViewBag.pass = "******"; ViewBag.check = false; return(View()); } if (evento.DataInicio > evento.DataFim) { ViewBag.ErrData = "ErroData"; return(View()); } // variaveis auxiliares para processar a fotografia string caminhoLogo = ""; bool haImagem = false; // Se não houver fotografia adicionar uma imagem default do sistema if (logoEvento == null) { evento.Logo = "logoDefault.jpg"; } else { // Se houver imagem // Verificar se é uma imagem if (logoEvento.ContentType == "image/jpeg" || logoEvento.ContentType == "image/png") { // o ficheiro é uma imagem válida // preparar a imagem para ser guardada no disco rígido // e o seu nome associado ao Evento Guid g; g = Guid.NewGuid(); string extensao = Path.GetExtension(logoEvento.FileName).ToLower(); string nome = g.ToString() + extensao; // onde guardar o ficheiro caminhoLogo = Path.Combine(_caminho.WebRootPath, "Imagens\\LogosEventos", nome); // associar o nome do ficheiro ao Evento evento.Logo = nome; // assinalar que existe imagem e é preciso guardá-la no disco rígido haImagem = true; } else { // há imagem, mas não é do tipo correto evento.Logo = "logoDefault.jpg"; } } if (ModelState.IsValid) { try { //insere na BD _context.Add(evento); await _context.SaveChangesAsync(); //Vai bustar o ultimo registo á BD eventoUtilizadores.IDEvento = _context.Evento.Max(e => e.ID); eventoUtilizadores.IDUser = _context.Utilizadores.Where(u => u.UserId == _userManager.GetUserId(User)).Select(u => u.ID).FirstOrDefault(); eventoUtilizadores.Permissao = "Administrador"; _context.Add(eventoUtilizadores); await _context.SaveChangesAsync(); // se há imagem, vou guardá-la no disco rígido if (haImagem) { using var stream = new FileStream(caminhoLogo, FileMode.Create); await logoEvento.CopyToAsync(stream); } return(RedirectToAction(nameof(Index))); } catch (Exception) { } } return(View(evento)); }