WebFoPag ~32 min

🛠️ 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

NomeTipoObrigatórioRegra
ucVerbasNaoConfiguradasUserControl⚪ NãoExibe informações sobre verbas não configuradas para arquivos legais.
lsAnoVigenciaEmployer:ListaSugestoes🔴 SimSeleção do ano calendário para a geração da DIRF. Valor Incorreto, Campo Obrigatório.
lsEmpregadosSemRetencaoEmployer:ListaSugestoes🔴 SimOpção para incluir ou não empregados sem retenção no arquivo DIRF. Valor Incorreto, Campo Obrigatório.
btnComprovanteRendimentoEmployer:Button⚪ NãoBotão para gerar comprovante de rendimento.
btnGerarEmployer:Button⚪ NãoBotão para iniciar a geração do arquivo DIRF.
btnLimparTelaEmployer:Button⚪ NãoBotão para limpar a tela, redirecionando para a mesma página.
btnVoltarEmployer:Button⚪ NãoBotão para retornar à página de “Menu Mais Opções”.
gvArquivosGeradosEmployer:EmployerGrid⚪ NãoExibe uma lista dos arquivos DIRF gerados, com colunas para Período, Data Geração, Tipo, Situação e Ação (Download).
lblUltimaAtualizacaoEmployer:Label⚪ NãoExibe a data e hora da última atualização da lista de arquivos gerados.
ibtDownloadLink (dentro de gvArquivosGerados)ImageButton⚪ NãoBotão de download para o arquivo gerado. Visível apenas se o status da fila de execução for “FinalizadoComSucesso”.
btnAtualizarEmployer:Button⚪ NãoBotã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.Valor nã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étodo Gerar do code-behind).

5.2. Regras de Habilitação/Desabilitação e Visibilidade

  • ibtDownloadLink: O botão de download (ibtDownloadLink) na grid gvArquivosGerados é visível apenas se o Idf_Status_Fila_Execucao_Arquivos do registro for igual a StatusFilaExecucaoArquivosEnum.FinalizadoComSucesso (definido no gvArquivosGerados_RowDataBound do code-behind).
  • tmrArquivos: O timer tmrArquivos é habilitado (tmrArquivos.Enabled = true) se houver algum arquivo na grid gvArquivosGerados com status diferente de FinalizadoComSucesso, indicando que há processos em andamento que precisam de atualização (definido no gvArquivosGerados_RowDataBound e no tmrArquivos_Tick do 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 no ConfigurarPermissoesTela do 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étodo Gerar do code-behind).

5.4. Regras de Salvar e Fluxo de Configuração

  • Geração DIRF:
  1. Inativa arquivos legais gerados anteriormente para o ano selecionado (ArquivoLegalArquivoGerado.InativarPorAno).
  2. Cria um novo registro de arquivo legal gerado no banco de dados (ArquivoLegalArquivoGerado.CriarArquivoLegalArquivoGeradoDirf), populando a tabela TAB_Arquivo_Legal_Arquivo_Gerado.
  3. Adiciona o método de criação da estrutura do arquivo na fila de execução assíncrona (Employer.PlataformaServices.ProcessosAssincronos).
  4. Atualiza a grid de arquivos gerados (CarregarGridArquivosGeradosDIRF).
  5. Exibe mensagem de sucesso (MensagemAviso._1150003).
  6. Em modo DEBUG, o método DIRF.GerarTextoDIRF2025 é chamado para gerar o texto da DIRF (no code-behind, dentro do método Gerar).

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 pelo tmrArquivos_Tick do 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 (no ibtDownloadLink_Click do 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_Click do code-behind).
  • Redirecionamento para Configuração de Campo DIRF: Ao clicar em uma verba não configurada no UserControl ucVerbasNaoConfiguradas, o evento ucVerbasNaoConfiguradas_VerbaSelecionada_Click é disparado, armazenando o ID da verba e o ano de vigência na Session e redirecionando para CampoDirfConfiguracaoCadastroEspecifico.aspx.

🔄 6. Fluxos Principais

6.1. Inicialização da Tela (Page_Load)

  1. Registra os eventos dos UserControls (RegistrarEventos).
  2. Define o título da página como “Consulta Guia Arquivo”.
  3. Se a página não for um PostBack: a. Chama o método Inicializar().

6.2. Inicialização (Inicializar)

  1. Chama ConfigurarPermissoesTela() para verificar e aplicar as permissões do usuário.
  2. Carrega a lista de sugestões para o campo lsAnoVigencia utilizando ArquivoLegalLayout.Listar para o tipo DIRF, exibindo “Num_Ano” e “Des_Arquivo_Legal_Layout”.
  3. Carrega a lista de sugestões para o campo lsEmpregadosSemRetencao utilizando BLL.Flag.Listar e define o valor padrão como “Não” (BLL.Enumeradores.Flag.Nao.GetHashCode().ToString()).
  4. Atualiza as informações do UserControl ucVerbasNaoConfiguradas com o ano de vigência (se selecionado) e o tipo de arquivo legal DIRF.
  5. Chama CarregarGridArquivosGeradosDIRF() para popular a grid de arquivos gerados.

6.3. Geração do Arquivo DIRF (btnGerar_Click -> Gerar)

  1. O evento btnGerar_Click é acionado.
  2. Verifica se a página é válida (Page.IsValid).
  3. Se válida, chama o método Gerar().
  4. Dentro de Gerar(): a. Verifica se o lsAnoVigencia.Valor não é nulo/vazio e se ArquivoLegalLayout.VerificarArquivoLegalLayout retorna true para o tipo DIRF e o ano selecionado. b. Se a validação for bem-sucedida: i. Chama ArquivoLegalArquivoGerado.InativarPorAno para o ano, usuário, empresa e tipo de arquivo legal (1). ii. Chama ArquivoLegalArquivoGerado.CriarArquivoLegalArquivoGeradoDirf para 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. Chama CarregarGridArquivosGeradosDIRF() para atualizar a grid. iv. Exibe mensagem de sucesso (MensagemAviso._1150003). v. Em modo DEBUG, chama DIRF.GerarTextoDIRF2025 com 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)

  1. O evento lsAnoVigencia_ValorAlterado é acionado.
  2. Se o valor do ano de vigência não for vazio: a. Chama ucVerbasNaoConfiguradas.AtualizarInformacoes com o ano selecionado e o tipo de arquivo legal DIRF.
  3. Chama CarregarGridArquivosGeradosDIRF().
  1. O evento ibtDownloadLink_Click é acionado.
  2. Identifica o ImageButton clicado e a GridViewRow correspondente.
  3. Obtém o Idf_Arquivo_Gerado da linha selecionada.
  4. Carrega o objeto ArquivoLegalArquivoGerado utilizando ArquivoLegalArquivoGerado.LoadObject.
  5. Recupera a URL base para download de documentos do dicionário (Dicionario.RecuperaValorDicionario(Enum.ItemDicionario.UrlDownloadDocs)).
  6. Constrói a URL completa para download do arquivo ZIP utilizando UrlUtil.RetornaUrlArquivoToken.
  7. Registra um script JavaScript (tryToDownload) para iniciar o download no cliente.
  8. Exibe mensagem de aviso (MensagemAviso._1150004).
  9. 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)

  1. O evento btnAtualizar_Click ou tmrArquivos_Tick é acionado.
  2. Chama CarregarGridArquivosGeradosDIRF() para recarregar os dados da grid.

6.7. Voltar (btnVoltar_Click)

  1. O evento btnVoltar_Click é acionado.
  2. Redireciona o usuário para a página ~/MenuMaisOpcoes.aspx?ID=9.

6.8. Limpar Tela (btnLimparTela_Click)

  1. O evento btnLimparTela_Click é acionado.
  2. 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)

  1. O evento HandlerBtnVerbaSelecionadaClick do ucVerbasNaoConfiguradas é disparado.
  2. O pIdVerbaSelecionada é armazenado na Session (Chave.Temporaria.Variavel3).
  3. O ano de vigência (se preenchido) é armazenado na Session (Chave.Temporaria.Variavel5).
  4. 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 tabela TAB_Arquivo_Legal_Arquivo_Gerado para 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 objeto ArquivoLegalArquivoGerado pelo 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 objeto ArquivoLegalLayout para 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_Gerado para 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 (delegado btnVerbaSelecionada_Handler), que é tratado pelo método ucVerbasNaoConfiguradas_VerbaSelecionada_Click na 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 lblUltimaAtualizacao para indicar a data e hora da última atualização da grid de arquivos gerados).
  • “Não foi encontrado nenhum registro.” (Texto exibido na gvArquivosGerados quando não há dados para mostrar).
  • “Valor Incorreto.” (Mensagem de validação para os campos lsAnoVigencia e lsEmpregadosSemRetencao se o formato do valor estiver incorreto).
  • “Campo Obrigatório.” (Mensagem de validação para os campos lsAnoVigencia e lsEmpregadosSemRetencao se 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 à tela GerarGuiasArquivosLegaisDirf.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étodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Método auxiliar para preparar parâmetros SQL para insert e update.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância.
Insertprivate void Insert()
private void Insert(SqlTransaction trans)
Insere uma instância de ArquivoLegalArquivoGerado no banco de dados, com ou sem transação.
Updateprivate void Update()
private void Update(SqlTransaction trans)
Atualiza uma instância de ArquivoLegalArquivoGerado no banco de dados, com ou sem transação.
Savepublic 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.
Deletepublic 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.
LoadDataReaderprivate 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.
LoadObjectpublic 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.
CompleteObjectpublic bool CompleteObject()
public bool CompleteObject(SqlTransaction trans)
Completa uma instância existente de ArquivoLegalArquivoGerado com dados do banco de dados.
SetInstanceprivate 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.
LoadObjectPorFilapublic static ArquivoLegalArquivoGerado LoadObjectPorFila(long idFila)Carrega um objeto ArquivoLegalArquivoGerado com base no ID da fila de execução.
ListarArquivoPorAnopublic static DataTable ListarArquivoPorAno(int? pNumAno, int pIdEmpresa)Lista arquivos legais gerados para um ano e empresa específicos.
CriarArquivoLegalArquivoGeradoDirfpublic 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.
DeletarAntesExecucaopublic static void DeletarAntesExecucao(int pIdArquivoGerado)Exclui um arquivo gerado e sua fila de execução associada antes da execução.
InativarPorAnopublic 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:
    1. Inicia uma nova transação SQL.
    2. Carrega o objeto Empresa correspondente ao idEmpresa fornecido.
    3. Criação do Arquivo Gerado:
  • Instancia um novo objeto ArquivoLegalArquivoGerado.
  • Atribui o objArquivoLegalLayout recebido.
  • Define o NomeArquivoLegal no formato “DIRF{Ano}{CNPJEmpresa}{DataHoraAtual}”.
  • Atribui a Empresa carregada.
  • Define FlagConsolidado como false.
  • Define DataArquivoGerado como a data e hora atuais.
  • Define DataConsolidado como null.
  • Salva o objeto objArquivoLegalArquivoGerado no banco de dados dentro da transação.
  1. 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, pIdArquivoLegalArquivoGerado e pEmpregadosSemRetencao.
  • Instancia um novo objeto FilaExecucaoArquivos.
  • Configura o DescricaoCaminhoAssembly, NomeNamespace e NomeClasse para Employer.Plataforma.BLL.WebFoPag.DIRF.
  • Define DescricaoMetodoExecucao com base no NumeroAno do objArquivoLegalLayout (ex: GerarTextoDIRF2025).
  • Gera o XML dos parâmetros para DescricaoParametrosExecucao.
  • Define NumeroPrioridade como 1 e NumeroTentativas como 0.
  • Define StatusFilaExecucaoArquivos como AguardandoExecucao.
  • Salva o objeto objFila no banco de dados dentro da transação.
  1. Atualização do Arquivo Gerado com Fila de Execução:
  • Associa o objFila recém-criado ao objArquivoLegalArquivoGerado.
  • Salva novamente o objArquivoLegalArquivoGerado para persistir a associação.
  1. Comita a transação.
  2. Retorna o objArquivoLegalArquivoGerado criado.
  • Stored Procedures chamadas:
    • SPINSERT (para TAB_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 (para TAB_Fila_Execucao_Arquivos - implícito na chamada objFila.Save(trans)) — Insere um novo registro na fila de execução.
    • SPUPDATE (para TAB_Arquivo_Legal_Arquivo_Gerado - implícito na chamada objArquivoLegalArquivoGerado.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:
    1. Inicia uma nova transação SQL.
    2. Cria uma lista de parâmetros SQL: @Num_Ano, @Idf_Usuario_Gerador, @Idf_Empresa, @Idf_Tipo_Arquivo_Legal.
    3. Atribui os valores dos parâmetros recebidos.
    4. Executa a query SPINATIVARPORANO para inativar os registros.
    5. 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:
    1. Cria uma lista de parâmetros SQL: @Num_Ano, @Idf_Empresa.
    2. Atribui o pNumAno (pode ser DBNull.Value se nulo) e pIdEmpresa.
    3. Executa a query SPLISTARARQUIVOPORANO e retorna o resultado como um DataTable.
  • 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:
    1. Chama o método LoadDataReader(int idArquivoLegalArquivoGerado) para obter um IDataReader.
    2. Instancia um novo objeto ArquivoLegalArquivoGerado.
    3. Chama SetInstance(IDataReader dr, ArquivoLegalArquivoGerado objArquivoLegalArquivoGerado) para preencher o objeto.
    4. Se o objeto foi preenchido com sucesso, o retorna.
    5. Caso contrário, lança uma RecordNotFoundException.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Arquivo_Legal_Arquivo_Gerado — Seleciona um registro da tabela TAB_Arquivo_Legal_Arquivo_Gerado pelo ID.
  • Validações: Verifica se o registro foi encontrado.
  • Exceções lançadas: RecordNotFoundException se o registro não for encontrado.

Stored Procedures

NomeParâmetrosPropó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_ReferenciaInsere 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_ReferenciaAtualiza um registro existente na tabela TAB_Arquivo_Legal_Arquivo_Gerado.
SPDELETE@Idf_Arquivo_Legal_Arquivo_Gerado, @Idf_Usuario_GeradorInativa (atualiza Idf_Usuario_Gerador) e depois exclui um registro da tabela TAB_Arquivo_Legal_Arquivo_Gerado.
SPSELECTID@Idf_Arquivo_Legal_Arquivo_GeradoSeleciona todas as colunas de um registro na tabela TAB_Arquivo_Legal_Arquivo_Gerado pelo seu identificador.
SPLOADPORFILA@Idf_Fila_Execucao_ArquivosSeleciona todos os registros da tabela TAB_Arquivo_Legal_Arquivo_Gerado onde o Idf_Fila_Execucao_Arquivos corresponde ao parâmetro.
SPLISTARARQUIVOPORANO@Num_Ano, @Idf_EmpresaLista 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_LegalAtualiza 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étodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Método auxiliar para preparar parâmetros SQL para insert e update.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância.
Insertprivate void Insert()
private void Insert(SqlTransaction trans)
Insere uma instância de ArquivoLegalLayout no banco de dados, com ou sem transação.
Updateprivate void Update()
private void Update(SqlTransaction trans)
Atualiza uma instância de ArquivoLegalLayout no banco de dados, com ou sem transação.
Savepublic 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.
Deletepublic 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.
LoadDataReaderprivate 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.
LoadObjectpublic 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.
CompleteObjectpublic bool CompleteObject()
public bool CompleteObject(SqlTransaction trans)
Completa uma instância existente de ArquivoLegalLayout com dados do banco de dados.
SetInstanceprivate 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.
ListarParaGridpublic 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.
Listarpublic static IDataReader Listar(int pIdTipoArquivoLegal)Retorna um IDataReader com layouts de arquivos legais para um tipo específico.
CarregarPorAnopublic static ArquivoLegalLayout CarregarPorAno(int pIdTipoArquivoLegal, int numAnoDirf)Carrega um objeto ArquivoLegalLayout para um tipo de arquivo legal e ano específicos.
CarregarRegistroAtualpublic static ArquivoLegalLayout CarregarRegistroAtual(int pIdTipoArquivoLegal)Carrega o layout de arquivo legal mais recente (maior Num_Ano) para um tipo específico.
VerificarArquivoLegalLayoutpublic 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona o parâmetro @Idf_Tipo_Arquivo_Legal com o valor de pIdTipoArquivoLegal.
    3. Executa a consulta SPSELECT (que seleciona Num_ano e Des_Arquivo_Legal_Layout da tabela plataforma.TAB_Arquivo_Legal_Layout filtrando por Idf_Tipo_Arquivo_Legal).
    4. Retorna um IDataReader com 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 tabela plataforma.TAB_Arquivo_Legal_Layout para 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona os parâmetros @Num_Ano com o valor de numAnoDirf e @Idf_Tipo_Arquivo_Legal com o valor de pIdTipoArquivoLegal.
    3. Executa a consulta SPSELECTPORANO para obter os dados do layout.
    4. Instancia um novo objeto ArquivoLegalLayout.
    5. Chama SetInstance para preencher o objeto com os dados do SqlDataReader.
    6. 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 tabela plataforma.TAB_Arquivo_Legal_Layout para um ano e tipo de arquivo legal específicos.
  • Validações: Nenhuma validação explícita, mas SetInstance pode retornar false se 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona os parâmetros @Idf_Tipo_Arquivo_Legal com o valor de pIdTipoArquivoLegal e @Num_Ano com o valor de pNumAno.
    3. Executa a consulta SPSELECTPORANO usando DataAccessLayer.ExecuteScalar para obter a contagem de registros.
    4. Retorna true se 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 tabela plataforma.TAB_Arquivo_Legal_Layout para 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

NomeParâmetrosPropósito
SPINSERT@Idf_Arquivo_Legal_Layout, @Des_Arquivo_Legal_Layout, @Num_Ano, @Dta_Cadastro, @Idf_Tipo_Arquivo_LegalInsere 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_LegalAtualiza um registro existente na tabela plataforma.TAB_Arquivo_Legal_Layout.
SPDELETE@Idf_Arquivo_Legal_LayoutExclui um registro da tabela plataforma.TAB_Arquivo_Legal_Layout pelo seu identificador.
SPSELECTID@Idf_Arquivo_Legal_LayoutSeleciona todas as colunas de um registro na tabela plataforma.TAB_Arquivo_Legal_Layout pelo seu identificador.
SPSELECT@Idf_Tipo_Arquivo_LegalSeleciona 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_LegalSeleciona 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étodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Método auxiliar para preparar parâmetros SQL para insert e update.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância.
Insertprivate void Insert()
private void Insert(SqlTransaction trans)
Insere uma instância de Dicionario no banco de dados, com ou sem transação.
Updateprivate void Update()
private void Update(SqlTransaction trans)
Atualiza uma instância de Dicionario no banco de dados, com ou sem transação.
Savepublic 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.
Deletepublic 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.
LoadDataReaderprivate 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.
LoadObjectpublic 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.
CompleteObjectpublic bool CompleteObject()
public bool CompleteObject(SqlTransaction trans)
Completa uma instância existente de Dicionario com dados do banco de dados.
SetInstanceprivate 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.
SetInstanceOpenDRprivate 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)
Listarpublic static List<Dicionario> Listar()Lista todos os itens do dicionário do sistema. (Apenas em Employer.Plataforma.BLL\Dicionario_P2.cs)
ListarItensDicionariopublic static Dictionary<Enumeradores.ItemDicionario, string> ListarItensDicionario(List<Enumeradores.ItemDicionario> idsItensDicionario)Retorna um dicionário com valores de itens específicos do dicionário.
RecuperaValorDicionariopublic 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona o parâmetro @Idf_Dicionario com o valor inteiro de idDicionario.
    3. Executa a consulta SPSELECTID (que seleciona todas as colunas da tabela plataforma.TAB_Dicionario pelo ID) usando a transação fornecida.
    4. Se um registro for lido, extrai o valor da coluna Vlr_Dicionario.
    5. Fecha o IDataReader e o descarta.
    6. Retorna o valor do dicionário.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela plataforma.TAB_Dicionario pelo 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona o parâmetro @Idf_Dicionario com o valor inteiro de idDicionario.
    3. Executa a consulta SPSELECTID (que seleciona todas as colunas da tabela plataforma.TAB_Dicionario pelo ID).
    4. Se um registro for lido, extrai o valor da coluna Vlr_Dicionario e o atribui a valorDicionario.
    5. Fecha o IDataReader e o descarta.
    6. Retorna o valor do dicionário.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela plataforma.TAB_Dicionario pelo 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 tabela login.LOG_Dicionario.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela login.LOG_Dicionario pelo 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 tabela login.LOG_Dicionario.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela login.LOG_Dicionario pelo 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 tabela LOG_Dicionario.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela LOG_Dicionario pelo 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 tabela LOG_Dicionario.
  • Stored Procedures chamadas:
    • SPSELECTID: @Idf_Dicionario — Seleciona todas as colunas de um registro na tabela LOG_Dicionario pelo seu identificador.
  • Validações: Nenhuma.
  • Regras de negócio: Nenhuma.
  • Exceções lançadas: Propaga exceções de banco de dados.

Stored Procedures

NomeParâmetrosPropósito
SPINSERT@Idf_Dicionario, @Nme_Dicionario, @Ape_Dicionario, @Idf_Tipo_Valor, @Vlr_Dicionario, @Vlr_Anterior, @Flg_Inativo, @Dta_CadastroInsere 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_CadastroAtualiza um registro existente na tabela plataforma.TAB_Dicionario.
SPDELETE@Idf_DicionarioExclui um registro da tabela plataforma.TAB_Dicionario pelo seu identificador.
SPSELECTID@Idf_DicionarioSeleciona 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_CadastroInsere um novo registro na tabela login.LOG_Dicionario.
SPUPDATE (Login)@Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_CadastroAtualiza um registro existente na tabela login.LOG_Dicionario.
SPDELETE (Login)@Idf_DicionarioExclui um registro da tabela login.LOG_Dicionario pelo seu identificador.
SPSELECTID (Login)@Idf_DicionarioSeleciona todas as colunas de um registro na tabela login.LOG_Dicionario pelo seu identificador.
SPINSERT (STS)@Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_CadastroInsere um novo registro na tabela LOG_Dicionario.
SPUPDATE (STS)@Idf_Dicionario, @Des_Dicionario, @Vlr_Dicionario, @Dta_CadastroAtualiza um registro existente na tabela LOG_Dicionario.
SPDELETE (STS)@Idf_DicionarioExclui um registro da tabela LOG_Dicionario pelo seu identificador.
SPSELECTID (STS)@Idf_DicionarioSeleciona 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étodoAssinaturaPropósito
RetornaUrlArquivoAtividadepublic 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.
EhUrlpublic static bool EhUrl(string url)Verifica se uma string é uma URL válida (HTTP ou HTTPS).
RetornaParametrosUrlAtividadepublic static NameValueCollection RetornaParametrosUrlAtividade(HttpContext context)Descriptografa os parâmetros de uma URL de atividade criptografada.
RetornaUrlArquivoTokenpublic 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.
RetornaParametrosUrlTokenpublic 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:
    1. Garante que urlWDocs termine com uma barra.
    2. Constrói a URL de download do arquivo tokenizado.
    3. Se mimeType não for fornecido:
  • 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.
  1. Se mimeType for 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.
  1. 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.CriptografarUrlArquivo pode lançar exceções internas.

RetornaParametrosUrlToken(HttpContext context)

  • Lógica:
    1. Descriptografa os parâmetros token, tipo e arquivo da querystring da URL usando CrytpDocs.DescriptografarUrlArquivo.
    2. Descodifica o parâmetro mimetype da URL e substitui pipes por barras, se presente.
    3. Converte o token descriptografado para DateTime.
    4. Calcula a diferença em minutos entre a data e hora atuais e a data e hora do token.
    5. 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.SecurityException com a mensagem “Token de acesso expirado”.
    6. Retorna uma NameValueCollection contendo os parâmetros descriptografados.
  • 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.SecurityException se 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étodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Método auxiliar para preparar parâmetros SQL para insert e update.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Método auxiliar que preenche a lista de parâmetros SQL com os valores da instância.
Insertprivate void Insert()
private void Insert(SqlTransaction trans)
Insere uma instância de Usuario no banco de dados, com ou sem transação.
Updateprivate void Update()
private void Update(SqlTransaction trans)
Atualiza uma instância de Usuario no banco de dados, com ou sem transação.
Savepublic 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.
Deletepublic 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.
LoadDataReaderprivate 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.
LoadObjectpublic 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.
CompleteObjectpublic bool CompleteObject()
public bool CompleteObject(SqlTransaction trans)
Completa uma instância existente de Usuario com dados do banco de dados.
SetInstanceprivate 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.
NumeroCPFFormatadopublic string NumeroCPFFormatadoRetorna o CPF do usuário formatado com pontos e hífen. (Apenas em Employer.Plataforma.BLL\Usuario_P2.cs)
SetInstanceSemDisposeinternal 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)
Salvarpublic 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)
LoadDataReaderPorLoginprivate 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)
LoadDataReaderPorLoginSenhaprivate 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)
LoadObjectPorLoginpublic 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)
LoadObjectPorLoginSenhapublic 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)
CarregarPorLoginSenhapublic 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)
CarregarPorLoginpublic 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)
CarregarPorIdpublic 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)
EncriptarSenhaprivate 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)
GerarChaveprivate 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)
ListarPorCPFspublic 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)
Autenticarpublic 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)
AutenticarFederacaopublic 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)
ResetarSenhaprivate 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)
AlterarSenhapublic 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)
Inativarpublic static bool Inativar(int id, bool inativar)Inativa ou reativa um usuário. (Apenas em Employer.Plataforma.BLL.STS\Usuario_P2.cs)
RetornarNovaSenhapublic 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)
CarregarPermissoespublic 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:
    1. Cria uma lista de parâmetros SQL.
    2. Adiciona os parâmetros @idf_usuario com o ID do usuário e @Idf_Categoria_Permissao com o valor inteiro da categoria de permissão.
    3. Executa a consulta SPSELECTPERMISSOESUSUARIO.
    4. Itera sobre o IDataReader resultante. Para cada linha lida, adiciona o valor da coluna “Permissao” (que é o Idf_Permissao) a uma lista de inteiros.
    5. Fecha o IDataReader e o descarta.
    6. 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_Inicio e Dta_Fim (ou se Dta_Fim for nula).
  • 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:
    1. Inicializa alterarSenha como false e chave como null.
    2. Inicia uma transação SQL.
    3. Verifica Bloqueio Temporário: Chama LoginBloqueado.VerificaBloqueioTemporario para o login. Se bloqueado, define aviso como Mensagens._0015 e retorna false.
    4. Carrega Usuário: Tenta carregar o Usuario usando Usuario.CarregarPorLoginSenha(trans, login, senha, out objUsuario).
    5. Se Login Correto:
  • Verifica Bloqueio: Se objUsuario.FlagBloqueado for true, define aviso como Mensagens._0001.
  • Verifica Inatividade: Se objUsuario.FlagInativo for true, define aviso como Mensagens._0002.
  • Verifica Permissão de Sistema: Se UsuarioSistema.Autenticar(trans, objUsuario.IdUsuario, (int)sistema) retornar false, define aviso como Mensagens._0003.
  • Verifica Histórico de Senha e Expiração:
  • Recupera o último HistoricoSenha do usuário.
  • Calcula o tempo restante para a expiração da senha com base em Num_Dias_Expira e Num_Dias_Aviso do AppSettings.
  • Se alterarSenha for true ou a senha estiver expirada (tempoRestante.Days >= numDiasExpira), define aviso como Mensagens._0005, alterarSenha como true, e atualiza objUsuario.FlagAlterarSenha e salva o usuário.
  • Se a senha estiver próxima de expirar (tempoRestante.Days >= (numDiasExpira - numDiasAviso)), define autentica como true e aviso com a mensagem de aviso de expiração.
  • Caso contrário, define autentica como true, aviso como Mensagens._0010 e gera uma chave criptografada.
  • Se não houver histórico de senha: Cria um novo HistoricoSenha com uma data padrão, salva, define autentica como true e aviso como Mensagens._0010.
  1. Se Login Incorreto:
  • Define aviso como Mensagens._0008.
  • Registra a tentativa de login inválida em LoginInvalido.
  1. Finaliza Autenticação:
  • Se autentica for true, chama Login.LoginValido, comita a transação e retorna true.
  • Caso contrário, comita a transação e retorna false.
  • Stored Procedures chamadas:
    • SPSELECTLOGIN (via LoadDataReaderPorLogin): @Log_Usuario
    • SPSELECTLOGINSENHA (via LoadDataReaderPorLoginSenha): @Log_Usuario, @Sen_Usuario
    • SPINSERT (para TAB_Historico_Senha - implícito em objHistoricoSenha.Save(trans))
    • SPUPDATE (para TAB_Usuario - implícito em objUsuario.Save(trans))
    • SPINSERT (para TAB_Login_Invalido - implícito em objLoginInvalido.Save())
    • SPINSERT (para TAB_Login - implícito em Login.LoginValido(trans, objUsuario, enderecoIP))
    • SPSELECTID (para TAB_Usuario_Sistema - implícito em UsuarioSistema.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.
  • 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:
    1. Inicializa valido como false e novaSenha como null.
    2. Gera uma nova senha aleatória.
    3. Inicia uma transação SQL.
    4. Carrega Usuário: Tenta carregar o Usuario usando Usuario.CarregarPorLogin(trans, login, out objUsuario).
    5. Se Usuário Encontrado:
  • Verifica Bloqueio: Se objUsuario.FlagBloqueado for true, define aviso como Mensagens._0001.
  • Verifica Inatividade: Se objUsuario.FlagInativo for true, define aviso como Mensagens._0002.
  • Valida Dados Pessoais: Se dataNascimento, ddd, celular e email corresponderem aos dados do usuário, define aviso como Mensagens._0012, atualiza a senha do usuário com a novaSenha gerada, define FlagAlterarSenha como true, salva o usuário, cria e salva um registro de Recuperacao, e define valido como true.
  • Se Dados Pessoais Inválidos: Define aviso como Mensagens._0011.
  1. Se Usuário Não Encontrado: Define aviso como Mensagens._0011.
  2. Finaliza Operação:
  • Se valido for true, chama Login.LoginValido, atribui a nova senha gerada a novaSenha, comita a transação e retorna true.
  • Caso contrário, chama Login.LoginInvalido, comita a transação e retorna false.
  • Stored Procedures chamadas:
    • SPSELECTLOGIN (via LoadDataReaderPorLogin): @Log_Usuario
    • SPUPDATE (para TAB_Usuario - implícito em objUsuario.Save(trans))
    • SPINSERT (para TAB_Recuperacao - implícito em objRecuperacao.Save(trans))
    • SPINSERT (para TAB_Login - implícito em Login.LoginValido(trans, objUsuario, enderecoIP))
    • SPINSERT (para TAB_Login_Invalido - implícito em Login.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

NomeParâmetrosPropósito
SPINSERT@Num_CPF, @Idf_Perfil_Principal, @Idf_Ultima_Empresa, @Idf_Usuario_Gerador, @Idf_Sistema_Gerador, @Idf_Pessoa_Fisica, @Flg_Interno, @Dta_Cadastro, @Flg_InativoInsere 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_InativoAtualiza um registro existente na tabela TAB_Usuario.
SPDELETE@Idf_Usuario_Gerador, @Idf_UsuarioInativa (atualiza Idf_Usuario_Gerador) e depois exclui um registro da tabela TAB_Usuario.
SPSELECTID@Idf_UsuarioSeleciona todas as colunas de um registro na tabela TAB_Usuario pelo seu identificador.
SPSELPERMISSOES@CurrentPage, @PageSize, {0} (coluna de ordenação), @IdF_Usuario, @PesquisaConsulta 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_UsuarioConsulta 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, @WhereExpressionConsulta paginada de usuários, incluindo dados da pessoa física associada.
SPSELECTUSU@Nome, @StatusSeleciona usuários por nome e status de inatividade, incluindo dados da pessoa física.
CARREGARCPF@N_CPF, @StatusSeleciona um usuário por CPF e status de inatividade, incluindo dados da pessoa física.
SELRELATORIOUSUARIOSPORPERFIL@Idf_PerfilSeleciona dados de usuários (nome, CPF formatado, e-mail, celular) para um relatório de usuários por perfil.
SPSELECTCPF@Num_CPFSeleciona 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_PeriodoSeleciona 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_PermissaoSeleciona 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_CPFSeleciona usuários por nome da pessoa ou CPF, unindo com a tabela TAB_PESSOA_FISICA.
SPSELECTPORNOME@Nme_PessoaSeleciona usuários por nome da pessoa, unindo com a tabela TAB_PESSOA_FISICA.
SPCARREGARUSUARIOSFILAATUALIZACAOPONTO@Num_TentativasSeleciona usuários para a fila de atualização de ponto, com base em tentativas e status.
SPVERIFICARFILIAISPONTO@Num_CPFVerifica filiais e parâmetros específicos de ponto para um CPF de usuário.
SELECTUSUARIOCONTAPAGAR@Idf_UsuarioSeleciona informações de usuário (CPF formatado, nome) para contas a pagar.
SPRECUPERARFILIAISQUEUSUARIOTEMACESSO@Idf_Empresa, @Idf_UsuarioRecupera filiais às quais um usuário tem acesso dentro de uma empresa.
SPSELPERFILSISTEMASENHAMASTER@Idf_Usuario, @Dta_Periodo, @Idf_SistemaSeleciona 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_UsuarioSeleciona todas as colunas de um registro na tabela login.LOG_Usuario pelo login (CPF).
SPSELECTLOGINSENHA (Login/STS)@Log_Usuario, @Sen_UsuarioSeleciona todas as colunas de um registro na tabela login.LOG_Usuario pelo login (CPF) e senha.
SPCARREGARCPF (Login/STS)@Log_UsuarioSeleciona nome, login e senha de um usuário da tabela Log_Usuario pelo login (CPF).


📌 Status: Concluído 👤 Responsável: Equipe de QA

Digite para pesquisar...

Scroll para zoom · Esc para fechar

⌨️ Atalhos de teclado
Navegação
Ctrl K Pesquisar na wiki
Ctrl F Buscar na página
? Ver atalhos
Visualização
Ctrl Shift F Modo foco
A+ / A− Tamanho da fonte
Ctrl D Alternar tema
Ações
Ctrl B Favoritar página
Esc Fechar dialogs