Ejemplo n.º 1
0
        ///
        //Método para efetuar a editaçao de uma publicacao
        public Retorno EditarPost(string id, PostAtt postatt, string tokenAutor)
        {
            //tento realizar a conversao do guid
            if (!Guid.TryParse(id, out Guid ident))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Id inválido"
                           }
                }
            }
            ;

            if (!Guid.TryParse(tokenAutor, out Guid token))
            {
                return new Retorno {
                           Status = false, Resultado = "Token inválido"
                }
            }
            ;

            if (postatt.Titulo == null)
            {
                postatt.Titulo = "";
            }

            if (postatt.Titulo.Length < 8 || postatt.Texto.Length > 250)
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Tamanho do titulo inválido, minimo de 5 e maximo de 250 caracteres"
                           }
                }
            }
            ;

            if (postatt.Texto == null)
            {
                postatt.Texto = "";
            }

            if (postatt.Texto.Length < 50)
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Tamanho do texto inválido, minimo de 50 caracteres"
                           }
                }
            }
            ;

            //checko se o post realmente existe
            var umPost = _arm.Posts.Find(c => c.Id == ident); if (umPost == null)

            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Esse post não existe!"
                           }
                }
            }
            ;

            //checko se o usuario tem autorização para editar o post
            var usuarioForum = _arm.Usuarios.Find(e => e.Id == token);

            if (usuarioForum == null)
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Usuario nao existe na base de dados"
                           }
                }
            }
            ;

            if (umPost.Autor.Email != usuarioForum.Email)
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Autorização para editar esse post negada"
                           }
                }
            }
            ;

            //mapeamento
            _mapper.Map(postatt, umPost);


            //Validação para limitar a mudança de status de aberta nos post do tipo tutorial
            if (umPost.Tipo.ToUpper() == "TUTORIAL")
            {
                umPost.Status = null;
            }

            //verifico se o status fornecido é valido
            if (umPost.Status.ToUpper() != "FECHADA" && umPost.Status.ToUpper() != "ABERTA")
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Para fechar uma publicacao , é necessario mudar o status para fechada"
                           }
                }
            }
            ;


            Arquivo.Salvar(_arm);
            return(new Retorno {
                Status = true, Resultado = umPost
            });
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> Atualizar([FromHeader] string tokenAutor, [FromBody] PostAtt postAtt, string id)
        {
            var Core = new PostCore(_mapper).EditarPost(id, postAtt, tokenAutor);

            return(Core.Status ? Ok(Core) : (IActionResult)BadRequest(Core));
        }