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 }));
        }
Esempio n. 3
0
        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));
        }