예제 #1
0
        public async Task <IActionResult> Create(ModuloCreateEditViewModel mcevm, int[] CodigosExerciciosModulo)
        {
            try
            {
                using (await dbContext.Database.BeginTransactionAsync())
                {
                    if (ModelState.IsValid)
                    {
                        mcevm.Titulo = mcevm.Titulo.Trim();

                        Modulo modulo = await dbContext.Modulos.Where(m => m.Titulo == mcevm.Titulo &&
                                                                      m.Ativo == true).SingleOrDefaultAsync();

                        if (modulo == null)
                        {
                            IEnumerable <Modulo> modulosNivel = await dbContext.Modulos.Where(m => m.Nivel
                                                                                              == mcevm.Nivel && m.Ativo == true).ToListAsync();

                            if (modulosNivel.Count() < 3)
                            {
                                if (CodigosExerciciosModulo.Count() > 0)
                                {
                                    modulo                = new Modulo();
                                    modulo.Titulo         = mcevm.Titulo;
                                    modulo.Explicacao     = mcevm.Explicacao;
                                    modulo.QtdeExercicios = mcevm.QtdeExercicios;
                                    modulo.Nivel          = mcevm.Nivel;
                                    modulo.Ativo          = true;

                                    dbContext.Modulos.Add(modulo);
                                    await dbContext.SaveChangesAsync();

                                    foreach (var codigo in CodigosExerciciosModulo)
                                    {
                                        ExercicioModulo em = new ExercicioModulo();
                                        em.CodExercicio = codigo;
                                        em.CodModulo    = modulo.CodModulo;
                                        em.Ativo        = true;

                                        dbContext.ExerciciosModulo.Add(em);
                                    }

                                    await dbContext.SaveChangesAsync();

                                    if (dbContext.Database.CurrentTransaction != null)
                                    {
                                        dbContext.Database.CommitTransaction();
                                    }
                                    TempData["Mensagem"] = "Módulo cadastrado com sucesso!";
                                    TempData["Sucesso"]  = true;
                                    return(RedirectToAction("Index"));
                                }
                                else
                                {
                                    TempData["Mensagem"] = "Pelo menos um exercício deve ser selecionado!";
                                }
                            }
                            else
                            {
                                TempData["Mensagem"] = "Limite de módulos nesse nível já foi atingido!";
                            }
                        }
                        else
                        {
                            TempData["Mensagem"] = "Já existe módulo com esse título!";
                        }
                    }
                }

                mcevm.CodigosExerciciosModulo = CodigosExerciciosModulo;
                mcevm.ExerciciosDisponiveis   = await dbContext.Exercicios.Where(e => e.Ativo == true)
                                                .OrderBy(e => e.Descricao).ToListAsync();
            }
            catch (Exception ex)
            {
                if (dbContext.Database.CurrentTransaction != null)
                {
                    dbContext.Database.RollbackTransaction();
                }

                TempData["Mensagem"]  = "Erro ao cadastrar módulo!";
                TempData["Exception"] = ex;
                TempData["Sucesso"]   = false;
                return(RedirectToAction("Index"));
            }

            return(View(mcevm));
        }
예제 #2
0
        public async Task <IActionResult> DeleteConfirmed(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            using (await dbContext.Database.BeginTransactionAsync())
            {
                try
                {
                    Exercicio exerc = await dbContext.Exercicios.Where(e => e.CodExercicio == id.Value &&
                                                                       e.Ativo == true).SingleOrDefaultAsync();

                    if (exerc == null)
                    {
                        return(NotFound());
                    }

                    var alternativas = await dbContext.Alternativas.Where(a => a.Ativo == true)
                                       .ToListAsync();

                    if (alternativas.Count == 0)
                    {
                        return(NotFound());
                    }

                    ExercicioModulo exMod = await dbContext.ExerciciosModulo.Where(em => em.CodExercicio
                                                                                   == exerc.CodExercicio && em.Ativo == true).FirstOrDefaultAsync();

                    if (exMod == null)
                    {
                        exerc.Ativo = false;
                        dbContext.Update(exerc);

                        foreach (Alternativa a in alternativas)
                        {
                            a.Ativo = false;
                            dbContext.Update(a);
                        }

                        await dbContext.SaveChangesAsync();

                        if (dbContext.Database.CurrentTransaction != null)
                        {
                            dbContext.Database.CommitTransaction();
                        }
                        TempData["Mensagem"] = "Exercício excluído com sucesso!";
                        TempData["Sucesso"]  = true;
                    }
                    else
                    {
                        TempData["Mensagem"] = "Não foi possível excluir o exercício porque há um módulo que o " +
                                               "está utilizando!";
                        TempData["Sucesso"] = false;
                    }
                }
                catch (Exception ex)
                {
                    TempData["Mensagem"]  = "Erro ao excluir exercício!";
                    TempData["Exception"] = ex;
                    TempData["Sucesso"]   = false;
                    if (dbContext.Database.CurrentTransaction != null)
                    {
                        dbContext.Database.RollbackTransaction();
                    }
                }
            }

            return(RedirectToAction("Index"));
        }