public void Deveria_arredondar_a_media_pra_meio_ponto_caso_os_decimais_seja_menor_que_75()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues").ComNotaDe(maria, 5)
                           .ComNotaDe(jose, 8).ComNotaDe(joao, 10).Build();

            avaliador.Avaliar(prova);

            Assert.AreEqual(7.5, avaliador.ObtemMedia());
        }
        public void Deveria_receber_um_lancamento_de_nota()
        {
            Prova prova = new Prova(DateTime.Now);

            prova.LancarNota(new NotaProva(10, new Aluno(1, "Rech")));

            prova.Notas.Should().HaveCount(1);
            prova.Notas[0].Valor.Should().Be(10);
        }
        public void Nao_deveria_lancar_2_notas_para_o_mesmo_aluno()
        {
            Prova prova = new Prova(DateTime.Now);

            prova.LancarNota(new NotaProva(10, new Aluno(1, "Rech")));
            prova.LancarNota(new NotaProva(10, new Aluno(1, "Rech")));

            prova.Notas.Should().HaveCount(1);
            prova.Notas[0].Valor.Should().Be(10);
        }
        public void Nao_deveria_lancar_nota_para_alunos_reprovados_por_falta()
        {
            Prova prova = new Prova(DateTime.Now);

            prova.LancarNota(new NotaProva(10, new Aluno(1, "Rech") { Faltas = 6 }));
            prova.LancarNota(new NotaProva(9, new Aluno(2, "Carla")));

            prova.Notas.Should().HaveCount(1);
            prova.Notas[0].Valor.Should().Be(9);
        }
        public void Deveria_receber_varios_lancamentos_de_notas()
        {
            Prova prova = new Prova(DateTime.Now);

            prova.LancarNota(new NotaProva(10, new Aluno(1, "Rech")));
            prova.LancarNota(new NotaProva(10, new Aluno(2, "Carla")));

            prova.Notas.Should().HaveCount(2);
            prova.Notas[0].Valor.Should().Be(10);
            prova.Notas[1].Valor.Should().Be(10);
        }
        public void Deveria_avaliar_notas_ordem_crescente()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues").ComNotaDe(maria, 5)
                             .ComNotaDe(jose, 8).ComNotaDe(joao, 10).Build();

            avaliador.Avaliar(prova);

            Assert.AreEqual(10, avaliador.ObtemMaiorNota());

            Assert.AreEqual(5, avaliador.ObtemMenorNota());
        }
 public void AtualizarProva(Prova prova)
 {
     Hashtable parametros = this.BuildParametrosProva(prova);
     this.AtualizarObjetoPorNomeQuery("atualizarProva", parametros);
 }
        private Prova RecuperaObjeto(MySqlDataReader dr)
        {
            Prova prova = new Prova();

            prova.id = CastDB<int>(dr, "id_Prova");
            prova.titulo = CastDB<string>(dr, "titulo");
            prova.src = CastDB<byte[]>(dr, "src");
            prova.descricao = CastDB<string>(dr, "descricao");
            prova.tipo = new TipoProva() {
                id = CastDB<int>(dr, "id_Tipo_Prova"),
                nome = CastDB<string>(dr, "nm_Tipo_Prova")
            };
            prova.usuario = new Usuario() {
                id = CastDB<int>(dr, "id_Usuario"),
                nome = CastDB<string>(dr, "nm_Usuario")
            };
            prova.turma = new Turma()
            {
                id = CastDB<int>(dr, "id_Turma")
            };
            prova.recomendadoMonitor = CastDB<bool>(dr, "aval_Monitor");
            prova.recomendadoProfessor = CastDB<bool>(dr, "aval_Professor");
            prova.avaliacao = CastDB<int>(dr, "nota");
            return prova;
        }
 public int InserirProva(Prova prova)
 {
     ProvaBusinessFacade provaBusinessFacade = BusinessFactory.GetInstance().Get<ProvaBusinessFacade>();
     return provaBusinessFacade.InserirProva(prova);
 }
Exemple #10
0
 public void Editar(Prova prova)
 {
     Db.Update(_sqlUpdate, Take2(prova));
 }
Exemple #11
0
 public List <Prova> GetByNome(Prova prova)
 {
     return(Db.GetAll(_sqlSelectNome, MakeByNome, Take2(prova)));
 }
        public void Deveria_retornar_todas_as_notas_caso_nao_haja_no_minimo_3()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues").ComNotaDe(joao, 1).ComNotaDe(jose, 2).Build();

            avaliador.Avaliar(prova);

            Assert.AreEqual(2, avaliador.PioresNotas.Count);

            Assert.AreEqual(1, avaliador.PioresNotas[0].Valor);
            Assert.AreEqual(2, avaliador.PioresNotas[1].Valor);
        }
        public void Deveria_calcular_media_das_notas_na_prova()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues")
                .ComNotaDe(maria, 7).ComNotaDe(jose, 10).ComNotaDe(joao, 4)
                .Build();

            avaliador.Avaliar(prova);

            Assert.AreEqual(7, avaliador.ObtemMedia());
        }
        public void Seed()
        {
            if (_contexto.Alunos.Any() ||
                _contexto.Turmas.Any() ||
                _contexto.Provas.Any())
            {
                return; // O banco de dados já foi populado
            }

            Turma t1 = new Turma(1, "1001");
            Turma t2 = new Turma(2, "1002");
            Turma t3 = new Turma(3, "1003");

            _contexto.Turmas.AddRange(t1, t2, t3);
            // _contexto.SaveChanges();

            Aluno[] alunos = new Aluno[60];
            alunos[0]  = new Aluno(1, "Amandio Dâmaso", t1);
            alunos[1]  = new Aluno(2, "André Torcuato", t1);
            alunos[2]  = new Aluno(3, "Angelino Sousa de Arronches", t1);
            alunos[3]  = new Aluno(4, "Aníbal Estrella", t1);
            alunos[4]  = new Aluno(5, "Duarte Cintra", t1);
            alunos[5]  = new Aluno(6, "Délia Cardozo", t1);
            alunos[6]  = new Aluno(7, "Honório Norões", t1);
            alunos[7]  = new Aluno(8, "Justino González", t1);
            alunos[8]  = new Aluno(9, "Júlia Padilha", t1);
            alunos[9]  = new Aluno(10, "Mamede Saraíba", t1);
            alunos[10] = new Aluno(11, "Mateus Jordão", t1);
            alunos[11] = new Aluno(12, "Miru Ribas", t1);
            alunos[12] = new Aluno(13, "Rita Salomão", t1);
            alunos[13] = new Aluno(14, "Roberta Rolim", t1);
            alunos[14] = new Aluno(15, "Romano Bulhosa", t1);
            alunos[15] = new Aluno(16, "Salomé Ferraz", t1);
            alunos[16] = new Aluno(17, "Salvador Imbassaí", t1);
            alunos[17] = new Aluno(18, "Sílvia Amado", t1);
            alunos[18] = new Aluno(19, "Tadeu Frois", t1);
            alunos[19] = new Aluno(20, "Trajano Mirandela", t1);
            alunos[20] = new Aluno(21, "Zuleica Rua", t2);
            alunos[21] = new Aluno(22, "Érico Severiano", t2);
            alunos[22] = new Aluno(23, "Vânia Souto Maior", t2);
            alunos[23] = new Aluno(24, "Virgínia Mirandela", t2);
            alunos[24] = new Aluno(25, "Vanderlei Casado", t2);
            alunos[25] = new Aluno(26, "Tarrataca Vilar", t2);
            alunos[26] = new Aluno(27, "Silvana Santarém", t2);
            alunos[27] = new Aluno(28, "Rui Vega", t2);
            alunos[28] = new Aluno(29, "Rosa Balsemão", t2);
            alunos[29] = new Aluno(30, "Ronaldo Ulhoa", t2);
            alunos[30] = new Aluno(31, "Ramão Coitinho", t2);
            alunos[31] = new Aluno(32, "Patrícia Anlicoara", t2);
            alunos[32] = new Aluno(33, "Parcidio Núñez", t2);
            alunos[33] = new Aluno(34, "Palmira Souto", t2);
            alunos[34] = new Aluno(35, "Osvaldo Fartaria", t2);
            alunos[35] = new Aluno(36, "Oscar   Anlicoara", t2);
            alunos[36] = new Aluno(37, "Odilia Severiano", t2);
            alunos[37] = new Aluno(38, "Mercedes Bonilla", t2);
            alunos[38] = new Aluno(39, "Mateus Pêssego", t2);
            alunos[39] = new Aluno(40, "Luciano Torres", t2);
            alunos[40] = new Aluno(41, "Luciana Caiado", t3);
            alunos[41] = new Aluno(42, "Leónidas Zarco", t3);
            alunos[42] = new Aluno(43, "Judite Regueira", t3);
            alunos[43] = new Aluno(44, "Judas Ferreira", t3);
            alunos[44] = new Aluno(45, "Josefina Vigário", t3);
            alunos[45] = new Aluno(46, "Jeremias Estrella", t3);
            alunos[46] = new Aluno(47, "Hermano Collaço", t3);
            alunos[47] = new Aluno(48, "Estefânia Sequeira", t3);
            alunos[48] = new Aluno(49, "Domingos Clementino", t3);
            alunos[49] = new Aluno(50, "Crispim Torquato", t3);
            alunos[50] = new Aluno(51, "Cleusa Sant'Anna", t3);
            alunos[51] = new Aluno(52, "Celina Nunes", t3);
            alunos[52] = new Aluno(53, "Casimiro Mendonça", t3);
            alunos[53] = new Aluno(54, "Carlos Caminha", t3);
            alunos[54] = new Aluno(55, "Caetana Veríssimo", t3);
            alunos[55] = new Aluno(56, "Berengário Salgado", t3);
            alunos[56] = new Aluno(57, "Belmiro Sacadura", t3);
            alunos[57] = new Aluno(58, "Belmiro Carvalho", t3);
            alunos[58] = new Aluno(59, "Belmifer Beserril", t3);
            alunos[59] = new Aluno(60, "Amílcar Soeiro", t3);

            for (int i = 0; i < 60; i++)
            {
                _contexto.Alunos.Add(alunos[i]);
                Random random = new Random();
                double nota   = random.Next(0, 101) / 10.0;
                Prova  p1     = new Prova(TipoProvaEnum.P1, nota, alunos[i]);
                nota = random.Next(0, 101) / 10.0;
                Prova p2 = new Prova(TipoProvaEnum.P2, nota, alunos[i]);
                nota = random.Next(0, 101) / 10.0;
                Prova p3 = new Prova(TipoProvaEnum.P3, nota, alunos[i]);
                _contexto.Provas.AddRange(p1, p2, p3);
            }
            _contexto.SaveChanges();
        }
Exemple #15
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);
        }
Exemple #16
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);
        }
 private void LimparDadosTela()
 {
     disciplinas = new List <Disciplina>();
     turmas      = new List <Turma>();
     provaFixa   = new Prova();
 }
 /// <summary>
 /// Metodo costruttore dell'esercizio della prova.
 /// </summary>
 /// <param name="esercizio">Esercizio relativo all'esercizio della prova.</param>
 /// <param name="prova">Prova relativa all'esercizio della prova.</param>
 public EsercizioProva(Esercizio esercizio, Prova prova)
 {
     EsercizioId = esercizio.Id;
     ProvaId     = prova.Id;
 }
 public void AtualizarProva(Prova prova)
 {
     ProvaBusinessFacade provaBusinessFacade = BusinessFactory.GetInstance().Get<ProvaBusinessFacade>();
     provaBusinessFacade.AtualizarProva(prova);
 }
 public int InserirProva(Prova prova)
 {
     Hashtable parametrosProva = this.BuildParametrosProva(prova);
     int idProva = this.InserirObjetoPorNomeQueryERetornarId("inserirProva", parametrosProva);
     return idProva;
 }
        public void Deveria_avaliar_prova_com_apenas_uma_nota()
        {
            prova = new ProvaDataBuilder()
                .Sobre("Portugues").ComNotaDe(maria, 8).Build();

            avaliador.Avaliar(prova);

            Assert.AreEqual(8, avaliador.ObtemMaiorNota());

            Assert.AreEqual(8, avaliador.ObtemMenorNota());
        }
 public Task <Prova> Post([FromBody] Prova prova)
 {
     return(_service.Save(prova));
 }
        public void Deveria_retornar_as_3_piores_notas()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues").ComNotaDe(maria, 5)
                             .ComNotaDe(jose, 1).ComNotaDe(joao, 2).ComNotaDe(maria, 4)
                             .ComNotaDe(pedro, 3).ComNotaDe(luis, 3)
                             .ComNotaDe(rafael, 6).Build();

            avaliador.Avaliar(prova);

            avaliador.PioresNotas.Should().HaveCount(3);

            avaliador.PioresNotas[0].Valor.Should().Be(1);
            avaliador.PioresNotas[1].Valor.Should().Be(2);
            avaliador.PioresNotas[2].Valor.Should().Be(3);
        }
 public AlterarEscalacao(Prova prova, int ano)
 {
     InitializeComponent();
     _vm = new AlterarEscalacaoVM(this, prova, ano);
     this.DataContext = _vm;
 }
        public void Nao_deveria_avaliar_prova_sem_lancamento_de_notas()
        {
            prova = new ProvaDataBuilder().Sobre("Portugues").Build();

            Action sut = () => avaliador.Avaliar(prova);

            sut.ShouldThrow<InvalidOperationException>();
        }
 public Task <Prova> Save(Prova prova)
 {
     return(_repository.Save(prova));
 }
        public static List <RespostasAluno> BuscarRespostasPorProvaId(int ProvaID)
        {
            Prova prova = ProvaDAO.BuscarProvaId(ProvaID);

            return(prova.RespostasAlunos);
        }
 private Hashtable BuildParametrosProva(Prova prova)
 {
     Hashtable parametros = new Hashtable();
     parametros.Add("ID", prova.id);
     parametros.Add("TITULO", prova.titulo);
     parametros.Add("DESCRICAO", prova.descricao);
     parametros.Add("SRC", prova.src);
     parametros.Add("ID_USUARIO", prova.usuario.id);
     parametros.Add("ID_TURMA", prova.turma.id);
     parametros.Add("ID_TIPO_PROVA", prova.tipo.id);
     return parametros;
 }
Exemple #29
0
        public async Task <IActionResult> Post([FromBody] PeriodoDTO request)
        {
            try
            {
                // qtd aluno  criar os aluno, criar as turmas e associar eles a um periodo


                var listaMateria = new List <Materia>();
                var listaTurma   = new List <Turma>();
                var random       = new Random();

                //Criação de Matérias na quantidade recebida

                for (int m = 0; m < request.QuantidadeMaterias; m++)
                {
                    Materia materia = new Materia();
                    var     mt      = (char)random.Next('A', 'Z');
                    materia.NomeMateria = mt.ToString();
                    listaMateria.Add(materia);
                }

                //Criação de Turma na quantidade recebida

                for (int i = 0; i < request.QuantidadeTurmas; i++)
                {
                    Turma turma = new Turma();

                    var nt = (char)random.Next('A', 'Z');

                    turma.NomeTurma = nt.ToString();
                    // Pegar aleatoriamente uma materia de listaMateria

                    var m = random.Next(0, request.QuantidadeMaterias - 1);
                    turma.Materia = listaMateria[m];



                    //Criação de Alunos na quantidade recebida

                    for (int j = 0; j < request.QuantidadeAlunos; j++)
                    {
                        Aluno      aluno      = new Aluno();
                        TurmaAluno turmaAluno = new TurmaAluno();
                        var        na         = (char)random.Next('A', 'Z');

                        aluno.NomeAluno = na.ToString();

                        var acumulaPeso = 0;



                        //cria 3 provas pro aluno
                        for (int k = 1; k < 4; k++)
                        {
                            Prova prova = new Prova();
                            prova.Nota       = random.Next(0, 10);
                            prova.Peso       = random.Next(1, 3);
                            prova.OrdemProva = k;

                            acumulaPeso += prova.Peso;

                            turmaAluno.Provas.Add(prova);
                        }
                        //  média = ((Nota1*Peso1)+(Nota2*Peso2)+(Nota3*Peso3))/acumulaPeso

                        turmaAluno.Media = ((turmaAluno.Provas.First().Nota) * (turmaAluno.Provas.First().Peso)
                                            + (turmaAluno.Provas.Skip(1).First().Nota) * (turmaAluno.Provas.Skip(1).First().Peso)
                                            + (turmaAluno.Provas.Skip(2).First().Nota) * (turmaAluno.Provas.Skip(2).First().Peso))
                                           / acumulaPeso;



                        //testa se ele vai pra prova final

                        if (turmaAluno.Media > 4 && turmaAluno.Media < 6)
                        {
                            Prova provaFinal = new Prova();
                            provaFinal.Nota = random.Next(0, 10);
                            provaFinal.Peso = 1;

                            provaFinal.OrdemProva = 4;

                            turmaAluno.Media = (turmaAluno.Media + provaFinal.Nota) / 2;

                            turmaAluno.Provas.Add(provaFinal);
                        }

                        if (turmaAluno.Media < 5)
                        {
                            aluno.Situacao = "Reprovado";
                        }
                        if (turmaAluno.Media >= 5)
                        {
                            aluno.Situacao = "Aprovado";
                        }
                        turmaAluno.Aluno = aluno;
                        turmaAluno.Turma = turma;

                        aluno.TurmaAlunos.Add(turmaAluno);
                        turma.TurmaAlunos.Add(turmaAluno);
                    }

                    listaTurma.Add(turma);
                }

                Periodo periodo = new Periodo();
                periodo.Materias    = listaMateria;
                periodo.Turmas      = listaTurma;
                periodo.NomePeriodo = request.NomePeriodo;
                _repo.Add(periodo);


                await _repo.SaveChangesAsync();
            }
            catch (System.Exception e)
            {
                throw e;
            }
            return(Ok());
        }
Exemple #30
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();
        }
        public ActionResult Index(ProvaViewModel model)
        {
            if (ModelState.IsValid)
            {
                Prova prova = new Prova();

                prova.Nome = model.Nome;
                prova.QtdQuestoes = model.QtdQuestoes;
                prova.ProfessorID = int.Parse(User.Identity.Name);
                prova.DataCriada = DateTime.Now.ToString();
                prova.CodigoProva = "TEMP";

                db.Prova.Add(prova);
                db.SaveChanges();

                String codigoGerado = RandomString(3) + prova.ProvaID.ToString() + RandomString(3);
                prova.CodigoProva = codigoGerado;

                UpdateModel(prova);
                db.SaveChanges();

                return RedirectToAction("Index");
            }

            return View();
        }
 // POST api/values
 public void Post([FromBody] Prova value)
 {
     Console.Out.WriteLine(value);
 }