public IActionResult ConcluirProva([FromBody] ProvaInputData provaInputData)
        {
            //_provaService.AdicionarProvaAsync(provaInputData, LoginUsuario);
            try
            {
                if (provaInputData?.AvaliacaoId > 0)
                {
                    //TODO - Gravar prova do aluno.
                    //Ao gravar a prova, deve ser atribuída a nota por questão conforme especificação do projeto.
                    //A nota da questão **NÃO É A NOTA DA PROVA** é um valor decimal que varia de zero a 1 (um)
                    //A nota da prova será calculada no momento de recuperar a lista de provas publicadas do aluno (view Index)
                    _provaService.AdicionarProvaAsync(provaInputData, LoginUsuario);

                    return(Json(new { Success = true }));
                }
                else
                {
                    return(Json(new { Success = false, Error = "O objeto recebido está corrompido." }));
                }
            }
            catch (System.Exception ex)
            {
                return(Json(new { Success = false, Error = ex.Message }));
            }
        }
Beispiel #2
0
        public IActionResult ConcluirProva([FromBody] ProvaInputData provaInputData)
        {
            //try
            //{
            if (provaInputData?.AvaliacaoId > 0)
            {
                //TODO - Gravar prova do aluno.
                //Ao gravar a prova, deve ser atribuída a nota por questão conforme especificação do projeto.
                //A nota da questão **NÃO É A NOTA DA PROVA** é um valor decimal que varia de zero a 1 (um)
                //A nota da prova será calculada no momento de recuperar a lista de provas publicadas do aluno (view Index)

                var opcaoAvaliacao = new List <OpcaoAvaliacao>();

                foreach (var item in provaInputData.Questoes)
                {
                    opcaoAvaliacao.AddRange(item.Opcoes.Select(x => new OpcaoAvaliacao {
                        Verdadeira = x.Resposta, QuestaoId = item.QuestaoId, Id = x.OpcaoAvaliacaoId
                    }));
                }

                _provaService.SalvarProva(provaInputData, LoginUsuario);

                return(Json(new { Success = true }));
            }
            else
            {
                return(Json(new { Success = false, Error = "O objeto recebido está corrompido." }));
            }
            //  }
            // catch (System.Exception ex)
            // {
            //     return Json(new { Success = false, Error = ex.Message });
            // }
        }
Beispiel #3
0
        public async Task <int> AdicionarProvaAsync(ProvaInputData provaInputData, string login)
        {
            var aluno     = _alunoRepository.ObterPorLogin(login);
            var avaliacao = await _avaliacaoRepository.ObterComQuestoresAsync(provaInputData.AvaliacaoId);

            Prova prova = new Prova();

            prova.AlunoId     = aluno.Id;
            prova.AvaliacaoId = provaInputData.AvaliacaoId;
            prova.DataProva   = DateTime.Now;
            prova.Aluno       = aluno;
            prova.Avaliacao   = avaliacao;

            foreach (var questao in provaInputData.Questoes)
            {
                //prova.QuestoesProva = new List<QuestaoProva>();
                var questaoProva = new QuestaoProva()
                {
                    QuestaoId = questao.QuestaoId
                };
                prova.QuestoesProva = new List <QuestaoProva>();
                prova.QuestoesProva.Add(questaoProva);

                foreach (var opcao in questao.Opcoes)
                {
                    //questaoProva.OpcoesProva = new List<OpcaoProva>();
                    var opcaoProva = new OpcaoProva()
                    {
                        OpcaoAvaliacaoId = opcao.OpcaoAvaliacaoId, Resposta = opcao.Resposta
                    };
                    questaoProva.OpcoesProva = new List <OpcaoProva>();
                    questaoProva.OpcoesProva.Add(opcaoProva);
                }
            }

            //var avaliacao = await _avaliacaoRepository.ObterComQuestoresAsync(provaInputData.AvaliacaoId);

            foreach (var questao in prova.QuestoesProva)
            {
                var questaoAvaliacao = avaliacao.Questoes.Find(y => y.Id == questao.QuestaoId);
                if (questaoAvaliacao.Tipo == 1)
                {
                    var idVerdadeira = questaoAvaliacao.Opcoes.Find(x => x.Verdadeira).Id;
                    questao.Nota = questao.OpcoesProva.Find(y => y.OpcaoAvaliacaoId == idVerdadeira && y.Resposta) == null ? 0 : 1;
                }
                if (questaoAvaliacao.Tipo == 2)
                {
                    var respostas = 0;
                    foreach (var opcoes in questao.OpcoesProva)
                    {
                        if (opcoes.Resposta == questaoAvaliacao.Opcoes.Find(x => x.Id == opcoes.OpcaoAvaliacaoId).Verdadeira)
                        {
                            respostas++;
                        }
                    }

                    if (respostas != 0)
                    {
                        questao.Nota = (decimal)respostas / (decimal)questaoAvaliacao.Opcoes.Count;
                    }
                    else
                    {
                        questao.Nota = respostas;
                    }
                }
            }

            avaliacao.Provas = new List <Prova>();
            _provaRepository.Adicionar(prova);

            await _provaRepository.SaveChangesAsync();

            return(prova.Id);
        }
Beispiel #4
0
        public void SalvarProva(ProvaInputData provaInputData, string login)
        {
            //Registro aluno - 1
            var aluno     = _alunoRepository.ObterPorLogin(login);
            var avaliacao = _avaliacaoRepository.ObterAvalicao(provaInputData.AvaliacaoId);
            //var questoeProva = _questaoRepository.Consultar(x => x.ProvaId == provaInputData.AvaliacaoId).ToList();
            //Objeto prova - 2
            Prova prova = new Prova();

            prova.DataProva   = DateTime.Now;
            prova.AvaliacaoId = provaInputData.AvaliacaoId;
            prova.AlunoId     = aluno.Id;
            prova.Aluno       = aluno;
            prova.Avaliacao   = avaliacao;

            foreach (var x in provaInputData.Questoes)
            {
                var questaoProva = new QuestaoProva()
                {
                    QuestaoId = x.QuestaoId
                };
                prova.QuestoesProva.Add(questaoProva);
                foreach (var y in x.Opcoes)
                {
                    var opcaoProva = new OpcaoProva()
                    {
                        OpcaoAvaliacaoId = y.OpcaoAvaliacaoId, Resposta = y.Resposta
                    };
                    questaoProva.OpcoesProva.Add(opcaoProva);
                }
            }
            //Calcula nota
            var avaliacaoTeste = _avaliacaoRepository.ObterComQuestoresAsync(provaInputData.AvaliacaoId);

            foreach (var x in prova.QuestoesProva)
            {
                var acertos          = new List <OpcaoProva>();
                var questaoAvaliacao = avaliacaoTeste.Result.Questoes.Find(y => y.Id == x.QuestaoId);

                if (questaoAvaliacao.Tipo == 1)
                {
                    var idVerdadeira = questaoAvaliacao.Opcoes.Find(z => z.Verdadeira).Id;
                    x.Nota = x.OpcoesProva.Find(y => y.OpcaoAvaliacaoId == idVerdadeira && y.Resposta) == null ? 0 : 1;
                }
                if (questaoAvaliacao.Tipo == 2)
                {
                    var respostas = 0;
                    foreach (var y in x.OpcoesProva)
                    {
                        if (y.Resposta == questaoAvaliacao.Opcoes.Find(s => s.Id == y.OpcaoAvaliacaoId).Verdadeira)
                        {
                            respostas++;
                        }
                    }
                    if (respostas != 0)
                    {
                        x.Nota = (decimal)respostas / (decimal)questaoAvaliacao.Opcoes.Count;
                    }
                    else
                    {
                        x.Nota = respostas;
                    }
                }
            }
            _provaRepository.Adicionar(prova);
            _provaRepository.SaveChanges();
        }