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!" } }); }
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)); }