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)); }
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")); }