public static DataTable Obter_Hierarquias() { string sql = @" SELECT Hie_Id, Hie_Descri, Hie_Funcao FROM CadeiaAutorizacao.Hierarquia "; BdUtil bd = new BdUtil(sql); return bd.ObterDataTable(); }
public static DataTable Obter_Usuario_Por_Hierarquia(string hie_ID) { string sql = @" SELECT Hus_Id, Hie_Id, u.Usu_Id, u.Usu_Nome, Hus_Alcada, u1.Usu_Nome Supervisor FROM CadeiaAutorizacao.HierarquiaUsuario hu join USUARIO u on hu.Usu_Id = u.usu_id left join Usuario u1 on hu.Usu_IdSuperior = u1.usu_id WHERE ( Hie_Id LIKE @Hie_Id ) "; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@Hie_Id", System.Data.DbType.Int32, -1, hie_ID); return bd.ObterDataTable(); }
public static DataTable ObterPor_PK_CadeiaAutorizacao (System.Int32 Cau_Id){ string sql = @" SELECT Cau_Id, Cau_Descri, Cau_TipoAprovacao, Cau_UrlAprovacao, Hie_Id, Cau_ClasseRetorno, Cau_MetodoRetorno FROM CadeiaAutorizacao.Cadeia WHERE ( Cau_Id LIKE @Cau_Id )"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@Cau_Id", System.Data.DbType.Int32, -1, Cau_Id ); return bd.ObterDataTable(); }
public static DataTable ObterPor_PK_Hierarquia(System.Int32 Hie_Id) { string sql = @" SELECT Hie_Id, Hie_Descri, Hie_Funcao, Hie_DatInc, Hie_UsuInc, Hie_UsuTra, Hie_DatHor FROM CadeiaAutorizacao.Hierarquia WHERE ( Hie_Id LIKE @Hie_Id )"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@Hie_Id", System.Data.DbType.Int32, -1, Hie_Id); return bd.ObterDataTable(); }
public static DataTable ObterPor_PK_HierarquiaUsuario(System.Int32 Hus_Id) { string sql = @" SELECT Hus_Id, Hie_Id, Usu_Id, Hus_Alcada, Usu_IdSuperior, Hus_DatInc, Hus_UsuInc, Hus_DatHor, Hus_UsuTra FROM CadeiaAutorizacao.HierarquiaUsuario WHERE ( Hus_Id LIKE @Hus_Id )"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@Hus_Id", System.Data.DbType.Int32, -1, Hus_Id); return bd.ObterDataTable(); }
/// <summary> /// Obtém os superiores do usuário baseado na estrutura de tabelas para hierarquia /// </summary> /// <param name="IdCadeia">Id da cadeia</param> /// <param name="IdUsuario">Id do usuário</param> /// <returns>Superiores do usuário</returns> private static DataTable ObterSuperioresPorTabelas(int IdCadeia, int IdUsuario) { string sql = @"WITH Superior (IdSuperior, alcada) AS ( SELECT hus.Usu_IdSuperior, hus.Hus_Alcada FROM CadeiaAutorizacao.HierarquiaUsuario hus JOIN CadeiaAutorizacao.Cadeia cau on cau.Hie_Id = hus.Hie_Id WHERE hus.Usu_Id = @Usu_Id and cau.Cau_Id = @Cau_Id UNION ALL SELECT Hus.Usu_IdSuperior, hus.Hus_Alcada FROM CadeiaAutorizacao.HierarquiaUsuario hus JOIN CadeiaAutorizacao.Cadeia cau on cau.Hie_Id = hus.Hie_Id JOIN Superior ON hus.Usu_Id = Superior.IdSuperior and Cau_Id = @Cau_Id ) SELECT IdSuperior, alcada FROM Superior WHERE IdSuperior IS NOT NULL;"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@Usu_Id", DbType.Int32, IdUsuario); bd.AdicionarParametro("@Cau_Id", DbType.Int32, IdCadeia); return bd.ObterDataTable(); }
/// <summary> /// Obtém os superiores do usuário executando a stored function de hierarquia /// </summary> /// <param name="IdCadeia">Id da cadeia</param> /// <param name="IdUsuario">Id do usuário</param> /// <param name="parametrosFuncaoHierarquia">Parâmetros para executar a stored function de hierarquia</param> /// <returns></returns> private static DataTable ObterSuperioresPorFuncao(int IdCadeia, int IdUsuario, CadeiaAutorizacaoDataSet.ParemetroFuncaoHierarquiaDataTable parametrosFuncaoHierarquia) { // Obtendo o nome da funcao para a hierarquia da cadeia string nomeFuncao = ObterNomeFuncaHierarquia(IdCadeia); if (string.IsNullOrEmpty(nomeFuncao)) { throw new SecvException("Função de hirarquia não encontrada"); } BdUtil bd = new BdUtil(nomeFuncao); //bd.Command.CommandType = CommandType.Text;// StoredProcedure; // Preparando os parâmetros foreach (DataRow parametro in parametrosFuncaoHierarquia) { string nome = parametro["nome"].ToString(); DbType tipo = (DbType)Enum.Parse(typeof(DbType), parametro["tipo"].ToString(), true); object valor = parametro["valor"]; bd.AdicionarParametro(nome, tipo, valor); } return bd.ObterDataTable(); }
/// <summary> /// Executa o método do sistema fornecendo o Id da participação /// </summary> /// <param name="IdParticipacao">Id da participação</param> private static void ExecutarMetodoSistema(int IdParticipacao, Autorizacao Autorizacao, string Mensagem) { string sql = @"SELECT cau.Cau_ClasseRetorno, cau.Cau_MetodoRetorno, cai.Cai_Id, usp.Usu_ID FROM CadeiaAutorizacao.UsuarioParticipacao usp INNER JOIN CadeiaAutorizacao.CadeiaInstancia cai on cai.Cai_Id = usp.Cai_Id INNER JOIN CadeiaAutorizacao.Cadeia cau on cau.Cau_Id = cai.Cau_Id WHERE usp.Usp_Id = @IdParticipacao"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdParticipacao", DbType.Int32, IdParticipacao); DataTable dt = bd.ObterDataTable(); if (dt.Rows.Count == 0) { throw new SecvException("Erro ao obter o método do sistema e id da instância"); } string nomeClasse = dt.Rows[0]["Cau_ClasseRetorno"].ToString(); string nomeMetodo = dt.Rows[0]["Cau_MetodoRetorno"].ToString(); int IdInstancia = Convert.ToInt32(dt.Rows[0]["Cai_Id"]); Type tipo = Type.GetType(nomeClasse); if (tipo == null) { throw new SecvException("Classe não encontrada."); } MethodInfo metodo = tipo.GetMethod(nomeMetodo); if (metodo == null) { throw new SecvException("Método não encontrado."); } int i = 0; List<object> parametros = new List<object>(); parametros.Add(IdInstancia); parametros.Add(Autorizacao); foreach (ParameterInfo parametro in metodo.GetParameters()) { switch (i) { case 0: { if (parametro.ParameterType != typeof(int)) { throw new SecvException("A ordem dos parâmetros tem que ser System.Int32, Autorizacao."); } i++; } break; case 1: { if (parametro.ParameterType != typeof(Autorizacao)) { throw new SecvException("A ordem dos parâmetros tem que ser System.Int32, Autorizacao."); } i++; } break; case 2: { if (parametro.ParameterType == typeof(String)) { parametros.Add(Mensagem); } else if (parametro.ParameterType == typeof(int)) { parametros.Add(Convert.ToInt32(dt.Rows[0]["Usu_ID"])); } else { throw new SecvException("A ordem dos parâmetros tem que ser [System.Int32 cai_ID, Autorizacao autorizacao, System.String mensagem] ou [System.Int32 cai_ID, Autorizacao autorizacao, System.Int32 UsuarioAprovador]."); } i++; } break; } } if ( i < 2 && i > 3) throw new SecvException("Quantidade de parametros inválida"); metodo.Invoke(null, parametros.ToArray()); }
/// <summary> /// Retorna o substituto de um usuário /// </summary> /// <param name="IdUsario">Id do usuário</param> /// <param name="NmUsuario">Valor para ser usado como filtro</param> /// <returns>DataTable com os usuários.</returns> public static DataTable ObterUsuarios(int IdUsario, string NmUsuario) { string sql = @" SELECT Usu_Id, Usu_Nome FROM Usuario where usu_id <> @IdUsuario and usu_nome like @NmUsuario order by usu_nome"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdUsuario", DbType.Int32, IdUsario); bd.AdicionarParametro("@NmUsuario", DbType.String, NmUsuario); return bd.ObterDataTable(); }
/// <summary> /// Retorna o substituto de um usuário /// </summary> /// <param name="IdUsario">Id do usuário</param> /// <returns>DataTable com o substituto do usuário.</returns> public static DataTable ObterSubstituto(int IdUsario) { string sql = @"SELECT usu.Usu_Id, usu.Usu_Nome FROM CadeiaAutorizacao.Substituicao sub INNER JOIN Usuario usu on usu.Usu_Id = sub.Sub_IdSubstituto WHERE sub.Sub_IdUsuario = @IdUsuario"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdUsuario", DbType.Int32, IdUsario); return bd.ObterDataTable(); }
/// <summary> /// Retorna todas as participações pendentes do usuário /// </summary> /// <param name="IdUsuario">Id do usuário</param> /// <returns>DataTable com as todas as participações pendentes do usuário.</returns> public static DataTable ObterParticipacoesUsuario(int IdUsuario) { string sql = @"SELECT -- Cadeia cau.Cau_Descri, cau.Cau_UrlAprovacao, -- CadeiaInstancia cai.Cai_Id, cai.Cai_Descri, cai.Cai_Data, cai.Cai_Valor, cai.Cai_Conteudo, CASE cai.Cai_Status WHEN 0 THEN 'Aberta' WHEN 1 THEN 'Aprovada' WHEN 2 THEN 'Reprovada' END AS InstanciaStatus, -- UsuarioParticipacao usp.Usp_Id, Usp_Tipo, CASE usp.Usp_Tipo WHEN 1 THEN 'Responsavel' WHEN 2 THEN 'Colaborador' WHEN 3 THEN 'Leitor' END AS ParticipacaoTipo, usp.Usp_Mensagem FROM CadeiaAutorizacao.UsuarioParticipacao usp INNER JOIN CadeiaAutorizacao.CadeiaInstancia cai on cai.Cai_Id = usp.Cai_Id INNER JOIN CadeiaAutorizacao.Cadeia cau on cau.Cau_Id = cai.Cau_Id WHERE usp.Usp_Autorizacao = 0 AND cai.cai_status = 0 AND usp.Usu_Id = @IdUsuario order by Cai_Data"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdUsuario", DbType.Int32, IdUsuario); return bd.ObterDataTable(); }
/// <summary> /// Obtém as participações dos usuário para uma determinada instância de cadeia /// </summary> /// <param name="IdInstancia">Id da instância</param> /// <returns></returns> public static DataTable ObterParticipacoesCadeia(int IdInstancia) { string sql = @"SELECT usp.Usp_Id, CASE usp.Usp_Autorizacao WHEN 1 THEN 'Autorizado' WHEN 2 THEN 'Não Autorizado' END AS AutorizacaoTipo, Case usp.Usp_Tipo When 1 then 'Responsavel' When 2 then 'Colaborador' When 3 then 'Leitor' end as Tipo, usp.Usp_Mensagem, usp.usp_Data, u.Usu_Nome FROM CadeiaAutorizacao.UsuarioParticipacao usp INNER JOIN Usuario u on u.Usu_Id = usp.Usu_Id WHERE usp.Cai_Id = @IdCadeia"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdCadeia", DbType.Int32, IdInstancia); return bd.ObterDataTable(); }
/// <summary> /// Para uma cadeia retorna os parâmetros definidos para a sua função armazenada de hierarquia /// O objetivo desse método é facilitar a criação do DataTable para o parâmetro parametrosFuncaoHierarquia /// do método Incluir /// </summary> /// <returns>Superiores hierárquicos do funcionário</returns> public static CadeiaAutorizacaoDataSet.ParemetroFuncaoHierarquiaDataTable ObterParametrosFuncaoHierarquia(int IdCadeia) { string sql = @"SELECT Hpr_Nome AS nome, tpa.Tpa_Descri AS tipo, Hpr_Tamanho AS tamanho, null AS valor FROM CadeiaAutorizacao.HierarquiaParametro hpr INNER JOIN CadeiaAutorizacao.Hierarquia hie on hie.Hie_Id = hpr.Hie_Id INNER JOIN CadeiaAutorizacao.Cadeia cau on cau.Hie_Id = hie.Hie_Id INNER JOIN Manutencao.TipoADO tpa on tpa.Tpa_Id = hpr.Tpa_Id WHERE cau.Cau_Id = @IdCadeia"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdCadeia", DbType.Int32, IdCadeia); return bd.ObterDataTable<CadeiaAutorizacaoDataSet.ParemetroFuncaoHierarquiaDataTable>(); }
/// <summary> /// Retorna os dados da instância da cadeia. /// </summary> /// <param name="IdInstancia">Id da instância</param> /// <returns>DataTable com a linha da instância</returns> public static DataTable ObterInstancia(int IdInstancia) { string sql = @"SELECT cau.Cau_Descri, cai.Cai_Id, cai.Cai_Descri, cai.Cai_Data, cai.Cai_Status, CASE cai.Cai_Status WHEN 0 THEN 'Aberta' WHEN 1 THEN 'Aprovada' WHEN 2 THEN 'Reprovada' END AS InstanciaStatus, cai.Cai_Valor, cai.Cai_Conteudo, usu.usu_Nome FROM CadeiaAutorizacao.Cadeia cau INNER JOIN CadeiaAutorizacao.CadeiaInstancia cai on cau.Cau_Id = cai.Cau_Id INNER JOIN Usuario usu on usu.Usu_Id = cai.Usu_IdProprietario WHERE cai.Cai_Id = @IdInstancia"; BdUtil bd = new BdUtil(sql); bd.AdicionarParametro("@IdInstancia", DbType.Int32, IdInstancia); return bd.ObterDataTable(); }