internal ListaVotoView ConsultaVotos(string id) { Usuarios.FirstOrDefault(p => p.Id.ToString() == id) .ExcecaoSeNull("Este gamelão não foi encontrado."); var tempoVotacao = string.Empty; if (_inicioVotacao.HasValue) { var calc = _inicioVotacao.Value.AddMinutes(Consts.Consts.TempoVotacao) - DateTime.Now; if (calc.TotalSeconds > 0) { tempoVotacao = "Tempo para votar " + Convert.ToDateTime(calc.ToString()).ToString("HH:mm:ss"); } else { calc = _inicioVotacao.Value.AddMinutes(Consts.Consts.TempoSessao) - DateTime.Now; tempoVotacao = calc.TotalSeconds > 0 ? "Tempo para proxima sessão " + Convert.ToDateTime(calc.ToString()).ToString("HH:mm:ss") : "Pode iniciar uma nova votação!"; } } return(new ListaVotoView { VotosSim = Votos.Count(p => p.TipoVoto == EnumVoto.Sim), VotosNao = Votos.Count(p => p.TipoVoto == EnumVoto.Nao), VotosTantoFaz = Votos.Count(p => p.TipoVoto == EnumVoto.TantoFaz), Votos = VotoView.Novo(Votos), Pergunta = _pergunta, NomeDoSujeitoQueIniciouSessao = _nomeDoSujeitoQueIniciouSessao, InicioVotacao = _inicioVotacao, TempoVotacao = tempoVotacao, VotacaoEmAndamento = _inicioVotacao.HasValue && DateTime.Now < _inicioVotacao.Value.AddMinutes(Consts.Consts.TempoVotacao), SessaoEmAndamento = _inicioVotacao.HasValue, Id = _guid.ToString() }); }
public async Task <IActionResult> VotarComentario([FromHeader] string tokenAutor, [FromBody] VotoView Voto) { var Core = new ComentarioCore(_mapper).VotarComentario(tokenAutor, Voto); return(Core.Status ? Ok(Core) : (IActionResult)BadRequest(Core)); }
public Retorno VotarComentario(string tokenAutor, VotoView 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.Comentarios.Any(p => p.Id == voto.ComentarioId)) { return new Retorno { Status = false, Resultado = new List <string> { "Comentario nao existe" } } } ; var VotoMap = _mapper.Map <VotoView, Voto>(voto); var votosDoComentario = _arm.Votos.Where(c => c.ComentarioId == VotoMap.ComentarioId).ToList(); if (votosDoComentario.Any(c => c.UsuarioId == token)) { return new Retorno { Status = false, Resultado = new List <string> { "Não é possivel votar duas vezes no mesmo comentario!" } } } ; VotoMap.UsuarioId = token; if (!Double.TryParse(voto.Nota, out double notaVot) || !votosPossiveis.Contains(notaVot)) { return new Retorno { Status = false, Resultado = new List <string> { "Voto inváldo" } } } ; _arm.Votos.Add(VotoMap); Arquivo.Salvar(_arm); return(new Retorno { Status = true, Resultado = new List <string> { "Voto computado com sucesso!" } }); }