public int Insert(List <Questao> questoes, MontaProvaFiltroPost filtroPost, MontaProvaFiltro filtro)
        {
            try
            {
                var filtroAluno = new tblFiltroAluno_MontaProva()
                {
                    bitAtivo            = true,
                    dteDataCriacao      = DateTime.Now,
                    intClientId         = filtroPost.Matricula,
                    txtAnos             = GetSelecao(filtro, EModuloFiltro.UltimosAnos),
                    txtConcursos        = GetSelecao(filtro, EModuloFiltro.Concursos),
                    txtJsonFiltro       = JsonConvert.SerializeObject(filtroPost),
                    txtNome             = filtroPost.Nome,
                    txtPalavraChave     = filtroPost.FiltroTexto,
                    txtEspecialidades   = GetSelecao(filtro, EModuloFiltro.Especialidades),
                    txtFiltrosEspeciais = GetSelecao(filtro, EModuloFiltro.FiltrosEspeciais),
                    intQtdQuestoes      = filtro.TotalQuestoes
                };

                using (var ctx = new DesenvContext())
                {
                    ctx.tblFiltroAluno_MontaProva.Add(filtroAluno);
                    ctx.SaveChanges();
                }

                var prova = new tblExercicio_MontaProva()
                {
                    dteDataCriacao = DateTime.Now,
                    bitAtivo       = true,
                    intFiltroId    = filtroAluno.intID
                };

                using (var ctx = new DesenvContext())
                {
                    ctx.tblExercicio_MontaProva.Add(prova);
                    ctx.SaveChanges();
                }

                var dt  = ToDataTable(questoes, filtroAluno.intID);
                var ret = BulkInsert(dt, "tblQuestao_MontaProva");
                ConfiguraProva(prova.intID, filtroPost.Matricula);

                RelacionarQuestoes(filtroAluno.intID, prova.intID);

                return(prova.intID);
            }
            catch
            {
                throw;
            }
        }
        public int DeleteNovo(ProvaAluno provaAluno)
        {
            try
            {
                tblExercicio_MontaProva item = null;
                using (var ctx = new DesenvContext())
                {
                    item = ctx.tblExercicio_MontaProva.FirstOrDefault(p => p.intID == provaAluno.ID);
                }

                if (item == null)
                {
                    return(0);
                }
                else
                {
                    //Deleta Todas As Questões Relacionadas a Prova
                    DeleteQuestoesByProvaId(provaAluno.ID);

                    int?filtroId;
                    using (var ctx = new DesenvContext())
                    {
                        item = ctx.tblExercicio_MontaProva.FirstOrDefault(p => p.intID == provaAluno.ID);

                        filtroId = item.intFiltroId;
                        ctx.tblExercicio_MontaProva.Remove(item);
                        ctx.SaveChanges();
                    }

                    using (var ctx = new DesenvContext())
                    {
                        if (!ctx.tblExercicio_MontaProva.ToList().Any(x => x.intFiltroId == filtroId && (bool)x.bitAtivo))
                        {
                            DeleteQuestoesNaoAssociadas(filtroId.Value);
                            var filtroADeletar = ctx.tblFiltroAluno_MontaProva.FirstOrDefault(x => x.intID == filtroId);
                            ctx.tblFiltroAluno_MontaProva.Remove(filtroADeletar);
                        }
                        ctx.SaveChanges();
                    }


                    return(1);
                }
            }

            catch (Exception)
            {
                throw;
            }
        }
        public ProvaAluno InsertProva(int idFiltro)
        {
            var novaProva = new tblExercicio_MontaProva()
            {
                bitAtivo       = true,
                dteDataCriacao = DateTime.Now,
                intFiltroId    = idFiltro
            };

            using (var ctx = new DesenvContext())
            {
                ctx.tblExercicio_MontaProva.Add(novaProva);
                ctx.SaveChanges();
            }

            int matricula;

            using (var ctx = new DesenvContext())
            {
                matricula = ctx.tblFiltroAluno_MontaProva.FirstOrDefault(x => x.intID == idFiltro).intClientId;
            }

            ConfiguraProva(novaProva.intID, matricula);

            var nQuestoes = RelacionarQuestoes(idFiltro, novaProva.intID);

            return(new ProvaAluno()
            {
                ID = novaProva.intID,
                Acertos = 0,
                DataCriacao = Utilidades.DateTimeToUnixTimestamp(novaProva.dteDataCriacao),
                Erros = 0,
                NaoRealizadas = nQuestoes,
                QuantidadeQuestoes = nQuestoes
            });
        }