Ejemplo n.º 1
0
        public async Task <int> AdicionarAvaliacaoOpcaoAsync(string descricao, bool resposta, int id_avaliacao_questao)
        {
            var avaliacaoOpcao = new AvaliacaoOpcao()
            {
                IdAvaliacaoQuestao = id_avaliacao_questao,
                Descricao          = descricao,
                Resposta           = resposta,
                CriadoEm           = DateTime.Now,
                AtualizadoEm       = DateTime.Now
            };

            _avaliacaoOpcaoRepository.Adicionar(avaliacaoOpcao);
            await _avaliacaoOpcaoRepository.SaveChangesAsync();

            return(avaliacaoOpcao.Id);
        }
Ejemplo n.º 2
0
        public async Task <int> SalvarProvaAsync(ProvaQueryResult prova, string login)
        {
            var aluno = await _alunoRepository.ObterPorLogin(login);

            if (aluno == null)
            {
                throw new Exception("O aluno não foi localizado!");
            }

            var publicacao = await _publicacaoRepository.ObterComRelacoesAsync(prova.PublicacaoId);

            if (publicacao == null)
            {
                throw new Exception("A publicacao não foi localizada!");
            }

            if (publicacao.DataInicio >= DateTime.Now || publicacao.DataFim <= DateTime.Now)
            {
                throw new Exception("Prova fora da data de realização!");
            }

            if (!publicacao.Turma.Alunos.Select(a => a.Id).ToList().Contains(aluno.Id))
            {
                throw new Exception("Publicação não disponível para esse aluno!");
            }

            var Novaprova = new Prova()
            {
                IdAluno      = aluno.Id,
                IdPublicacao = publicacao.Id,
                IdAvaliacao  = publicacao.IdAvaliacao,
                CriadoEm     = DateTime.Now,
                AtualizadoEm = DateTime.Now,
                Questoes     = prova.Questoes.Select(q => new ProvaQuestao
                {
                    IdAvaliacaoQuestao = q.QuestaoId,
                    IdProva            = 0,
                    Nota         = 0,
                    AtualizadoEm = DateTime.Now,
                    CriadoEm     = DateTime.Now,
                }).ToList()
            };

            Avaliacao av = publicacao.Avaliacao;

            for (int i = 0; i < av.Questoes.Count; i++)
            {
                Novaprova.Questoes[i].Opcoes = new List <ProvaOpcao>();
                if (av.Questoes[i].Tipo == 1)
                {
                    for (int j = 0; j < av.Questoes[i].Opcoes.Count; j++)
                    {
                        AvaliacaoOpcao        op         = av.Questoes[i].Opcoes[j];
                        OpcaoProvaQueryResult opResposta = prova.Questoes[i].Opcoes[j];

                        Novaprova.Questoes[i].Opcoes.Add(new ProvaOpcao {
                            IdAvaliacaoOpcao = opResposta.OpcaoAvaliacaoId,
                            Resposta         = opResposta.Resposta
                        });
                        if (op.Resposta == opResposta.Resposta)
                        {
                            Novaprova.Questoes[i].Nota = 1;
                        }
                    }
                }
                else
                {
                    double valorOpcao = 1.0 / av.Questoes[i].Opcoes.Count();
                    for (int j = 0; j < av.Questoes[i].Opcoes.Count; j++)
                    {
                        AvaliacaoOpcao        op         = av.Questoes[i].Opcoes[j];
                        OpcaoProvaQueryResult opResposta = prova.Questoes[i].Opcoes[j];

                        Novaprova.Questoes[i].Opcoes.Add(new ProvaOpcao
                        {
                            IdAvaliacaoOpcao = opResposta.OpcaoAvaliacaoId,
                            Resposta         = opResposta.Resposta
                        });
                        if (op.Resposta == opResposta.Resposta)
                        {
                            Novaprova.Questoes[i].Nota += valorOpcao;
                        }
                    }
                }
            }

            _provaRepository.Adicionar(Novaprova);
            await _provaRepository.SaveChangesAsync();

            return(Novaprova.Id);
        }