/// <summary> /// Gera as etapas de uma turma com base nos tipos de etapas existentes, são necessarios o IdTurma e IdPrograma /// </summary> /// <autor>Diogo T. Machado</autor> /// <param name="objTurma">Entidade de Turma</param> /// <returns>EntEtapa</returns> public List <EntEtapa> GerarEtapasTurma(EntTurma objTurma) { List <EntEtapa> objRetorno = null; EntEtapa objEtapa = null; List <EntTipoEtapa> lstTipoEtapa = null; using (DbConnection connection = db.CreateConnection()) { connection.Open(); DbTransaction transaction = connection.BeginTransaction(); try { dalEtapa.ExcluirTodosPorTurma(objTurma.IdTurma, transaction, db); objRetorno = new List <EntEtapa>(); lstTipoEtapa = new DalTipoEtapa().ObterTipoEtapaPorPrograma(objTurma.Programa.IdPrograma, transaction, db); foreach (EntTipoEtapa item in lstTipoEtapa) { if (objTurma.Estado.IdEstado > 0) { objEtapa = new EntEtapa(); objEtapa.TipoEtapa = item; objEtapa.Turma = objTurma; objEtapa.Ativo = false; objEtapa.Etapa = item.TipoEtapa; objEtapa.Estado.IdEstado = objTurma.Estado.IdEstado; objEtapa = new DalEtapa().Inserir(objEtapa, transaction, db); if (objEtapa.IdEtapa > 0) { objRetorno.Add(objEtapa); } } else { if (item.EtapaNacional || objTurma.Programa.IdPrograma == EntPrograma.PROGRAMA_PEG) { objEtapa = new EntEtapa(); objEtapa.TipoEtapa = item; objEtapa.Turma = objTurma; objEtapa.Ativo = false; objEtapa.Etapa = item.TipoEtapa; objEtapa = new DalEtapa().Inserir(objEtapa, transaction, db); if (objEtapa.IdEtapa > 0) { objRetorno.Add(objEtapa); } } else { foreach (EntEstado est in new BllEstado().ObterTodos()) { objEtapa = new EntEtapa(); objEtapa.TipoEtapa = item; objEtapa.Turma = objTurma; objEtapa.Ativo = false; objEtapa.Etapa = item.TipoEtapa; objEtapa.Estado.IdEstado = est.IdEstado; objEtapa = new DalEtapa().Inserir(objEtapa, transaction, db); if (objEtapa.IdEtapa > 0) { objRetorno.Add(objEtapa); } } } } } transaction.Commit(); } catch { transaction.Rollback(); throw; } finally { connection.Close(); } } return(objRetorno); }