예제 #1
0
        public async Task <IActionResult> Comentar(PostagemNovaViewModel dadosComentario)
        {
            ViewData["Comentario"] = dadosComentario.Texto;

            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Detalhes", dadosComentario.PostagemOriginalId));
            }

            Postagem postagemOriginal = await _contexto.Postagens.FindAsync(dadosComentario.PostagemOriginalId);

            if (postagemOriginal == null)
            {
                return(RedirectToAction("Detalhes", dadosComentario.PostagemOriginalId));
            }

            Usuario usuario = await Usuario.ObterUsuarioAsync(User, _contexto);

            Postagem comentario = await Postagem.PreencherAsync(dadosComentario, postagemOriginal, usuario);

            comentario.Comentario = true;

            _contexto.Postagens.Add(comentario);
            await _contexto.SaveChangesAsync();

            return(RedirectToAction("Detalhes", new { postagemId = dadosComentario.PostagemOriginalId }));
        }
예제 #2
0
        public async Task <IActionResult> Enviar(PostagemNovaViewModel dadosPostagem)
        {
            if (!ModelState.IsValid)
            {
                return(View("Index", dadosPostagem));
            }

            Usuario usuario = await Usuario.ObterUsuarioAsync(User, _contexto);

            if (usuario == null)
            {
                ModelState.AddModelError(string.Empty, "Usuário não encontrado. Tente sair e fazer login novamente.");
                return(View("Index", dadosPostagem));
            }

            List <string> errosValidacaoArquivos = new List <string>(6);

            foreach (var arquivoFormulario in dadosPostagem.Arquivos)
            {
                Arquivo.ValidarArquivoFormulario(arquivoFormulario, errosValidacaoArquivos);
            }

            if (errosValidacaoArquivos.Count > 0)
            {
                errosValidacaoArquivos.ForEach(erro => ModelState.AddModelError(string.Empty, erro));
                return(View("Index", dadosPostagem));
            }

            Postagem postagem;

            try
            {
                postagem = await Postagem.PreencherAsync(dadosPostagem, null, usuario);
            }
            catch (Exception e)
            {
                ModelState.AddModelError(string.Empty, "Não foi possível registrar a postagem.\n" + e.Message);
                return(View("Index", dadosPostagem));
            }

            await _contexto.Postagens.AddAsync(postagem);

            await _contexto.SaveChangesAsync();

            TempData["Sucesso"] = true;
            return(RedirectToAction("Index"));
        }