public List <KeyValuePair <int, int?> > ObterQuestoesMontaProva(ProvaAluno prova)
        {
            var questoes = new List <KeyValuePair <int, int?> >();

            using (var ctx = new AcademicoContext())
            {
                using (var ctxMatDir = new DesenvContext())
                {
                    var Questao_MontaProva = (from q in ctxMatDir.tblQuestao_MontaProva
                                              where q.intProvaId == prova.ID
                                              select new { id = q.intQuestaoId, tipoExercicio = q.intTipoExercicioId, intProvaId = q.intProvaId }
                                              ).ToList();

                    questoes = (from q in Questao_MontaProva
                                join eh in ctx.tblExercicio_Historico
                                on q.intProvaId equals eh.intExercicioID
                                where q.intProvaId == prova.ID && eh.intExercicioTipo == (int)Exercicio.tipoExercicio.MONTAPROVA
                                select new { id = q.id, tipoExercicio = q.tipoExercicio, historicoId = eh.intHistoricoExercicioID }
                                )
                               .OrderByDescending(x => x.historicoId)
                               .GroupBy(x => x.id)
                               .AsEnumerable()
                               .Select(y => new KeyValuePair <int, int?>(y.FirstOrDefault().id, y.FirstOrDefault().tipoExercicio))
                               .ToList();
                }
            }
            return(questoes);
        }
        public int Delete(ProvaAluno provaAluno)
        {
            try
            {
                using (var ctx = new DesenvContext())
                {
                    var item = ctx.tblExercicio_MontaProva.FirstOrDefault(p => p.intID == provaAluno.ID);
                    if (item == null)
                    {
                        return(0);
                    }

                    item.bitAtivo = false;

                    var questoes = ctx.tblQuestao_MontaProva.Where(x => x.intProvaId == provaAluno.ID).ToList();
                    questoes.ForEach(x => x.intProvaId = null);

                    if (!ctx.tblExercicio_MontaProva.ToList().Any(x => x.intFiltroId == item.intFiltroId && (bool)x.bitAtivo))
                    {
                        ctx.tblFiltroAluno_MontaProva.FirstOrDefault(x => x.intID == item.intFiltroId).bitAtivo = false;
                    }

                    ctx.SaveChanges();

                    return(1);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
 public int DeleteNovo(ProvaAluno provaAluno)
 {
     using (MiniProfiler.Current.Step("Deleta prova nova"))
     {
         return(_montaProvasRepository.DeleteNovo(provaAluno));
     }
 }
        public int Edit(ProvaAluno provaAluno)
        {
            try
            {
                using (MiniProfiler.Current.Step("Editando prova"))
                {
                    using (var ctx = new DesenvContext())
                    {
                        var filtro = ctx.tblFiltroAluno_MontaProva.FirstOrDefault(x => x.intID == provaAluno.ID);
                        if (filtro == null)
                        {
                            return(0);
                        }

                        filtro.txtNome = provaAluno.Nome;

                        ctx.SaveChanges();

                        return(1);
                    }
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        public void AtualizarContadorDeQuestoes(ProvaAluno prova)
        {
            using (var ctx = new DesenvContext())
            {
                var provaBanco = ctx.tblContadorQuestoes_MontaProva.Where(x => x.intProvaId == prova.ID).FirstOrDefault();
                provaBanco.intAcertos       = prova.Acertos;
                provaBanco.intErros         = prova.Erros;
                provaBanco.intNaoRealizadas = prova.NaoRealizadas;

                ctx.SaveChanges();
            }
        }
        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 List <KeyValuePair <int, int?> > GetQuestoesProva(ProvaAluno prova)
        {
            var questoes = new List <KeyValuePair <int, int?> >();

            using (var ctx = new DesenvContext())
            {
                questoes = (from q in ctx.tblQuestao_MontaProva
                            where q.intProvaId == prova.ID
                            select new { id = q.intQuestaoId, tipoExercicio = q.intTipoExercicioId }
                            )
                           .AsEnumerable()
                           .Select(y => new KeyValuePair <int, int?>(y.id, y.tipoExercicio))
                           .ToList();
            }

            return(questoes);
        }
        public static List <ProvaAluno> GetProvasAluno()
        {
            var provasAluno = new List <ProvaAluno>();

            var prova = new ProvaAluno()
            {
                ID                 = 1,
                Acertos            = 0,
                DataCriacao        = 1517311480.4129999,
                Erros              = 0,
                NaoRealizadas      = 0,
                QuantidadeQuestoes = 0
            };

            provasAluno.Add(prova);

            return(provasAluno);
        }
        public void InserirContadorDeQuestoes(ProvaAluno prova, int matricula)
        {
            using (var ctx = new DesenvContext())
            {
                var existe = ctx.tblContadorQuestoes_MontaProva.Where(x => x.intProvaId == prova.ID).Any();

                if (!existe)
                {
                    ctx.tblContadorQuestoes_MontaProva.Add(new tblContadorQuestoes_MontaProva()
                    {
                        intQuantidadeQuestoes = prova.QuantidadeQuestoes,
                        intAcertos            = prova.Acertos,
                        intErros         = prova.Erros,
                        intNaoRealizadas = prova.NaoRealizadas,
                        intProvaId       = prova.ID,
                        intClientId      = matricula,
                        dteDataCriacao   = DateTime.Now
                    });

                    ctx.SaveChanges();
                }
            }
        }
        public static List <FiltroAluno> GetFiltrosAluno()
        {
            List <FiltroAluno> filtrosAluno = new List <FiltroAluno>();

            ProvasAluno ps1 = new ProvasAluno();

            ProvaAluno p1 = new ProvaAluno()
            {
                ID                 = 1,
                Acertos            = 0,
                DataCriacao        = 1557155050.817,
                Erros              = 0,
                NaoRealizadas      = 100,
                QuantidadeQuestoes = 100
            };

            ps1.Add(p1);


            FiltroAluno f1 = new FiltroAluno()
            {
                Anos             = "Últimos 5 anos",
                Concursos        = "ABC, AFAMCI, AMP",
                Criacao          = DateTime.Now,
                DataCriacao      = 0,
                Especialidades   = "Todas Selecionadas",
                FiltrosEspeciais = "Somente Impressas",
                Id                              = 1,
                JsonFiltro                      = null,
                Matricula                       = 241779,
                Nome                            = "Teste",
                PalavraChave                    = "",
                ProvasAluno                     = ps1,
                QuantidadeQuestoes              = 203,
                QuantidadeQuestoesAssociadas    = 203,
                QuantidadeQuestoesNaoAssociadas = 103,
                QuantidadeQuestoesOrNull        = 203
            };

            filtrosAluno.Add(f1);


            ProvasAluno ps2 = new ProvasAluno();
            ProvaAluno  p2  = new ProvaAluno()
            {
                ID                 = 1,
                Acertos            = 0,
                DataCriacao        = 1557153824.483,
                Erros              = 1,
                NaoRealizadas      = 99,
                QuantidadeQuestoes = 100
            };

            ps2.Add(p2);

            FiltroAluno f2 = new FiltroAluno()
            {
                Anos             = "Todas Selecionadas",
                Concursos        = "Todas Selecionadas",
                Criacao          = DateTime.Now,
                DataCriacao      = 0,
                Especialidades   = "Todas Selecionadas",
                FiltrosEspeciais = "Todas Selecionadas",
                Id                              = 1,
                JsonFiltro                      = null,
                Matricula                       = 241779,
                Nome                            = "Teste1",
                PalavraChave                    = "",
                ProvasAluno                     = ps2,
                QuantidadeQuestoes              = 114052,
                QuantidadeQuestoesAssociadas    = 114052,
                QuantidadeQuestoesNaoAssociadas = 113952,
                QuantidadeQuestoesOrNull        = 114052
            };

            filtrosAluno.Add(f2);


            ProvasAluno ps3 = new ProvasAluno();
            ProvaAluno  p3  = new ProvaAluno()
            {
                ID                 = 1,
                Acertos            = 11,
                DataCriacao        = 1547307498.437,
                Erros              = 17,
                NaoRealizadas      = 3472,
                QuantidadeQuestoes = 3500
            };

            ps3.Add(p3);

            FiltroAluno f3 = new FiltroAluno()
            {
                Anos             = "Todas Selecionadas",
                Concursos        = "Todas Selecionadas",
                Criacao          = DateTime.Now,
                DataCriacao      = 0,
                Especialidades   = "CIRURGIA GERAL",
                FiltrosEspeciais = "Todas Selecionadas",
                Id                              = 1,
                JsonFiltro                      = null,
                Matricula                       = 241779,
                Nome                            = "Valeu passei teste",
                PalavraChave                    = "",
                ProvasAluno                     = ps3,
                QuantidadeQuestoes              = 18536,
                QuantidadeQuestoesAssociadas    = 18536,
                QuantidadeQuestoesNaoAssociadas = 15036,
                QuantidadeQuestoesOrNull        = 18536
            };

            filtrosAluno.Add(f3);


            ProvasAluno ps4 = new ProvasAluno();
            ProvaAluno  p4  = new ProvaAluno()
            {
                ID                 = 1,
                Acertos            = 3,
                DataCriacao        = 1546719000.207,
                Erros              = 0,
                NaoRealizadas      = 97,
                QuantidadeQuestoes = 100
            };

            ps4.Add(p4);

            FiltroAluno f4 = new FiltroAluno()
            {
                Anos             = "Últimos 2 anos",
                Concursos        = "Todas Selecionadas",
                Criacao          = DateTime.Now,
                DataCriacao      = 0,
                Especialidades   = "CIRURGIA GERAL",
                FiltrosEspeciais = "Todas Selecionadas",
                Id                              = 1,
                JsonFiltro                      = null,
                Matricula                       = 241779,
                Nome                            = "Teste Petrus",
                PalavraChave                    = "",
                ProvasAluno                     = ps4,
                QuantidadeQuestoes              = 3808,
                QuantidadeQuestoesAssociadas    = 3808,
                QuantidadeQuestoesNaoAssociadas = 3708,
                QuantidadeQuestoesOrNull        = 3808
            };

            filtrosAluno.Add(f4);
            return(filtrosAluno);
        }
 public int ExcluirProvaNovo(ProvaAluno provaAluno)
 {
     return(new MontaProvaEntity().DeleteNovo(provaAluno));
 }
 public int EditarProva(ProvaAluno provaAluno)
 {
     return(new MontaProvaEntity().Edit(provaAluno));
 }