🛠️ Documentação Técnica: DIRF
[!NOTE] Documentação Gerada Automaticamente O conteúdo abaixo foi gerado por IA através de engenharia reversa do código-fonte e deve ser validado.
A tela GerarGuiasArquivosLegaisDirf.aspx é utilizada para gerar a Declaração do Imposto de Renda Retido na Fonte (DIRF).
👁️ 1. Visão Geral
- Propósito da tela: Gerar o arquivo DIRF para um determinado ano calendário, permitindo incluir ou não empregados sem retenção. A tela também exibe um histórico de arquivos DIRF gerados, com a possibilidade de download.
- Contexto no sistema: Faz parte do módulo WebFoPag, relacionado à geração de guias e arquivos legais.
- Usuários que utilizam: Usuários com permissão de “Visualizar Guia Arquivo” na categoria “Guia Arquivo”.
🗂️ 2. Tipos/Modalidades
- A tela opera em uma única modalidade principal: geração de arquivos DIRF.
- A opção “Gerar empregados sem retenção?” permite variar o conteúdo do arquivo gerado.
🖥️ 3. Interface — Campos e Controles
| Nome | Tipo | Obrigatório | Regra |
|---|---|---|---|
| ucVerbasNaoConfiguradas | UserControl | ⚪ Não | Exibe informações sobre verbas não configuradas para arquivos legais. |
| lsAnoVigencia | Employer:ListaSugestoes | 🔴 Sim | Seleção do ano calendário para a geração da DIRF. Valor Incorreto, Campo Obrigatório. |
| lsEmpregadosSemRetencao | Employer:ListaSugestoes | 🔴 Sim | Opção para incluir ou não empregados sem retenção no arquivo DIRF. Valor Incorreto, Campo Obrigatório. |
| btnComprovanteRendimento | Employer:Button | ⚪ Não | Botão para gerar comprovante de rendimento. |
| btnGerar | Employer:Button | ⚪ Não | Botão para iniciar a geração do arquivo DIRF. |
| btnLimparTela | Employer:Button | ⚪ Não | Botão para limpar a tela, redirecionando para a mesma página. |
| btnVoltar | Employer:Button | ⚪ Não | Botão para retornar à página de “Menu Mais Opções”. |
| gvArquivosGerados | Employer:EmployerGrid | ⚪ Não | Exibe uma lista dos arquivos DIRF gerados, com colunas para Período, Data Geração, Tipo, Situação e Ação (Download). |
| lblUltimaAtualizacao | Employer:Label | ⚪ Não | Exibe a data e hora da última atualização da lista de arquivos gerados. |
| ibtDownloadLink (dentro de gvArquivosGerados) | ImageButton | ⚪ Não | Botão de download para o arquivo gerado. Visível apenas se o status da fila de execução for “FinalizadoComSucesso”. |
| btnAtualizar | Employer:Button | ⚪ Não | Botão para atualizar a lista de arquivos gerados. |
📑 4. Abas e Seções
pnlFormulario: Painel principal que contém os campos de entrada para a geração da DIRF.pnlBotoes: Painel que agrupa os botões de ação da tela (Comprovante Rendimento, Gerar, Limpar, Voltar).pnlArquivosGerados: Painel que exibe a lista de arquivos DIRF gerados (gvArquivosGerados) e o botão de atualização.
🛡️ 5. Regras de Negócio
5.1. Validações de Campos
- lsAnoVigencia: Campo obrigatório. Mensagem de erro: “Campo Obrigatório.” ou “Valor Incorreto.” (validado no frontend e no code-behind antes da geração).
- lsEmpregadosSemRetencao: Campo obrigatório. Mensagem de erro: “Campo Obrigatório.” ou “Valor Incorreto.” (validado no frontend e no code-behind antes da geração).
- Geração DIRF: É necessário que o
lsAnoVigencia.Valornão seja nulo ou vazio e que exista um layout de arquivo legal configurado para o tipo DIRF e o ano selecionado (ArquivoLegalLayout.VerificarArquivoLegalLayout). Caso contrário, a geração não prossegue e exibe a mensagem: “Não foi possível enviar a requisição para gerar o arquivo.” (validado no métodoGerardo code-behind).
5.2. Regras de Habilitação/Desabilitação e Visibilidade
- ibtDownloadLink: O botão de download (
ibtDownloadLink) na gridgvArquivosGeradosé visível apenas se oIdf_Status_Fila_Execucao_Arquivosdo registro for igual aStatusFilaExecucaoArquivosEnum.FinalizadoComSucesso(definido nogvArquivosGerados_RowDataBounddo code-behind). - tmrArquivos: O timer
tmrArquivosé habilitado (tmrArquivos.Enabled = true) se houver algum arquivo na gridgvArquivosGeradoscom status diferente deFinalizadoComSucesso, indicando que há processos em andamento que precisam de atualização (definido nogvArquivosGerados_RowDataBounde notmrArquivos_Tickdo code-behind). - Acesso à Tela: Se o usuário não possuir a permissão
BLL.Enumeradores.Permissoes.GuiaArquivo.VisualizarGuiaArquivo, ele é redirecionado para a página de acesso negado (Configuracao.UrlAcessoNegado) (verificado noConfigurarPermissoesTelado code-behind).
5.3. Regras de Inativação e Exclusão
- Inativação de Arquivos Gerados: Antes de gerar um novo arquivo DIRF, o sistema inativa arquivos legais gerados anteriormente para o mesmo ano, usuário e empresa (
ArquivoLegalArquivoGerado.InativarPorAno) (executado no métodoGerardo code-behind).
5.4. Regras de Salvar e Fluxo de Configuração
- Geração DIRF:
- Inativa arquivos legais gerados anteriormente para o ano selecionado (
ArquivoLegalArquivoGerado.InativarPorAno). - Cria um novo registro de arquivo legal gerado no banco de dados (
ArquivoLegalArquivoGerado.CriarArquivoLegalArquivoGeradoDirf), populando a tabelaTAB_Arquivo_Legal_Arquivo_Gerado. - Adiciona o método de criação da estrutura do arquivo na fila de execução assíncrona (
Employer.PlataformaServices.ProcessosAssincronos). - Atualiza a grid de arquivos gerados (
CarregarGridArquivosGeradosDIRF). - Exibe mensagem de sucesso (
MensagemAviso._1150003). - Em modo DEBUG, o método
DIRF.GerarTextoDIRF2025é chamado para gerar o texto da DIRF (no code-behind, dentro do métodoGerar).
5.5. Outras Regras Específicas da Tela
- Atualização da Grid: A grid de arquivos gerados (
gvArquivosGerados) é atualizada automaticamente a cada 10 segundos se houver arquivos com status pendente (controlado pelotmrArquivos_Tickdo code-behind). - Download de Arquivo: Ao clicar no botão de download, o sistema recupera o arquivo gerado (
ArquivoLegalArquivoGerado.LoadObject), obtém a URL de download de documentos do dicionário (Dicionario.RecuperaValorDicionario), constrói uma URL com token para o arquivo ZIP (UrlUtil.RetornaUrlArquivoToken) e inicia o download via JavaScript. Exibe mensagem de aviso (MensagemAviso._1150004) ou erro se a requisição falhar (noibtDownloadLink_Clickdo code-behind). - Comprovante de Rendimento: Ao clicar no botão “Comprovante Rendimento”, a tela redireciona para
GeradorDeRelatoriosAssincronos.aspx, passando o ano de vigência e o ID do relatório de Comprovante de Rendimentos via Session (btnComprovanteRendimento_Clickdo code-behind). - Redirecionamento para Configuração de Campo DIRF: Ao clicar em uma verba não configurada no UserControl
ucVerbasNaoConfiguradas, o eventoucVerbasNaoConfiguradas_VerbaSelecionada_Clické disparado, armazenando o ID da verba e o ano de vigência na Session e redirecionando paraCampoDirfConfiguracaoCadastroEspecifico.aspx.
🔄 6. Fluxos Principais
6.1. Inicialização da Tela (Page_Load)
- Registra os eventos dos UserControls (
RegistrarEventos). - Define o título da página como “Consulta Guia Arquivo”.
- Se a página não for um PostBack:
a. Chama o método
Inicializar().
6.2. Inicialização (Inicializar)
- Chama
ConfigurarPermissoesTela()para verificar e aplicar as permissões do usuário. - Carrega a lista de sugestões para o campo
lsAnoVigenciautilizandoArquivoLegalLayout.Listarpara o tipoDIRF, exibindo “Num_Ano” e “Des_Arquivo_Legal_Layout”. - Carrega a lista de sugestões para o campo
lsEmpregadosSemRetencaoutilizandoBLL.Flag.Listare define o valor padrão como “Não” (BLL.Enumeradores.Flag.Nao.GetHashCode().ToString()). - Atualiza as informações do UserControl
ucVerbasNaoConfiguradascom o ano de vigência (se selecionado) e o tipo de arquivo legal DIRF. - Chama
CarregarGridArquivosGeradosDIRF()para popular a grid de arquivos gerados.
6.3. Geração do Arquivo DIRF (btnGerar_Click -> Gerar)
- O evento
btnGerar_Clické acionado. - Verifica se a página é válida (
Page.IsValid). - Se válida, chama o método
Gerar(). - Dentro de
Gerar(): a. Verifica se olsAnoVigencia.Valornão é nulo/vazio e seArquivoLegalLayout.VerificarArquivoLegalLayoutretorna true para o tipo DIRF e o ano selecionado. b. Se a validação for bem-sucedida: i. ChamaArquivoLegalArquivoGerado.InativarPorAnopara o ano, usuário, empresa e tipo de arquivo legal (1). ii. ChamaArquivoLegalArquivoGerado.CriarArquivoLegalArquivoGeradoDirfpara criar um novo registro de arquivo gerado, passando o layout carregado, a opção de empregados sem retenção, código da empresa e código do usuário logado. iii. ChamaCarregarGridArquivosGeradosDIRF()para atualizar a grid. iv. Exibe mensagem de sucesso (MensagemAviso._1150003). v. Em modo DEBUG, chamaDIRF.GerarTextoDIRF2025com os parâmetros da empresa, ano, usuário, tipo de arquivo legal (1), opção de empregados sem retenção, IdfFilaExecucaoArquivos (0) e caminho do arquivo (string.Empty). c. Se a validação falhar, exibe mensagem de aviso (MensagemAviso._1150005).
6.4. Alteração do Ano de Vigência (lsAnoVigencia_ValorAlterado)
- O evento
lsAnoVigencia_ValorAlteradoé acionado. - Se o valor do ano de vigência não for vazio:
a. Chama
ucVerbasNaoConfiguradas.AtualizarInformacoescom o ano selecionado e o tipo de arquivo legal DIRF. - Chama
CarregarGridArquivosGeradosDIRF().
6.5. Download do Arquivo (ibtDownloadLink_Click)
- O evento
ibtDownloadLink_Clické acionado. - Identifica o
ImageButtonclicado e aGridViewRowcorrespondente. - Obtém o
Idf_Arquivo_Geradoda linha selecionada. - Carrega o objeto
ArquivoLegalArquivoGeradoutilizandoArquivoLegalArquivoGerado.LoadObject. - Recupera a URL base para download de documentos do dicionário (
Dicionario.RecuperaValorDicionario(Enum.ItemDicionario.UrlDownloadDocs)). - Constrói a URL completa para download do arquivo ZIP utilizando
UrlUtil.RetornaUrlArquivoToken. - Registra um script JavaScript (
tryToDownload) para iniciar o download no cliente. - Exibe mensagem de aviso (
MensagemAviso._1150004). - Em caso de exceção, exibe a mensagem “Não foi possível enviar a requisição para gerar o arquivo.”
6.6. Atualização da Grid (btnAtualizar_Click e tmrArquivos_Tick)
- O evento
btnAtualizar_ClickoutmrArquivos_Tické acionado. - Chama
CarregarGridArquivosGeradosDIRF()para recarregar os dados da grid.
6.7. Voltar (btnVoltar_Click)
- O evento
btnVoltar_Clické acionado. - Redireciona o usuário para a página
~/MenuMaisOpcoes.aspx?ID=9.
6.8. Limpar Tela (btnLimparTela_Click)
- O evento
btnLimparTela_Clické acionado. - Redireciona o usuário para a URL atual da página (
Request.RawUrl.TrimStart(new char[] { '/' })), recarregando a tela e limpando os campos.
6.9. Handler de Verba Selecionada no UserControl (ucVerbasNaoConfiguradas_VerbaSelecionada_Click)
- O evento
HandlerBtnVerbaSelecionadaClickdoucVerbasNaoConfiguradasé disparado. - O
pIdVerbaSelecionadaé armazenado na Session (Chave.Temporaria.Variavel3). - O ano de vigência (se preenchido) é armazenado na Session (
Chave.Temporaria.Variavel5). - Redireciona para a página
CampoDirfConfiguracaoCadastroEspecifico.aspx.
🔌 7. Integrações e Dependências
7.1. Classes BLL e Service utilizadas
-
Employer.Plataforma.BLL.ArquivoLegalArquivoGerado (Arquivos:
Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs,Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P2.cs) -
CriarArquivoLegalArquivoGeradoDirf(ArquivoLegalLayout pObjArquivoLegalLayout, int pIdfGerarEmpregadosSemRetencao, int pIdfEmpresa, int pIdfUsuario): Cria um novo registro na tabelaTAB_Arquivo_Legal_Arquivo_Geradopara a DIRF, associando-o a um layout, empresa e usuário. Este método também adiciona a tarefa de criação da estrutura do arquivo na fila de execução assíncrona. -
InativarPorAno(int pNumAno, int pIdfUsuario, int pIdfEmpresa, int pIdfTipoArquivoLegal): Inativa registros de arquivos legais gerados para um determinado ano, usuário, empresa e tipo de arquivo legal. -
ListarArquivoPorAno(int? pNumAno, int pIdfEmpresa): Retorna uma lista de arquivos legais gerados para um determinado ano (opcional) e empresa. Utilizado para popular a grid de arquivos gerados. -
LoadObject(int pIdfArquivoGerado): Carrega um objetoArquivoLegalArquivoGeradopelo seu identificador. Utilizado para obter detalhes do arquivo a ser baixado. -
Employer.Plataforma.BLL.ArquivoLegalLayout (Arquivos:
Employer.Plataforma.BLL\ArquivoLegalLayout_P1.cs,Employer.Plataforma.BLL\ArquivoLegalLayout_P2.cs) -
CarregarPorAno(int pIdfTipoArquivoLegal, int pNumAno): Carrega um objetoArquivoLegalLayoutpara um tipo de arquivo legal e ano específicos. Utilizado para obter o layout da DIRF para o ano selecionado. -
Listar(int pIdfTipoArquivoLegal): Retorna uma lista de layouts de arquivos legais para um determinado tipo. Utilizado para popular a lista de sugestões do ano de vigência. -
VerificarArquivoLegalLayout(int pIdfTipoArquivoLegal, int pNumAno): Verifica se existe um layout de arquivo legal para um tipo e ano específicos. Utilizado para validar se a geração da DIRF pode prosseguir. -
Employer.Plataforma.BLL.WebFoPag.DIRF (Arquivos:
Employer.Plataforma.BLL.WebFoPag\DIRF.cs,Employer.Plataforma.BLL.WebFoPag2\DIRF.cs) -
GerarTextoDIRF2025(int pIdfEmpresa, int pNumAno, int pIdfUsuario, int pIdfTipoArquivoLegal, int pIdfGerarEmpregadosSemRetencao, int pIdfFilaExecucaoArquivos, string pDesCaminhoArquivo): Gera o conteúdo textual do arquivo DIRF para o ano de 2025. Este método é chamado apenas em modo DEBUG na tela. -
Employer.Plataforma.BLL.Dicionario (Arquivos:
Employer.Plataforma.BLL\Dicionario_P1.cs,Employer.Plataforma.BLL\Dicionario_P2.cs,Employer.Plataforma.BLL.Login\Dicionario_P1.cs,Employer.Plataforma.BLL.Login\Dicionario_P2.cs,Employer.Plataforma.BLL.STS\Dicionario_P1.cs,Employer.Plataforma.BLL.STS\Dicionario_P2.cs) -
RecuperaValorDicionario(Enum.ItemDicionario pItemDicionario): Recupera um valor do dicionário de acordo com o item especificado. Utilizado para obter a URL base para download de documentos (UrlDownloadDocs). -
Employer.Plataforma.BLL.Security.Docs.UrlUtil (Arquivo:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Security\Docs\UrlUtil.cs) -
RetornaUrlArquivoToken(string pNomeArquivo, string pUrlBase, UrlUtil.TipoCaminho pTipoCaminho, string pNomeArquivoOriginal, string pTipoConteudo): Retorna uma URL com token para download de arquivos, garantindo segurança e rastreabilidade. -
Employer.Plataforma.BLL.Usuario (Arquivos:
Employer.Plataforma.BLL\Usuario_P1.cs,Employer.Plataforma.BLL\Usuario_P2.cs,Employer.Plataforma.BLL.Login\Usuario_P1.cs,Employer.Plataforma.BLL.Login\Usuario_P2.cs,Employer.Plataforma.BLL.STS\Usuario_P1.cs,Employer.Plataforma.BLL.STS\Usuario_P2.cs) -
CarregarPermissoes(Usuario pObjUsuario, BLL.Enumeradores.CategoriaPermissao pCategoriaPermissao): Carrega as permissões de um usuário para uma categoria de permissão específica. Utilizado para verificar as permissões de acesso à tela.
7.2. Stored Procedures chamadas
-
SP_Arquivo_Legal_Arquivo_Gerado_Inativar_Por_Ano
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs -
Parâmetros SQL:
@Num_Ano,@Idf_Usuario,@Idf_Empresa,@Idf_Tipo_Arquivo_Legal -
Propósito: Inativa registros de arquivos legais gerados para um determinado ano, usuário, empresa e tipo.
-
SP_Arquivo_Legal_Arquivo_Gerado_Criar_Dirf
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs -
Parâmetros SQL:
@Idf_Arquivo_Legal_Layout,@Idf_Gerar_Empregados_Sem_Retencao,@Idf_Empresa,@Idf_Usuario -
Propósito: Cria um novo registro na tabela
TAB_Arquivo_Legal_Arquivo_Geradopara a DIRF. -
SP_Arquivo_Legal_Arquivo_Gerado_Listar_Por_Ano
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs -
Parâmetros SQL:
@Num_Ano,@Idf_Empresa -
Propósito: Lista os arquivos legais gerados para um determinado ano e empresa.
-
SP_Arquivo_Legal_Arquivo_Gerado_Load
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs -
Parâmetros SQL:
@Idf_Arquivo_Gerado -
Propósito: Carrega um registro de arquivo legal gerado pelo seu identificador.
-
SP_Arquivo_Legal_Layout_Carregar_Por_Ano
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalLayout_P1.cs -
Parâmetros SQL:
@Idf_Tipo_Arquivo_Legal,@Num_Ano -
Propósito: Carrega um layout de arquivo legal para um tipo e ano específicos.
-
SP_Arquivo_Legal_Layout_Listar
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalLayout_P1.cs -
Parâmetros SQL:
@Idf_Tipo_Arquivo_Legal -
Propósito: Lista os layouts de arquivos legais para um determinado tipo.
-
SP_Arquivo_Legal_Layout_Verificar
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\ArquivoLegalLayout_P1.cs -
Parâmetros SQL:
@Idf_Tipo_Arquivo_Legal,@Num_Ano -
Propósito: Verifica a existência de um layout de arquivo legal para um tipo e ano específicos.
-
SP_Dicionario_Recupera_Valor
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\Dicionario_P1.cs -
Parâmetros SQL:
@Idf_Item_Dicionario -
Propósito: Recupera um valor do dicionário de dados do sistema.
-
SP_Usuario_Carregar_Permissoes
-
Arquivo BLL onde aparece:
Employer.Plataforma.BLL\Usuario_P1.cs -
Parâmetros SQL:
@Idf_Usuario,@Idf_Categoria_Permissao -
Propósito: Carrega as permissões de um usuário para uma categoria de permissão específica.
7.3. UserControls incluídos (.ascx)
- ucVerbasNaoConfiguradas
- Caminho:
~/UserControls/ucModalVerbasNaoConfiguradasArquivosLegais.ascx - ID:
ucVerbasNaoConfiguradas - Tag:
<ucVerbasNaoConfiguradas:VerbasNaoConfiguradas> - Propriedades expostas: Não explicitamente listadas no .aspx, mas o code-behind da tela pai chama
ucVerbasNaoConfiguradas.AtualizarInformacoes(int? pAnoVigencia, int pIdfTipoArquivoLegal). - Eventos:
HandlerBtnVerbaSelecionadaClick(delegadobtnVerbaSelecionada_Handler), que é tratado pelo métodoucVerbasNaoConfiguradas_VerbaSelecionada_Clickna tela pai. - Métodos públicos chamados pela tela pai:
AtualizarInformacoes.
7.4. WebServices, APIs externas, filas
- Fila de Execução de Arquivos Assíncronos: A geração do arquivo DIRF envolve a adição de uma tarefa de criação da estrutura do arquivo em uma fila de execução assíncrona, gerenciada pelo serviço
Employer.PlataformaServices.ProcessosAssincronos. Isso permite que a geração do arquivo ocorra em segundo plano, sem bloquear a interface do usuário.
💬 8. Mensagens ao Usuário
- “Última atualização: {0:dd/MM/yyyy HH:mm:ss}” (Exibida no
lblUltimaAtualizacaopara indicar a data e hora da última atualização da grid de arquivos gerados). - “Não foi encontrado nenhum registro.” (Texto exibido na
gvArquivosGeradosquando não há dados para mostrar). - “Valor Incorreto.” (Mensagem de validação para os campos
lsAnoVigenciaelsEmpregadosSemRetencaose o formato do valor estiver incorreto). - “Campo Obrigatório.” (Mensagem de validação para os campos
lsAnoVigenciaelsEmpregadosSemRetencaose estiverem vazios). MensagemAviso._1150004: Mensagem de aviso exibida após a requisição de download do arquivo ser enviada com sucesso.- “Não foi possível enviar a requisição para gerar o arquivo.” (Mensagem de erro exibida em caso de exceção durante a tentativa de download do arquivo).
MensagemAviso._1150003: Mensagem de sucesso exibida após a geração bem-sucedida do arquivo DIRF.MensagemAviso._1150005: Mensagem de aviso exibida se o ano de vigência for nulo/vazio ou se não houver layout de arquivo legal configurado para o tipo DIRF e o ano selecionado, impedindo a geração do arquivo.
🔐 9. Permissões e Perfis
- Permissão:
BLL.Enumeradores.Permissoes.GuiaArquivo.VisualizarGuiaArquivo - Controle: Esta permissão é verificada no método
ConfigurarPermissoesTela(). Se o usuário logado não possuir esta permissão, ele é redirecionado para a página de acesso negado (Configuracao.UrlAcessoNegado), impedindo o acesso à telaGerarGuiasArquivosLegaisDirf.aspx.
🔎 10. Aprofundamento — Detalhes Internos de Métodos
A leitura dos arquivos foi concluída. Agora, vou processar o conteúdo para gerar a documentação detalhada para cada classe.
ArquivoLegalArquivoGerado
Arquivos:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ArquivoLegalArquivoGerado_P2.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Método auxiliar para preparar parâmetros SQL para insert e update. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância. |
Insert | private void Insert() private void Insert(SqlTransaction trans) | Insere uma instância de ArquivoLegalArquivoGerado no banco de dados, com ou sem transação. |
Update | private void Update() private void Update(SqlTransaction trans) | Atualiza uma instância de ArquivoLegalArquivoGerado no banco de dados, com ou sem transação. |
Save | public void Save() public void Save(SqlTransaction trans) | Salva uma instância de ArquivoLegalArquivoGerado no banco de dados (insert ou update), com ou sem transação. |
Delete | public static void Delete(int idArquivoLegalArquivoGerado) public static void Delete(int idArquivoLegalArquivoGerado, SqlTransaction trans) public static void Delete(List<int> idArquivoLegalArquivoGerado) | Exclui uma ou mais instâncias de ArquivoLegalArquivoGerado do banco de dados, com ou sem transação. |
LoadDataReader | private static IDataReader LoadDataReader(int idArquivoLegalArquivoGerado) private static IDataReader LoadDataReader(int idArquivoLegalArquivoGerado, SqlTransaction trans) public static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader para um registro específico ou para uma consulta paginada. |
LoadObject | public static ArquivoLegalArquivoGerado LoadObject(int idArquivoLegalArquivoGerado) public static ArquivoLegalArquivoGerado LoadObject(int idArquivoLegalArquivoGerado, SqlTransaction trans) | Retorna uma instância de ArquivoLegalArquivoGerado a partir do banco de dados. |
CompleteObject | public bool CompleteObject() public bool CompleteObject(SqlTransaction trans) | Completa uma instância existente de ArquivoLegalArquivoGerado com dados do banco de dados. |
SetInstance | private static bool SetInstance(IDataReader dr, ArquivoLegalArquivoGerado objArquivoLegalArquivoGerado) | Método auxiliar para preencher os atributos de uma instância de ArquivoLegalArquivoGerado a partir de um IDataReader. |
LoadObjectPorFila | public static ArquivoLegalArquivoGerado LoadObjectPorFila(long idFila) | Carrega um objeto ArquivoLegalArquivoGerado com base no ID da fila de execução. |
ListarArquivoPorAno | public static DataTable ListarArquivoPorAno(int? pNumAno, int pIdEmpresa) | Lista arquivos legais gerados para um ano e empresa específicos. |
CriarArquivoLegalArquivoGeradoDirf | public static ArquivoLegalArquivoGerado CriarArquivoLegalArquivoGeradoDirf(ArquivoLegalLayout objArquivoLegalLayout, int pEmpregadosSemRetencao, int idEmpresa, int pCodigoUsuarioLogado) | Cria um novo registro de arquivo legal gerado para a DIRF e adiciona a tarefa na fila de execução assíncrona. |
DeletarAntesExecucao | public static void DeletarAntesExecucao(int pIdArquivoGerado) | Exclui um arquivo gerado e sua fila de execução associada antes da execução. |
InativarPorAno | public static void InativarPorAno(int pNumANo, int pIdUsuarioGerador, int pIdEmpresa, int pIdTipoArquivoLegal) | Inativa arquivos legais gerados para um ano, usuário, empresa e tipo de arquivo legal específicos. |
Detalhamento de Métodos Importantes
CriarArquivoLegalArquivoGeradoDirf(ArquivoLegalLayout objArquivoLegalLayout, int pEmpregadosSemRetencao, int idEmpresa, int pCodigoUsuarioLogado)
- Lógica:
- Inicia uma nova transação SQL.
- Carrega o objeto
Empresacorrespondente aoidEmpresafornecido. - Criação do Arquivo Gerado:
- Instancia um novo objeto
ArquivoLegalArquivoGerado. - Atribui o
objArquivoLegalLayoutrecebido. - Define o
NomeArquivoLegalno formato “DIRF{Ano}{CNPJEmpresa}{DataHoraAtual}”. - Atribui a
Empresacarregada. - Define
FlagConsolidadocomofalse. - Define
DataArquivoGeradocomo a data e hora atuais. - Define
DataConsolidadocomonull. - Salva o objeto
objArquivoLegalArquivoGeradono banco de dados dentro da transação.
- Criação da Fila de Execução:
- Cria uma lista de parâmetros para o método que será executado assincronamente, incluindo
pIdEmpresa,pNumAno,pCodUsuario,pIdArquivoLegalArquivoGeradoepEmpregadosSemRetencao. - Instancia um novo objeto
FilaExecucaoArquivos. - Configura o
DescricaoCaminhoAssembly,NomeNamespaceeNomeClasseparaEmployer.Plataforma.BLL.WebFoPag.DIRF. - Define
DescricaoMetodoExecucaocom base noNumeroAnodoobjArquivoLegalLayout(ex:GerarTextoDIRF2025). - Gera o XML dos parâmetros para
DescricaoParametrosExecucao. - Define
NumeroPrioridadecomo 1 eNumeroTentativascomo 0. - Define
StatusFilaExecucaoArquivoscomoAguardandoExecucao. - Salva o objeto
objFilano banco de dados dentro da transação.
- Atualização do Arquivo Gerado com Fila de Execução:
- Associa o
objFilarecém-criado aoobjArquivoLegalArquivoGerado. - Salva novamente o
objArquivoLegalArquivoGeradopara persistir a associação.
- Comita a transação.
- Retorna o
objArquivoLegalArquivoGeradocriado.
- Stored Procedures chamadas:
SPINSERT(paraTAB_Arquivo_Legal_Arquivo_Gerado):@Idf_Arquivo_Legal_Layout,@Nme_Arquivo_Legal,@Idf_Empresa,@Flg_Consolidado,@Dta_Arquivo_Gerado,@Dta_Consolidado,@Idf_Usuario_Gerador,@Flg_inativo,@Idf_Fila_Execucao_Arquivos,@Dta_Referencia— Insere um novo registro de arquivo legal gerado.SPINSERT(paraTAB_Fila_Execucao_Arquivos- implícito na chamadaobjFila.Save(trans)) — Insere um novo registro na fila de execução.SPUPDATE(paraTAB_Arquivo_Legal_Arquivo_Gerado- implícito na chamadaobjArquivoLegalArquivoGerado.Save(trans)) — Atualiza o registro do arquivo legal gerado com o ID da fila de execução.
- Validações: Nenhuma validação explícita dentro do método, assume que os objetos de entrada são válidos.
- Regras de negócio:
- O nome do arquivo DIRF é formatado com ano, CNPJ da empresa e timestamp.
- A geração do arquivo é assíncrona, adicionando uma tarefa a uma fila de execução.
- O método de geração específico (
GerarTextoDIRFXXXX) é determinado pelo ano do layout.
- Exceções lançadas: Propaga exceções de banco de dados (
SqlException) e outras exceções que possam ocorrer durante a operação, realizando rollback da transação.
InativarPorAno(int pNumANo, int pIdUsuarioGerador, int pIdEmpresa, int pIdTipoArquivoLegal)
- Lógica:
- Inicia uma nova transação SQL.
- Cria uma lista de parâmetros SQL:
@Num_Ano,@Idf_Usuario_Gerador,@Idf_Empresa,@Idf_Tipo_Arquivo_Legal. - Atribui os valores dos parâmetros recebidos.
- Executa a query
SPINATIVARPORANOpara inativar os registros. - Comita a transação.
- Stored Procedures chamadas:
SPINATIVARPORANO:@Num_Ano,@Idf_Usuario_Gerador,@Idf_Empresa,@Idf_Tipo_Arquivo_Legal— Inativa registros de arquivos legais gerados para um determinado ano, usuário, empresa e tipo, desde que não estejam consolidados.
- Validações: Nenhuma validação explícita.
- Regras de negócio: Inativa apenas arquivos não consolidados (
Flg_Consolidado = 0). - Exceções lançadas: Propaga exceções de banco de dados (
SqlException), realizando rollback da transação.
ListarArquivoPorAno(int? pNumAno, int pIdEmpresa)
- Lógica:
- Cria uma lista de parâmetros SQL:
@Num_Ano,@Idf_Empresa. - Atribui o
pNumAno(pode serDBNull.Valuese nulo) epIdEmpresa. - Executa a query
SPLISTARARQUIVOPORANOe retorna o resultado como umDataTable.
- Cria uma lista de parâmetros SQL:
- Stored Procedures chamadas:
SPLISTARARQUIVOPORANO:@Num_Ano,@Idf_Empresa— Retorna uma lista de arquivos legais gerados para um determinado ano (opcional) e empresa, incluindo informações do layout, data de geração, tipo, status da fila de execução e flag de consolidado.
- Validações: Nenhuma.
- Regras de negócio: Filtra por arquivos não inativos (
ALAG.Flg_Inativo = 0). - Exceções lançadas: Propaga exceções de banco de dados.
LoadObject(int pIdfArquivoGerado)
- Lógica:
- Chama o método
LoadDataReader(int idArquivoLegalArquivoGerado)para obter umIDataReader. - Instancia um novo objeto
ArquivoLegalArquivoGerado. - Chama
SetInstance(IDataReader dr, ArquivoLegalArquivoGerado objArquivoLegalArquivoGerado)para preencher o objeto. - Se o objeto foi preenchido com sucesso, o retorna.
- Caso contrário, lança uma
RecordNotFoundException.
- Chama o método
- Stored Procedures chamadas:
SPSELECTID:@Idf_Arquivo_Legal_Arquivo_Gerado— Seleciona um registro da tabelaTAB_Arquivo_Legal_Arquivo_Geradopelo ID.
- Validações: Verifica se o registro foi encontrado.
- Exceções lançadas:
RecordNotFoundExceptionse o registro não for encontrado.
Stored Procedures
| Nome | Parâmetros | Propósito |
|---|---|---|
SPINSERT | @Idf_Arquivo_Legal_Arquivo_Gerado, @Idf_Arquivo_Legal_Layout, @Nme_Arquivo_Legal, @Idf_Empresa, @Flg_Consolidado, @Dta_Arquivo_Gerado, @Dta_Consolidado, @Idf_Usuario_Gerador, @Flg_inativo, @Idf_Fila_Execucao_Arquivos, @Dta_Referencia | Insere um novo registro na tabela TAB_Arquivo_Legal_Arquivo_Gerado. |
SPUPDATE | @Idf_Arquivo_Legal_Arquivo_Gerado, @Idf_Arquivo_Legal_Layout, @Nme_Arquivo_Legal, @Idf_Empresa, @Flg_Consolidado, @Dta_Arquivo_Gerado, @Dta_Consolidado, @Idf_Usuario_Gerador, @Flg_inativo, @Idf_Fila_Execucao_Arquivos, @Dta_Referencia | Atualiza um registro existente na tabela TAB_Arquivo_Legal_Arquivo_Gerado. |
SPDELETE | @Idf_Arquivo_Legal_Arquivo_Gerado, @Idf_Usuario_Gerador | Inativa (atualiza Idf_Usuario_Gerador) e depois exclui um registro da tabela TAB_Arquivo_Legal_Arquivo_Gerado. |
SPSELECTID | @Idf_Arquivo_Legal_Arquivo_Gerado | Seleciona todas as colunas de um registro na tabela TAB_Arquivo_Legal_Arquivo_Gerado pelo seu identificador. |
SPLOADPORFILA | @Idf_Fila_Execucao_Arquivos | Seleciona todos os registros da tabela TAB_Arquivo_Legal_Arquivo_Gerado onde o Idf_Fila_Execucao_Arquivos corresponde ao parâmetro. |
SPLISTARARQUIVOPORANO | @Num_Ano, @Idf_Empresa | Lista arquivos legais gerados, unindo TAB_Arquivo_Legal_Arquivo_Gerado com plataforma.TAB_Arquivo_Legal_Layout, TAB_Fila_Execucao_Arquivos e plataforma.TAB_Status_Fila_Execucao_Arquivos. Filtra por ano (opcional) e empresa, excluindo inativos. |
SPINATIVARPORANO | @Num_Ano, @Idf_Usuario_Gerador, @Idf_Empresa, @Idf_Tipo_Arquivo_Legal | Atualiza a flag Flg_Inativo para 1 e Idf_Usuario_Gerador para os arquivos legais gerados que correspondem ao ano, empresa e tipo de arquivo legal, e que não estão consolidados. |
ArquivoLegalLayout
Arquivos:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ArquivoLegalLayout_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\ArquivoLegalLayout_P2.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Método auxiliar para preparar parâmetros SQL para insert e update. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância. |
Insert | private void Insert() private void Insert(SqlTransaction trans) | Insere uma instância de ArquivoLegalLayout no banco de dados, com ou sem transação. |
Update | private void Update() private void Update(SqlTransaction trans) | Atualiza uma instância de ArquivoLegalLayout no banco de dados, com ou sem transação. |
Save | public void Save() public void Save(SqlTransaction trans) | Salva uma instância de ArquivoLegalLayout no banco de dados (insert ou update), com ou sem transação. |
Delete | public static void Delete(int idArquivoLegalLayout) public static void Delete(int idArquivoLegalLayout, SqlTransaction trans) public static void Delete(List<int> idArquivoLegalLayout) | Exclui uma ou mais instâncias de ArquivoLegalLayout do banco de dados, com ou sem transação. |
LoadDataReader | private static IDataReader LoadDataReader(int idArquivoLegalLayout) private static IDataReader LoadDataReader(int idArquivoLegalLayout, SqlTransaction trans) public static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader para um registro específico ou para uma consulta paginada. |
LoadObject | public static ArquivoLegalLayout LoadObject(int idArquivoLegalLayout) public static ArquivoLegalLayout LoadObject(int idArquivoLegalLayout, SqlTransaction trans) | Retorna uma instância de ArquivoLegalLayout a partir do banco de dados. |
CompleteObject | public bool CompleteObject() public bool CompleteObject(SqlTransaction trans) | Completa uma instância existente de ArquivoLegalLayout com dados do banco de dados. |
SetInstance | private static bool SetInstance(IDataReader dr, ArquivoLegalLayout objArquivoLegalLayout) | Método auxiliar para preencher os atributos de uma instância de ArquivoLegalLayout a partir de um IDataReader. |
ListarParaGrid | public static IDataReader ListarParaGrid(int pIdTipoArquivoLegal, string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader com layouts de arquivos legais para exibição em grid, com paginação e ordenação. |
Listar | public static IDataReader Listar(int pIdTipoArquivoLegal) | Retorna um IDataReader com layouts de arquivos legais para um tipo específico. |
CarregarPorAno | public static ArquivoLegalLayout CarregarPorAno(int pIdTipoArquivoLegal, int numAnoDirf) | Carrega um objeto ArquivoLegalLayout para um tipo de arquivo legal e ano específicos. |
CarregarRegistroAtual | public static ArquivoLegalLayout CarregarRegistroAtual(int pIdTipoArquivoLegal) | Carrega o layout de arquivo legal mais recente (maior Num_Ano) para um tipo específico. |
VerificarArquivoLegalLayout | public static bool VerificarArquivoLegalLayout(int pIdTipoArquivoLegal, int pNumAno) | Verifica se existe um layout de arquivo legal para um tipo e ano específicos. |
Detalhamento de Métodos Importantes
Listar(int pIdTipoArquivoLegal)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona o parâmetro
@Idf_Tipo_Arquivo_Legalcom o valor depIdTipoArquivoLegal. - Executa a consulta
SPSELECT(que selecionaNum_anoeDes_Arquivo_Legal_Layoutda tabelaplataforma.TAB_Arquivo_Legal_Layoutfiltrando porIdf_Tipo_Arquivo_Legal). - Retorna um
IDataReadercom os resultados.
- Stored Procedures chamadas:
SPSELECT:@Idf_Tipo_Arquivo_Legal— Seleciona o número do ano e a descrição do layout de arquivos legais da tabelaplataforma.TAB_Arquivo_Legal_Layoutpara um tipo de arquivo legal específico.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
CarregarPorAno(int pIdTipoArquivoLegal, int numAnoDirf)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona os parâmetros
@Num_Anocom o valor denumAnoDirfe@Idf_Tipo_Arquivo_Legalcom o valor depIdTipoArquivoLegal. - Executa a consulta
SPSELECTPORANOpara obter os dados do layout. - Instancia um novo objeto
ArquivoLegalLayout. - Chama
SetInstancepara preencher o objeto com os dados doSqlDataReader. - Retorna o objeto
objArquivoLegalLayout.
- Stored Procedures chamadas:
SPSELECTPORANO:@Num_Ano,@Idf_Tipo_Arquivo_Legal— Seleciona todas as colunas de um layout de arquivo legal da tabelaplataforma.TAB_Arquivo_Legal_Layoutpara um ano e tipo de arquivo legal específicos.
- Validações: Nenhuma validação explícita, mas
SetInstancepode retornarfalsese nenhum registro for encontrado. - Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
VerificarArquivoLegalLayout(int pIdTipoArquivoLegal, int pNumAno)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona os parâmetros
@Idf_Tipo_Arquivo_Legalcom o valor depIdTipoArquivoLegale@Num_Anocom o valor depNumAno. - Executa a consulta
SPSELECTPORANOusandoDataAccessLayer.ExecuteScalarpara obter a contagem de registros. - Retorna
truese a contagem for maior que 0, indicando que um layout existe; caso contrário,false.
- Stored Procedures chamadas:
SPSELECTPORANO:@Num_Ano,@Idf_Tipo_Arquivo_Legal— Seleciona todas as colunas de um layout de arquivo legal da tabelaplataforma.TAB_Arquivo_Legal_Layoutpara um ano e tipo de arquivo legal específicos. (Neste contexto, é usado para verificar a existência, não para retornar dados completos).
- Validações: Verifica a existência de um layout.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
Stored Procedures
| Nome | Parâmetros | Propósito |
|---|---|---|
SPINSERT | @Idf_Arquivo_Legal_Layout, @Des_Arquivo_Legal_Layout, @Num_Ano, @Dta_Cadastro, @Idf_Tipo_Arquivo_Legal | Insere um novo registro na tabela plataforma.TAB_Arquivo_Legal_Layout. |
SPUPDATE | @Idf_Arquivo_Legal_Layout, @Des_Arquivo_Legal_Layout, @Num_Ano, @Dta_Cadastro, @Idf_Tipo_Arquivo_Legal | Atualiza um registro existente na tabela plataforma.TAB_Arquivo_Legal_Layout. |
SPDELETE | @Idf_Arquivo_Legal_Layout | Exclui um registro da tabela plataforma.TAB_Arquivo_Legal_Layout pelo seu identificador. |
SPSELECTID | @Idf_Arquivo_Legal_Layout | Seleciona todas as colunas de um registro na tabela plataforma.TAB_Arquivo_Legal_Layout pelo seu identificador. |
SPSELECT | @Idf_Tipo_Arquivo_Legal | Seleciona Num_ano e Des_Arquivo_Legal_Layout da tabela plataforma.TAB_Arquivo_Legal_Layout para um tipo de arquivo legal específico. |
SPSELECTPORANO | @Num_Ano, @Idf_Tipo_Arquivo_Legal | Seleciona todas as colunas de um layout de arquivo legal da tabela plataforma.TAB_Arquivo_Legal_Layout para um ano e tipo de arquivo legal específicos. |
Dicionario
Arquivos:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Dicionario_P2.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Login\Dicionario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Login\Dicionario_P2.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.STS\Dicionario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.STS\Dicionario_P2.cs
Observação: A classe Dicionario possui implementações parciais em diferentes namespaces (Employer.Plataforma.BLL, Employer.Plataforma.BLL.Login, Employer.Plataforma.BLL.STS). O método RecuperaValorDicionario é o foco da documentação base. Vou detalhar as implementações relevantes para este método em cada namespace.
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Método auxiliar para preparar parâmetros SQL para insert e update. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância. |
Insert | private void Insert() private void Insert(SqlTransaction trans) | Insere uma instância de Dicionario no banco de dados, com ou sem transação. |
Update | private void Update() private void Update(SqlTransaction trans) | Atualiza uma instância de Dicionario no banco de dados, com ou sem transação. |
Save | public void Save() public void Save(SqlTransaction trans) | Salva uma instância de Dicionario no banco de dados (insert ou update), com ou sem transação. |
Delete | public static void Delete(int idDicionario) public static void Delete(int idDicionario, SqlTransaction trans) public static void Delete(List<int> idDicionario) | Exclui uma ou mais instâncias de Dicionario do banco de dados, com ou sem transação. |
LoadDataReader | private static IDataReader LoadDataReader(int idDicionario) private static IDataReader LoadDataReader(int idDicionario, SqlTransaction trans) public static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader para um registro específico ou para uma consulta paginada. |
LoadObject | public static Dicionario LoadObject(int idDicionario) public static Dicionario LoadObject(int idDicionario, SqlTransaction trans) | Retorna uma instância de Dicionario a partir do banco de dados. |
CompleteObject | public bool CompleteObject() public bool CompleteObject(SqlTransaction trans) | Completa uma instância existente de Dicionario com dados do banco de dados. |
SetInstance | private static bool SetInstance(IDataReader dr, Dicionario objDicionario) | Método auxiliar para preencher os atributos de uma instância de Dicionario a partir de um IDataReader. |
SetInstanceOpenDR | private static void SetInstanceOpenDR(IDataReader dr, Dicionario objDicionario) | Método auxiliar para preencher os atributos de uma instância de Dicionario a partir de um IDataReader já aberto. (Apenas em Employer.Plataforma.BLL\Dicionario_P2.cs) |
Listar | public static List<Dicionario> Listar() | Lista todos os itens do dicionário do sistema. (Apenas em Employer.Plataforma.BLL\Dicionario_P2.cs) |
ListarItensDicionario | public static Dictionary<Enumeradores.ItemDicionario, string> ListarItensDicionario(List<Enumeradores.ItemDicionario> idsItensDicionario) | Retorna um dicionário com valores de itens específicos do dicionário. |
RecuperaValorDicionario | public static string RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans) public static string RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, string valorDicionario = default(string)) | Recupera o valor de um item do dicionário a partir do seu ID, com ou sem transação. |
Detalhamento de Métodos Importantes
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans) (Employer.Plataforma.BLL)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona o parâmetro
@Idf_Dicionariocom o valor inteiro deidDicionario. - Executa a consulta
SPSELECTID(que seleciona todas as colunas da tabelaplataforma.TAB_Dicionariopelo ID) usando a transação fornecida. - Se um registro for lido, extrai o valor da coluna
Vlr_Dicionario. - Fecha o
IDataReadere o descarta. - Retorna o valor do dicionário.
- Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelaplataforma.TAB_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, string valorDicionario = default(string)) (Employer.Plataforma.BLL)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona o parâmetro
@Idf_Dicionariocom o valor inteiro deidDicionario. - Executa a consulta
SPSELECTID(que seleciona todas as colunas da tabelaplataforma.TAB_Dicionariopelo ID). - Se um registro for lido, extrai o valor da coluna
Vlr_Dicionarioe o atribui avalorDicionario. - Fecha o
IDataReadere o descarta. - Retorna o valor do dicionário.
- Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelaplataforma.TAB_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans) (Employer.Plataforma.BLL.Login)
- Lógica: Idêntica à implementação em
Employer.Plataforma.BLL, mas utilizando a tabelalogin.LOG_Dicionario. - Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelalogin.LOG_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario) (Employer.Plataforma.BLL.Login)
- Lógica: Idêntica à implementação em
Employer.Plataforma.BLL, mas utilizando a tabelalogin.LOG_Dicionario. - Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelalogin.LOG_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario, SqlTransaction trans) (Employer.Plataforma.BLL.STS)
- Lógica: Idêntica à implementação em
Employer.Plataforma.BLL, mas utilizando a tabelaLOG_Dicionario. - Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelaLOG_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
RecuperaValorDicionario(Enumeradores.ItemDicionario idDicionario) (Employer.Plataforma.BLL.STS)
- Lógica: Idêntica à implementação em
Employer.Plataforma.BLL, mas utilizando a tabelaLOG_Dicionario. - Stored Procedures chamadas:
SPSELECTID:@Idf_Dicionario— Seleciona todas as colunas de um registro na tabelaLOG_Dicionariopelo seu identificador.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
- Exceções lançadas: Propaga exceções de banco de dados.
Stored Procedures
| Nome | Parâmetros | Propósito |
|---|---|---|
SPINSERT | @Idf_Dicionario, @Nme_Dicionario, @Ape_Dicionario, @Idf_Tipo_Valor, @Vlr_Dicionario, @Vlr_Anterior, @Flg_Inativo, @Dta_Cadastro | Insere um novo registro na tabela plataforma.TAB_Dicionario. |
SPUPDATE | @Idf_Dicionario, @Nme_Dicionario, @Ape_Dicionario, @Idf_Tipo_Valor, @Vlr_Dicionario, @Vlr_Anterior, @Flg_Inativo, @Dta_Cadastro | Atualiza um registro existente na tabela plataforma.TAB_Dicionario. |
SPDELETE | @Idf_Dicionario | Exclui um registro da tabela plataforma.TAB_Dicionario pelo seu identificador. |
SPSELECTID | @Idf_Dicionario | Seleciona todas as colunas de um registro na tabela plataforma.TAB_Dicionario pelo seu identificador. |
SPSELECT | (Nenhum) | Seleciona todas as colunas de todos os registros na tabela plataforma.Tab_Dicionario. |
SPINSERT (Login) | @Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_Cadastro | Insere um novo registro na tabela login.LOG_Dicionario. |
SPUPDATE (Login) | @Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_Cadastro | Atualiza um registro existente na tabela login.LOG_Dicionario. |
SPDELETE (Login) | @Idf_Dicionario | Exclui um registro da tabela login.LOG_Dicionario pelo seu identificador. |
SPSELECTID (Login) | @Idf_Dicionario | Seleciona todas as colunas de um registro na tabela login.LOG_Dicionario pelo seu identificador. |
SPINSERT (STS) | @Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_Cadastro | Insere um novo registro na tabela LOG_Dicionario. |
SPUPDATE (STS) | @Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_Cadastro | Atualiza um registro existente na tabela LOG_Dicionario. |
SPDELETE (STS) | @Idf_Dicionario | Exclui um registro da tabela LOG_Dicionario pelo seu identificador. |
SPSELECTID (STS) | @Idf_Dicionario | Seleciona todas as colunas de um registro na tabela LOG_Dicionario pelo seu identificador. |
UrlUtil
Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Security\Docs\UrlUtil.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
RetornaUrlArquivoAtividade | public static string RetornaUrlArquivoAtividade(int idAtividade, string urlWDocs, string nome, string mimeType = default(string), bool bHistorico = false) | Retorna uma URL para acessar um documento no Docs, com criptografia do ID da atividade e mimeType. |
EhUrl | public static bool EhUrl(string url) | Verifica se uma string é uma URL válida (HTTP ou HTTPS). |
RetornaParametrosUrlAtividade | public static NameValueCollection RetornaParametrosUrlAtividade(HttpContext context) | Descriptografa os parâmetros de uma URL de atividade criptografada. |
RetornaUrlArquivoToken | public static string RetornaUrlArquivoToken(string caminhoArquivo, string urlWDocs, TipoCaminho tipoCaminho = TipoCaminho.Relativo, string nomeArquivoUruario = default(string), string mimeType = default(string)) | Retorna uma URL criptografada temporária (tokenizada) para acessar qualquer arquivo no Docs. |
RetornaParametrosUrlToken | public static NameValueCollection RetornaParametrosUrlToken(HttpContext context) | Descriptografa os parâmetros de uma URL de token criptografada e valida o tempo de expiração do token. |
CriptografarUrlArquivo (Classe interna CrytpDocs) | public static string CriptografarUrlArquivo(string valor) | Criptografa uma string usando CryptUtil. |
DescriptografarUrlArquivo (Classe interna CrytpDocs) | public static string DescriptografarUrlArquivo(string valor) | Descriptografa uma string usando CryptUtil. |
Detalhamento de Métodos Importantes
RetornaUrlArquivoToken(string caminhoArquivo, string urlWDocs, TipoCaminho tipoCaminho = TipoCaminho.Relativo, string nomeArquivoUruario = default(string), string mimeType = default(string))
- Lógica:
- Garante que
urlWDocstermine com uma barra. - Constrói a URL de download do arquivo tokenizado.
- Se
mimeTypenão for fornecido:
- Garante que
- Formata a URL com
DownloadArquivoToken/{token_data_atual}/{token_tipo_caminho}/{token_caminho_arquivo}/{nome_arquivo_usuario}. - Os valores de data atual, tipo de caminho e caminho do arquivo são criptografados usando
CrytpDocs.CriptografarUrlArquivo.
- Se
mimeTypefor fornecido:
- Formata a URL com
DownloadArquivoToken/{token_mimetype}/{token_data_atual}/{token_tipo_caminho}/{token_caminho_arquivo}/{nome_arquivo_usuario}. - O
mimeTypeé URL-encoded e tem barras substituídas por pipes antes de ser criptografado. - Os demais valores são criptografados como no caso anterior.
- Retorna a URL formatada.
- Stored Procedures chamadas: Nenhuma (operações de string e criptografia).
- Validações: Nenhuma validação explícita dos parâmetros de entrada, mas a criptografia e descriptografia subsequentes podem falhar se os dados forem inválidos.
- Regras de negócio:
- A URL gerada é temporária e segura, usando criptografia.
- O
mimeTypeé tratado para ser compatível com a URL.
- Exceções lançadas: Nenhuma exceção explícita dentro do método, mas
CrytpDocs.CriptografarUrlArquivopode lançar exceções internas.
RetornaParametrosUrlToken(HttpContext context)
- Lógica:
- Descriptografa os parâmetros
token,tipoearquivoda querystring da URL usandoCrytpDocs.DescriptografarUrlArquivo. - Descodifica o parâmetro
mimetypeda URL e substitui pipes por barras, se presente. - Converte o
tokendescriptografado paraDateTime. - Calcula a diferença em minutos entre a data e hora atuais e a data e hora do token.
- Validação de Token: Se a diferença de minutos não estiver dentro do intervalo de -5 a 5 minutos, lança uma
System.Security.SecurityExceptioncom a mensagem “Token de acesso expirado”. - Retorna uma
NameValueCollectioncontendo os parâmetros descriptografados.
- Descriptografa os parâmetros
- Stored Procedures chamadas: Nenhuma (operações de string, criptografia e data/hora).
- Validações:
- Valida a expiração do token (5 minutos de validade).
- Regras de negócio:
- Implementa um mecanismo de segurança para URLs temporárias, garantindo que o token não seja reutilizado após um curto período.
- Exceções lançadas:
System.Security.SecurityExceptionse o token estiver expirado.
Stored Procedures
Nenhuma stored procedure é diretamente chamada por esta classe, pois ela lida com manipulação de URLs e criptografia.
Usuario
Arquivos:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Login\Usuario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.Login\Usuario_P2.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.STS\Usuario_P1.cs
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL.STS\Usuario_P2.cs
Observação: A classe Usuario possui implementações parciais em diferentes namespaces (Employer.Plataforma.BLL, Employer.Plataforma.BLL.Login, Employer.Plataforma.BLL.STS). O método CarregarPermissoes é o foco da documentação base. Vou detalhar as implementações relevantes para este método e outros métodos importantes em cada namespace.
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Método auxiliar para preparar parâmetros SQL para insert e update. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância. |
Insert | private void Insert() private void Insert(SqlTransaction trans) | Insere uma instância de Usuario no banco de dados, com ou sem transação. |
Update | private void Update() private void Update(SqlTransaction trans) | Atualiza uma instância de Usuario no banco de dados, com ou sem transação. |
Save | public void Save() public void Save(SqlTransaction trans) | Salva uma instância de Usuario no banco de dados (insert ou update), com ou sem transação. |
Delete | public static void Delete(int idUsuario) public static void Delete(int idUsuario, SqlTransaction trans) public static void Delete(List<int> idUsuario) | Exclui uma ou mais instâncias de Usuario do banco de dados, com ou sem transação. |
LoadDataReader | private static IDataReader LoadDataReader(int usuario) private static IDataReader LoadDataReader(int usuario, SqlTransaction trans) public static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Retorna um IDataReader para um registro específico ou para uma consulta paginada. |
LoadObject | public static Usuario LoadObject(int usuario) public static Usuario LoadObject(int usuario, SqlTransaction trans) | Retorna uma instância de Usuario a partir do banco de dados. |
CompleteObject | public bool CompleteObject() public bool CompleteObject(SqlTransaction trans) | Completa uma instância existente de Usuario com dados do banco de dados. |
SetInstance | private static bool SetInstance(IDataReader dr, Usuario objUsuario) | Método auxiliar para preencher os atributos de uma instância de Usuario a partir de um IDataReader. |
NumeroCPFFormatado | public string NumeroCPFFormatado | Retorna o CPF do usuário formatado com pontos e hífen. (Apenas em Employer.Plataforma.BLL\Usuario_P2.cs) |
SetInstanceSemDispose | internal static bool SetInstanceSemDispose(IDataReader dr, Usuario objUsuario, bool usaRead = true) | Método auxiliar para preencher os atributos de uma instância de Usuario a partir de um IDataReader sem descartá-lo. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs) |
Salvar | public void Salvar(Sistema.Nome sistema) public void Salvar(SqlTransaction trans, Sistema.Nome sistema) | Salva uma instância de Usuario e garante que o usuário esteja associado ao sistema especificado. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
LoadDataReaderPorLogin | private static IDataReader LoadDataReaderPorLogin(decimal login, SqlTransaction trans = null) | Retorna um IDataReader para um usuário com base no login (CPF). (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
LoadDataReaderPorLoginSenha | private static IDataReader LoadDataReaderPorLoginSenha(decimal login, string senha) private static IDataReader LoadDataReaderPorLoginSenha(decimal login, string senha, SqlTransaction trans) | Retorna um IDataReader para um usuário com base no login (CPF) e senha. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
LoadObjectPorLogin | public static Usuario LoadObjectPorLogin(decimal login, SqlTransaction trans = null) | Retorna uma instância de Usuario a partir do banco de dados com base no login (CPF). (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
LoadObjectPorLoginSenha | public static Usuario LoadObjectPorLoginSenha(decimal login, string senha) public static Usuario LoadObjectPorLoginSenha(decimal login, string senha, SqlTransaction trans) | Retorna uma instância de Usuario a partir do banco de dados com base no login (CPF) e senha. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
CarregarPorLoginSenha | public static bool CarregarPorLoginSenha(decimal login, string senha, out Usuario objUsuario) public static bool CarregarPorLoginSenha(SqlTransaction trans, decimal login, string senha, out Usuario objUsuario) | Carrega um objeto Usuario por login e senha, removendo referências de login inválido em caso de sucesso. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
CarregarPorLogin | public static bool CarregarPorLogin(decimal login, out Usuario objUsuario) public static bool CarregarPorLogin(SqlTransaction trans, decimal login, out Usuario objUsuario) | Carrega um objeto Usuario por login (CPF). (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
CarregarPorId | public static bool CarregarPorId(int id, out Usuario objUsuario) public static bool CarregarPorId(SqlTransaction trans, int id, out Usuario objUsuario) | Carrega um objeto Usuario por ID. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
EncriptarSenha | private static string EncriptarSenha(string senhaOriginal) | Gera o hash SHA1 de uma senha. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
GerarChave | private static string GerarChave(string valor) | Gera uma chave criptografada usando Rijndael. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
ListarPorCPFs | public static DataTable ListarPorCPFs(decimal[] logins, string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros, bool? bInterno = null) | Lista usuários por uma lista de CPFs, com paginação e ordenação. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
Autenticar | public static bool Autenticar(string enderecoIP, decimal login, string senha, Sistema.Nome sistema, out string aviso, out bool alterarSenha, out string chave) [Obsolete] public static bool Autenticar(string enderecoIP, decimal login, string senha, Sistema.Nome sistema, out string aviso, out bool alterarSenha, out string chave) | Autentica um usuário no sistema, verificando bloqueios, inatividade, permissões de sistema, expiração de senha e histórico de senha. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
AutenticarFederacao | public static bool AutenticarFederacao(string enderecoIP, decimal login, string senha, out string aviso, out bool alterarSenha, out string chave, out int numTentativas) | Autentica um usuário em um cenário de federação, com verificações de bloqueio, inatividade, expiração de senha e histórico de senha. (Apenas em Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
ResetarSenha | private static bool ResetarSenha(decimal login, out string novaSenha) public static bool ResetarSenha(string enderecoIP, decimal login, DateTime dataNascimento, string ddd, string celular, string email, out string aviso, out string novaSenha) | Reseta a senha de um usuário, gerando uma nova senha aleatória e atualizando o histórico. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
AlterarSenha | public static bool AlterarSenha(string enderecoIP, decimal login, string senha, string novaSenha, out string aviso) | Altera a senha de um usuário, verificando a senha atual e atualizando o histórico. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
Inativar | public static bool Inativar(int id, bool inativar) | Inativa ou reativa um usuário. (Apenas em Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
RetornarNovaSenha | public static string RetornarNovaSenha() | Gera uma nova senha aleatória com letras maiúsculas, minúsculas e números. (Apenas em Employer.Plataforma.BLL.Login\Usuario_P2.cs e Employer.Plataforma.BLL.STS\Usuario_P2.cs) |
CarregarPermissoes | public static List<int> CarregarPermissoes(Usuario pObjUsuario, BLL.Enumeradores.CategoriaPermissao pCategoriaPermissao) | Carrega as permissões de um usuário para uma categoria de permissão específica. (Apenas em Employer.Plataforma.BLL\Usuario_P2.cs) |
Detalhamento de Métodos Importantes
CarregarPermissoes(Usuario pObjUsuario, BLL.Enumeradores.CategoriaPermissao pCategoriaPermissao) (Employer.Plataforma.BLL)
- Lógica:
- Cria uma lista de parâmetros SQL.
- Adiciona os parâmetros
@idf_usuariocom o ID do usuário e@Idf_Categoria_Permissaocom o valor inteiro da categoria de permissão. - Executa a consulta
SPSELECTPERMISSOESUSUARIO. - Itera sobre o
IDataReaderresultante. Para cada linha lida, adiciona o valor da coluna “Permissao” (que é oIdf_Permissao) a uma lista de inteiros. - Fecha o
IDataReadere o descarta. - Retorna a lista de IDs de permissão.
- Stored Procedures chamadas:
SPSELECTPERMISSOESUSUARIO:@idf_usuario,@Idf_Categoria_Permissao— Seleciona os IDs de permissão distintos de um usuário para uma categoria de permissão específica, considerando apenas permissões ativas (dentro do período de início e fim).
- Validações: Nenhuma validação explícita dos parâmetros de entrada.
- Regras de negócio:
- As permissões são consideradas ativas se a data atual estiver entre
Dta_InicioeDta_Fim(ou seDta_Fimfor nula).
- As permissões são consideradas ativas se a data atual estiver entre
- Exceções lançadas: Propaga exceções de banco de dados.
Autenticar(string enderecoIP, decimal login, string senha, Sistema.Nome sistema, out string aviso, out bool alterarSenha, out string chave) (Employer.Plataforma.BLL.Login)
- Lógica:
- Inicializa
alterarSenhacomofalseechavecomonull. - Inicia uma transação SQL.
- Verifica Bloqueio Temporário: Chama
LoginBloqueado.VerificaBloqueioTemporariopara ologin. Se bloqueado, defineavisocomoMensagens._0015e retornafalse. - Carrega Usuário: Tenta carregar o
UsuariousandoUsuario.CarregarPorLoginSenha(trans, login, senha, out objUsuario). - Se Login Correto:
- Inicializa
- Verifica Bloqueio: Se
objUsuario.FlagBloqueadofortrue, defineavisocomoMensagens._0001. - Verifica Inatividade: Se
objUsuario.FlagInativofortrue, defineavisocomoMensagens._0002. - Verifica Permissão de Sistema: Se
UsuarioSistema.Autenticar(trans, objUsuario.IdUsuario, (int)sistema)retornarfalse, defineavisocomoMensagens._0003. - Verifica Histórico de Senha e Expiração:
- Recupera o último
HistoricoSenhado usuário. - Calcula o tempo restante para a expiração da senha com base em
Num_Dias_ExpiraeNum_Dias_AvisodoAppSettings. - Se
alterarSenhafortrueou a senha estiver expirada (tempoRestante.Days >= numDiasExpira), defineavisocomoMensagens._0005,alterarSenhacomotrue, e atualizaobjUsuario.FlagAlterarSenhae salva o usuário. - Se a senha estiver próxima de expirar (
tempoRestante.Days >= (numDiasExpira - numDiasAviso)), defineautenticacomotrueeavisocom a mensagem de aviso de expiração. - Caso contrário, define
autenticacomotrue,avisocomoMensagens._0010e gera umachavecriptografada. - Se não houver histórico de senha: Cria um novo
HistoricoSenhacom uma data padrão, salva, defineautenticacomotrueeavisocomoMensagens._0010.
- Se Login Incorreto:
- Define
avisocomoMensagens._0008. - Registra a tentativa de login inválida em
LoginInvalido.
- Finaliza Autenticação:
- Se
autenticafortrue, chamaLogin.LoginValido, comita a transação e retornatrue. - Caso contrário, comita a transação e retorna
false. - Stored Procedures chamadas:
SPSELECTLOGIN(viaLoadDataReaderPorLogin):@Log_UsuarioSPSELECTLOGINSENHA(viaLoadDataReaderPorLoginSenha):@Log_Usuario,@Sen_UsuarioSPINSERT(paraTAB_Historico_Senha- implícito emobjHistoricoSenha.Save(trans))SPUPDATE(paraTAB_Usuario- implícito emobjUsuario.Save(trans))SPINSERT(paraTAB_Login_Invalido- implícito emobjLoginInvalido.Save())SPINSERT(paraTAB_Login- implícito emLogin.LoginValido(trans, objUsuario, enderecoIP))SPSELECTID(paraTAB_Usuario_Sistema- implícito emUsuarioSistema.Autenticar)
- Validações:
- Bloqueio temporário de login.
- Usuário bloqueado.
- Usuário inativo.
- Permissão de acesso ao sistema.
- Expiração de senha.
- Regras de negócio:
- Senhas expiram após um período configurável (
Num_Dias_Expira). - Avisos de expiração de senha são exibidos antes da expiração real (
Num_Dias_Aviso). - Tentativas de login inválidas são registradas e podem levar a bloqueios temporários.
- O histórico de senhas é mantido.
- Senhas expiram após um período configurável (
- Exceções lançadas: Propaga exceções de banco de dados, realizando rollback da transação.
ResetarSenha(string enderecoIP, decimal login, DateTime dataNascimento, string ddd, string celular, string email, out string aviso, out string novaSenha) (Employer.Plataforma.BLL.Login)
- Lógica:
- Inicializa
validocomofalseenovaSenhacomonull. - Gera uma nova senha aleatória.
- Inicia uma transação SQL.
- Carrega Usuário: Tenta carregar o
UsuariousandoUsuario.CarregarPorLogin(trans, login, out objUsuario). - Se Usuário Encontrado:
- Inicializa
- Verifica Bloqueio: Se
objUsuario.FlagBloqueadofortrue, defineavisocomoMensagens._0001. - Verifica Inatividade: Se
objUsuario.FlagInativofortrue, defineavisocomoMensagens._0002. - Valida Dados Pessoais: Se
dataNascimento,ddd,celulareemailcorresponderem aos dados do usuário, defineavisocomoMensagens._0012, atualiza a senha do usuário com anovaSenhagerada, defineFlagAlterarSenhacomotrue, salva o usuário, cria e salva um registro deRecuperacao, e definevalidocomotrue. - Se Dados Pessoais Inválidos: Define
avisocomoMensagens._0011.
- Se Usuário Não Encontrado: Define
avisocomoMensagens._0011. - Finaliza Operação:
- Se
validofortrue, chamaLogin.LoginValido, atribui a nova senha gerada anovaSenha, comita a transação e retornatrue. - Caso contrário, chama
Login.LoginInvalido, comita a transação e retornafalse. - Stored Procedures chamadas:
SPSELECTLOGIN(viaLoadDataReaderPorLogin):@Log_UsuarioSPUPDATE(paraTAB_Usuario- implícito emobjUsuario.Save(trans))SPINSERT(paraTAB_Recuperacao- implícito emobjRecuperacao.Save(trans))SPINSERT(paraTAB_Login- implícito emLogin.LoginValido(trans, objUsuario, enderecoIP))SPINSERT(paraTAB_Login_Invalido- implícito emLogin.LoginInvalido(trans, objUsuario, enderecoIP))
- Validações:
- Usuário bloqueado.
- Usuário inativo.
- Correspondência dos dados pessoais (data de nascimento, DDD, celular, e-mail).
- Regras de negócio:
- O reset de senha requer a validação de informações pessoais do usuário.
- Uma nova senha aleatória é gerada.
- A flag
FlagAlterarSenhaé ativada, forçando o usuário a alterar a senha no próximo login. - Registros de recuperação de senha são criados.
- Exceções lançadas: Propaga exceções de banco de dados, realizando rollback da transação.
Stored Procedures
| Nome | Parâmetros | Propósito |
|---|---|---|
SPINSERT | @Num_CPF, @Idf_Perfil_Principal, @Idf_Ultima_Empresa, @Idf_Usuario_Gerador, @Idf_Sistema_Gerador, @Idf_Pessoa_Fisica, @Flg_Interno, @Dta_Cadastro, @Flg_Inativo | Insere um novo registro na tabela TAB_Usuario. |
SPUPDATE | @Num_CPF, @Idf_Perfil_Principal, @Idf_Ultima_Empresa, @Idf_Usuario_Gerador, @Idf_Sistema_Gerador, @Idf_Pessoa_Fisica, @Flg_Interno, @Dta_Cadastro, @Flg_Inativo | Atualiza um registro existente na tabela TAB_Usuario. |
SPDELETE | @Idf_Usuario_Gerador, @Idf_Usuario | Inativa (atualiza Idf_Usuario_Gerador) e depois exclui um registro da tabela TAB_Usuario. |
SPSELECTID | @Idf_Usuario | Seleciona todas as colunas de um registro na tabela TAB_Usuario pelo seu identificador. |
SPSELPERMISSOES | @CurrentPage, @PageSize, {0} (coluna de ordenação), @IdF_Usuario, @Pesquisa | Consulta paginada de permissões de acesso do usuário a grupos econômicos, empresas, filiais, contratos e centros de resultado, incluindo exceções. |
SPSELPERMISSOESVISUALIZACAOESOCIAL | @IdF_Usuario | Consulta permissões de visualização eSocial para um usuário, abrangendo grupos econômicos, empresas, filiais, contratos e centros de resultado, incluindo exceções. |
SPSELECTPAG | @CurrentPage, @PageSize, @SortExpression, @WhereExpression | Consulta paginada de usuários, incluindo dados da pessoa física associada. |
SPSELECTUSU | @Nome, @Status | Seleciona usuários por nome e status de inatividade, incluindo dados da pessoa física. |
CARREGARCPF | @N_CPF, @Status | Seleciona um usuário por CPF e status de inatividade, incluindo dados da pessoa física. |
SELRELATORIOUSUARIOSPORPERFIL | @Idf_Perfil | Seleciona dados de usuários (nome, CPF formatado, e-mail, celular) para um relatório de usuários por perfil. |
SPSELECTCPF | @Num_CPF | Seleciona todas as colunas de um registro na tabela TAB_Usuario pelo CPF. |
SPSELECTCPFS | (Nenhum) | Seleciona os CPFs distintos de todos os usuários na tabela TAB_Usuario. |
SPSELPERFIL | @Idf_Usuario, @Dta_Periodo | Seleciona perfis e suas permissões associadas a um usuário, considerando períodos de validade. |
SPSELPERFILSISTEMA | @Idf_Usuario, @Dta_Periodo, @Idf_Sistema, {0} (coluna de ordenação) | Seleciona perfis e suas permissões associadas a um usuário para um sistema específico, considerando períodos de validade. |
SPSELECTPERMISSOESUSUARIO | @idf_usuario, @Idf_Categoria_Permissao | Seleciona os IDs de permissão distintos de um usuário para uma categoria de permissão específica, considerando permissões ativas. |
SPSELECTCODNOME | @Nme_Pessoa, @Num_CPF | Seleciona usuários por nome da pessoa ou CPF, unindo com a tabela TAB_PESSOA_FISICA. |
SPSELECTPORNOME | @Nme_Pessoa | Seleciona usuários por nome da pessoa, unindo com a tabela TAB_PESSOA_FISICA. |
SPCARREGARUSUARIOSFILAATUALIZACAOPONTO | @Num_Tentativas | Seleciona usuários para a fila de atualização de ponto, com base em tentativas e status. |
SPVERIFICARFILIAISPONTO | @Num_CPF | Verifica filiais e parâmetros específicos de ponto para um CPF de usuário. |
SELECTUSUARIOCONTAPAGAR | @Idf_Usuario | Seleciona informações de usuário (CPF formatado, nome) para contas a pagar. |
SPRECUPERARFILIAISQUEUSUARIOTEMACESSO | @Idf_Empresa, @Idf_Usuario | Recupera filiais às quais um usuário tem acesso dentro de uma empresa. |
SPSELPERFILSISTEMASENHAMASTER | @Idf_Usuario, @Dta_Periodo, @Idf_Sistema | Seleciona permissões de perfil para sistemas específicos, focando em perfis de “senha master”. |
SPSELECTAGRUPAMENTOUSUARIO | {0} (lista de CPFs) | Seleciona informações de agrupamento de usuário (CPF, nome, perfil, permissão, grupo econômico, empresa, filial, contrato, centro de resultado) para uma lista de CPFs. |
SPSELECTLOGIN (Login/STS) | @Log_Usuario | Seleciona todas as colunas de um registro na tabela login.LOG_Usuario pelo login (CPF). |
SPSELECTLOGINSENHA (Login/STS) | @Log_Usuario, @Sen_Usuario | Seleciona todas as colunas de um registro na tabela login.LOG_Usuario pelo login (CPF) e senha. |
SPCARREGARCPF (Login/STS) | @Log_Usuario | Seleciona nome, login e senha de um usuário da tabela Log_Usuario pelo login (CPF). |
📌 Status: Concluído 👤 Responsável: Equipe de QA