Пример #1
0
        public async Task <bool> AddVotoSemanal(int IDTurmaAluno, int IDRestaurante, int IDPeriodo)
        {
            var msg     = "";
            var periodo = _periodoBLL.GetPeriodoAsync(IDPeriodo).Result;

            // Verificar se existe o periodo passado como parâmetro
            if (periodo != null)
            {
                if (periodo.SNAtivo.Equals('S') && periodo.SNProcessado.Equals('N'))
                {
                    //Validar se aluno já votou
                    var turmaConfig = _turmaConfiguracaoBLL.GetTurmaConfiguracaoAsync(periodo.IDTurma).Result;
                    var qtdVotos    = await _turmaConfiguracaoBLL.GetQtdVotacaoSemanal(periodo.IDTurma);

                    var votosAlunoResult = await _votoSemanalRepository.GetAllVotosPeriodoAlunoAsync(IDPeriodo, IDTurmaAluno);

                    if (votosAlunoResult.Count < qtdVotos || votosAlunoResult == null)
                    {
                        //Validar dia e hora de inicio e termino de votação
                        //Validar restaurante já foi votado pelo aluno no periodo.
                        foreach (var votos in votosAlunoResult)
                        {
                            if (votos.IDRestaurante == IDRestaurante)
                            {
                                msg = "O restaurante já foi votado pelo aluno nesse período e não pode ser votado novamente.";
                                throw new Exception(msg);
                            }
                        }

                        //Validar TurmaAluno
                        var votoSemanal = new VotoSemanal(0, IDRestaurante, IDPeriodo, IDTurmaAluno, DateTime.Now);

                        _votoSemanalRepository.AddVotoSemanal(votoSemanal);
                        await _votoSemanalRepository.UnitOfWork.Commit();

                        return(true);
                    }
                    msg = "O Aluno já atingiu o limite de votos para o período";
                    throw new Exception(msg);
                }
                msg = "O periodo não esta ativo ou já foi processado.";
                throw new Exception(msg);
            }
            msg = "O período informado não existe.";
            throw new Exception(msg);
        }
 public void AddVotoSemanal(VotoSemanal votoSemanal)
 {
     _dbContext.VotoSemanal.Add(votoSemanal);
 }