示例#1
0
        public Retorno VotarPost(string tokenAutor, VotoPostView voto)
        {
            var votosPossiveis = new List <double> {
                0.5, 1, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0, 4.5, 5.0
            };

            if (!Guid.TryParse(tokenAutor, out Guid token) || !_arm.Usuarios.Any(e => e.Id == token))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Dádos inválidos"
                           }
                }
            }
            ;

            if (!_arm.Posts.Any(p => p.Id == voto.PostId))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Publicacao nao existe"
                           }
                }
            }
            ;

            var votosdoPost = _arm.Votos.Where(c => c.PostId == voto.PostId).ToList();

            if (votosdoPost.Any(c => c.UsuarioId == token))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Não é possivel votar duas vezes no mesmo comentario!"
                           }
                }
            }
            ;

            var votoMap = _mapper.Map <VotoPostView, VotoPost>(voto);

            if (!Double.TryParse(votoMap.Nota, out double notaVot))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Voto inváldo"
                           }
                }
            }
            ;

            if (!votosPossiveis.Contains(notaVot))
            {
                return new Retorno {
                           Status = false, Resultado = new List <string> {
                               "Voto inváldo, escreve um voto entre 0.5 e 5"
                           }
                }
            }
            ;

            votoMap.UsuarioId = token;

            _arm.VotosPost.Add(votoMap);
            Arquivo.Salvar(_arm);

            return(new Retorno {
                Status = true, Resultado = new List <string> {
                    "Voto computado com sucesso!"
                }
            });
        }
示例#2
0
        public async Task <IActionResult> VotarComentario([FromHeader] string tokenAutor, [FromBody] VotoPostView Voto)
        {
            var Core = new PostCore(_mapper).VotarPost(tokenAutor, Voto);

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