Пример #1
0
        /// <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);
        }