/// <summary> /// Busca os níveis de aprendizado da orientação curricular. /// </summary> /// <param name="ocr_idSuperior">Id da orientação curricular superior</param> /// <returns></returns> public List <ORC_OrientacaoCurricularNivelAprendizado> SelectNivelAprendizadoByOcrIdSuperior(long ocr_idSuperior) { List <ORC_OrientacaoCurricularNivelAprendizado> lt = new List <ORC_OrientacaoCurricularNivelAprendizado>(); QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("NEW_ORC_OrientacaoCurricularNivelAprendizado_SelectBy_OcrIdSuperior", _Banco); try { #region Parâmetros Param = qs.NewParameter(); Param.DbType = DbType.Int64; Param.ParameterName = "@ocr_idSuperior"; Param.Size = 8; Param.Value = ocr_idSuperior; qs.Parameters.Add(Param); #endregion Parâmetros qs.Execute(); foreach (DataRow dr in qs.Return.Rows) { ORC_OrientacaoCurricularNivelAprendizado entity = new ORC_OrientacaoCurricularNivelAprendizado(); lt.Add(DataRowToEntity(dr, entity)); } return(lt); } finally { qs.Parameters.Clear(); } }
/// <summary> /// Recebe o valor do auto incremento e coloca na propriedade. /// </summary> /// <param name="qs">Objeto da Store Procedure.</param> /// <param name="entity">Entidade com os dados para preenchimento dos parametros.</param> /// <returns>TRUE - Se entity.ParametroId > 0</returns> protected override bool ReceberAutoIncremento(QuerySelectStoredProcedure qs, ORC_OrientacaoCurricularNivelAprendizado entity) { if (entity != null & qs != null) { if (qs.Return.Rows.Count > 0) { entity.ocn_id = Convert.ToInt32(qs.Return.Rows[0][0]); return(entity.ocn_id > 0); } } return(false); }
/// <summary> /// Busca todos os níveis de aprendizado da orientação curricular, com status 1 e 3(excluído). /// </summary> /// <param name="ocr_id">Id da orientação curricular</param> /// <returns></returns> public List <ORC_OrientacaoCurricularNivelAprendizado> SelectTodosNivelAprendizadoByOcrId(long ocr_id) { List <ORC_OrientacaoCurricularNivelAprendizado> lt = new List <ORC_OrientacaoCurricularNivelAprendizado>(); QuerySelectStoredProcedure qs = new QuerySelectStoredProcedure("STP_ORC_OrientacaoCurricularNivelAprendizado_SELECTBY_ocr_id", _Banco); try { #region Parâmetros Param = qs.NewParameter(); Param.DbType = DbType.Int64; Param.ParameterName = "@ocr_id"; Param.Size = 8; if (ocr_id > 0) { Param.Value = ocr_id; } else { Param.Value = DBNull.Value; } qs.Parameters.Add(Param); #endregion Parâmetros qs.Execute(); foreach (DataRow dr in qs.Return.Rows) { ORC_OrientacaoCurricularNivelAprendizado entity = new ORC_OrientacaoCurricularNivelAprendizado(); lt.Add(DataRowToEntity(dr, entity)); } return(lt); } finally { qs.Parameters.Clear(); } }
/// <summary> /// Função recursiva para replicar a orientação curricular e as filhas /// </summary> /// <param name="rows"></param> /// <param name="dtOrientacoes"></param> /// <param name="dtNiveisReplica"></param> /// <param name="tds_id"></param> /// <param name="ocr_idPai"></param> /// <param name="banco"></param> /// <returns></returns> public static bool SalvaFilhos ( DataRow[] rows, DataTable dtOrientacoes, List <sNivelOrientacaoCurricular> dtNiveisReplica, DataTable dtOrientacoesNova, int tds_id, long ocr_idPai, long mat_id, TalkDBTransaction banco ) { ORC_OrientacaoCurricular orientacao; ORC_OrientacaoCurricularNivelAprendizado orientacaoNivelApr; try { string ocr_ids = string.Join(";", rows.GroupBy(p => p["ocr_id"].ToString()).Select(p => p.Key).ToArray()); List <sOrientacaoNivelAprendizado> dtNiveisAprendizado = ORC_OrientacaoCurricularNivelAprendizadoBO.SelecionaPorOrientacaoNivelAprendizado(ocr_ids, 0, banco, GestaoEscolarUtilBO.MinutosCacheLongo); var orientacaoNivelAprendizado = from row in dtNiveisAprendizado group row by row.ocr_id into grupo select new { ocr_id = grupo.Key , ltNiveisAprendizado = grupo.GroupBy(p => p.nap_id).Select(p => p.Key).ToList() }; foreach (DataRow rowFilho in rows) { List <int> ltNiveisAprendizado = orientacaoNivelAprendizado.Any(p => p.ocr_id == Convert.ToInt64(rowFilho["ocr_id"])) ? orientacaoNivelAprendizado.ToList().Find(p => p.ocr_id == Convert.ToInt64(rowFilho["ocr_id"])).ltNiveisAprendizado : new List <int>(); string nvl_id = dtNiveisReplica.Where(p => p.nvl_ordem == Convert.ToInt32(rowFilho["nvl_ordem"])) .Select(p => p.nvl_id.ToString()).FirstOrDefault(); if (!string.IsNullOrEmpty(nvl_id)) { bool existe = dtOrientacoesNova.Rows.Cast <DataRow>().Any(p => p["ocr_codigo"].ToString().Equals(rowFilho["ocr_codigo"].ToString()) && p["ocr_descricao"].ToString().Equals(rowFilho["ocr_descricao"].ToString()) && p["nvl_id"].ToString().Equals(nvl_id)); /* Salva as orientações filhas */ orientacao = new ORC_OrientacaoCurricular { ocr_id = -1, nvl_id = Convert.ToInt32(nvl_id), tds_id = tds_id, mat_id = mat_id, ocr_idSuperior = ocr_idPai, ocr_codigo = rowFilho["ocr_codigo"].ToString(), ocr_descricao = rowFilho["ocr_descricao"].ToString(), ocr_situacao = 1, ocr_dataAlteracao = DateTime.Now, IsNew = true }; if (existe) { string ocr_id_existente = dtOrientacoesNova.Rows.Cast <DataRow>() .Where(p => p["ocr_codigo"].ToString().Equals(rowFilho["ocr_codigo"].ToString()) && p["ocr_descricao"].ToString().Equals(rowFilho["ocr_descricao"].ToString()) && p["nvl_id"].ToString().Equals(nvl_id)) .Select(p => p["ocr_id"].ToString()).FirstOrDefault(); orientacao.IsNew = false; if (!string.IsNullOrEmpty(ocr_id_existente)) { orientacao.ocr_id = Convert.ToInt64(ocr_id_existente); } } Save(orientacao, banco); // Verifica se os filhos possuem mais filhos, se sim, chama a função recursivamente DataRow[] rowsNetos = dtOrientacoes.Select("ocr_idSuperior = " + rowFilho["ocr_id"].ToString()); if (rowsNetos.Length > 0) { SalvaFilhos(rowsNetos, dtOrientacoes, dtNiveisReplica, dtOrientacoesNova, tds_id, orientacao.ocr_id, mat_id, banco); } else { //Remove os níveis de aprendizado já existentes if (existe) { DataTable dtOcn = ORC_OrientacaoCurricularNivelAprendizadoBO.SelectNivelAprendizadoByOcrId(orientacao.ocr_id, 0, banco); foreach (DataRow row in dtOcn.Rows) { ORC_OrientacaoCurricularNivelAprendizado ocn = new ORC_OrientacaoCurricularNivelAprendizado { ocr_id = orientacao.ocr_id, nap_id = Convert.ToInt32(row["nap_id"]), ocn_id = Convert.ToInt32(row["ocn_id"]) }; ORC_OrientacaoCurricularNivelAprendizadoBO.GetEntity(ocn, banco); if (!ocn.IsNew) { ocn.ocn_situacao = 3; //Excluido ocn.ocn_dataAlteracao = DateTime.Now; ORC_OrientacaoCurricularNivelAprendizadoBO.Save(ocn, banco); } } } // Replicar os níveis de aprendizado foreach (int nap_id in ltNiveisAprendizado) { orientacaoNivelApr = new ORC_OrientacaoCurricularNivelAprendizado { ocr_id = orientacao.ocr_id, nap_id = ORC_NivelAprendizadoBO.SelectCursoPeriodoBy_nap_id(nap_id, Convert.ToInt32(nvl_id), banco), ocn_id = -1, ocn_situacao = 1, ocn_dataCriacao = DateTime.Now, ocn_dataAlteracao = DateTime.Now, IsNew = true }; ORC_OrientacaoCurricularNivelAprendizadoBO.Save(orientacaoNivelApr, banco); } } } } return(true); } catch (Exception ex) { //banco.Close(ex); throw ex; } //finally //{ // if (banco.ConnectionIsOpen) // banco.Close(); //} }