WebFoPag ~43 min

🛠️ Documentação Técnica: Configuração de Alertas

[!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.

Documentação Base — C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\AlertasConfiguracaoCadastro.aspx

👁️ 1. Visão Geral

A tela “Configuração de Alertas” permite ao usuário cadastrar, editar, visualizar e excluir configurações de alertas. O usuário pode definir destinatários, periodicidade (mensal ou diária), dias de envio (para periodicidade diária), e quais alertas serão enviados. A tela também possui uma funcionalidade de pesquisa para localizar alertas já configurados.

🗂️ 2. Tipos/Modalidades

A tela opera em dois modos principais:

  • Cadastro/Edição: Permite ao usuário inserir novas configurações de alerta ou modificar as existentes.
  • Visualização/Pesquisa: Exibe uma lista de alertas configurados, com opções de filtro e paginação.

A periodicidade do alerta pode ser:

  • Mensal (1): O alerta é enviado em um dia específico do mês.
  • Diário (2): O alerta é enviado em dias específicos da semana.

🖥️ 3. Interface — Campos e Controles

NomeTipoObrigatórioRegra
lblTituloPaginaLabel⚪ NãoTítulo da página: “Configuração de Alertas”
vsValidacaoEmployerValidationSummary⚪ NãoExibe mensagens de erro de validação do grupo “Salvar”
txtNomeDestinatarioControlAlfaNumerico🔴 SimLargura: 360. Tipo: Padrão. Mensagens de erro para obrigatório, formato inválido, valor máximo e mínimo.
lblEmailLabel⚪ NãoRótulo para txtEmailDestinatario
txtEmailDestinatarioControlAlfaNumerico🔴 SimLargura: 360. Tipo: Padrão. Expressão regular para formato de e-mail. Mensagens de erro para obrigatório, formato inválido, valor máximo e mínimo.
btnAdicionarDestinatarioImageButton⚪ NãoImagem: /img/global/icones/ico_adicionar_16x16.gif. ToolTip: “Adicionar Destinatario”. ValidationGroup: “Val1”.
btnAbrirModalDestinatarioAdicionadoButton⚪ NãoTexto: “0 Destiatário(s) Adicionado(s)”. Abre o modal de destinatários adicionados.
lblPeriodicidadeLabel⚪ NãoRótulo para lsPeriodicidade
lsPeriodicidadeListaSugestoes🔴 SimMensagens de erro para obrigatório e inválido. TipoSugestao: “Numero”.
lblDiaMesEnvioAlertaLabel⚪ NãoRótulo para txtDiaMesEnvioAlerta
txtDiaMesEnvioAlertaValorNumericoTextBox🔴 SimCasas Decimais: 0. Largura: 30. Valor Mínimo: 1. Valor Máximo: 31. Tamanho: 2. Mensagens de erro para obrigatório, formato inválido, valor máximo e mínimo.
lblDiasSemanaEnvioAlertaLabel🔴 SimRótulo para os checkboxes de dias da semana.
ckbDiasSemanaEnvioAlertaSegundaControlCheckBox⚪ NãoTexto: “Segunda”
ckbDiasSemanaEnvioAlertaTercaControlCheckBox⚪ NãoTexto: “Terça”
ckbDiasSemanaEnvioAlertaQuartaControlCheckBox⚪ NãoTexto: “Quarta”
ckbDiasSemanaEnvioAlertaQuintaControlCheckBox⚪ NãoTexto: “Quinta”
ckbDiasSemanaEnvioAlertaSextaControlCheckBox⚪ NãoTexto: “Sexta”
ckbDiasSemanaEnvioAlertaSabadoControlCheckBox⚪ NãoTexto: “Sábado”
ckbDiasSemanaEnvioAlertaDomingoControlCheckBox⚪ NãoTexto: “Domingo”
lblEnvioAtivadoLabel⚪ NãoRótulo para lsEnvioAtivado
lsEnvioAtivadoListaSugestoes🔴 SimMensagens de erro para obrigatório e inválido. TipoSugestao: “Numero”.
lblAlertaLabel⚪ NãoRótulo para txtAlerta
txtAlertaLocalizarAlerta🔴 SimLargura: 360. Mensagens de erro para obrigatório, formato inválido e inválido.
btnAdicionarAlertasImageButton⚪ NãoImagem: /img/global/icones/ico_adicionar_16x16.gif. ToolTip: “Adicionar Alerta”. ValidationGroup: “Val1”.
btnAbrirModalAlertaAdicionadoButton⚪ NãoTexto: “0 Alerta(s) Adicionado(s)”. Abre o modal de alertas adicionados.
btnSalvarButton⚪ NãoTexto: “Salvar”. ValidationGroup: “Salvar”.
btnLimparButton⚪ NãoTexto: “Limpar”.
btnVoltarButton⚪ NãoTexto: “Voltar”.
lblPesquisaLabel⚪ NãoTexto: “Pesquise por título do alerta, nome do destinatário ou e-mail do destinatário.”
txtPesquisaControlAlfaNumerico⚪ NãoLargura: 450. Tamanho: 200.
btnPesquisarButton⚪ NãoTexto: “Pesquisar”.
gvwAlertasConfiguradosEmployerGrid⚪ NãoExibe alertas configurados. Colunas: Título, Alerta Ativo?, Tipo Alerta, Nome Destinatário, E-mail Destinatário, Periodicidade, Envio Ativo?, Ações (Editar, Excluir).
pnlModalDestinatarioAdicionadoPanel⚪ NãoModal para exibir e gerenciar destinatários adicionados.
btnFecharModalDestinatarioAdicionadoImageButton⚪ NãoBotão para fechar o modal de destinatários.
lblTituloModalDestinatarioAdicionadoLabel⚪ NãoTítulo do modal: “Destinatário Adicionado”.
ddlSelecaoGvwDestinatarioAdicionadoDropDownList⚪ NãoOpções para selecionar/desmarcar destinatários na grid do modal.
gvwModalDestinatarioAdicionadoEmployerGrid⚪ NãoExibe destinatários adicionados. Colunas: Nome Destinatario, Email Destinatario, Ação (checkbox).
btnModalExcluirSelecionadosButton⚪ NãoTexto: “Excluir Selecionados”.
pnlModalAlertaAdicionadoPanel⚪ NãoModal para exibir e gerenciar alertas adicionados.
btnFecharModalAlertaAdicionadoImageButton⚪ NãoBotão para fechar o modal de alertas.
lblTituloModalAlertaAdicionadoLabel⚪ NãoTítulo do modal: “Alerta Adicionado”.
ddlSelecaoGvwAlertaAdicionadoDropDownList⚪ NãoOpções para selecionar/desmarcar alertas na grid do modal.
gvwModalAlertaAdicionadoEmployerGrid⚪ NãoExibe alertas adicionados. Colunas: Descrição, Dta. Cadastro, Ação (checkbox).
btnModalExcluirAlertasSelecionadosButton⚪ NãoTexto: “Excluir Alertas Selecionados”.

📑 4. Abas e Seções

A tela é dividida nas seguintes seções principais:

  • Painel Principal (upnGeral): Contém os campos de cadastro/edição e a listagem de alertas configurados.
    • pnlValidacao: Painel para exibir o EmployerValidationSummary.
    • painel_padrao: Contém os campos de entrada para Nome Destinatário, E-mail Destinatário, Periodicidade, Dia Mês Envio Alerta, Dias Semana Envio Alerta, Envio Ativado e Alerta.
    • panel_botoes_secao: Contém os botões “Salvar”, “Limpar” e “Voltar”.
    • “Alertas Cadastrados”: Título para a seção de pesquisa e listagem.
    • Seção de Pesquisa: Contém o campo txtPesquisa e o botão btnPesquisar.
    • pnlAlertasConfigurados: Painel que contém a grid gvwAlertasConfigurados.
  • Modal “Destinatário Adicionado” (pnlModalDestinatarioAdicionado): Exibido para gerenciar os destinatários adicionados.
    • Contém um DropDownList para seleção em massa e uma EmployerGrid (gvwModalDestinatarioAdicionado) para listar os destinatários.
    • Botão “Excluir Selecionados” (btnModalExcluirSelecionados).
  • Modal “Alerta Adicionado” (pnlModalAlertaAdicionado): Exibido para gerenciar os alertas adicionados.
    • Contém um DropDownList para seleção em massa e uma EmployerGrid (gvwModalAlertaAdicionado) para listar os alertas.
    • Botão “Excluir Alertas Selecionados” (btnModalExcluirAlertasSelecionados).

🛡️ 5. Regras de Negócio

5.1. Validações de Campos

  • txtNomeDestinatario:
  • Campo obrigatório.
  • Formato inválido.
  • Valor maior que o máximo permitido.
  • Valor menor que o mínimo permitido.
  • txtEmailDestinatario:
  • Campo obrigatório.
  • Deve conter o padrão de e-mail (regexEmail).
  • Valor maior que o máximo permitido.
  • Valor menor que o mínimo permitido.
  • lsPeriodicidade:
  • Campo obrigatório.
  • Deve conter uma das sugestões.
  • txtDiaMesEnvioAlerta:
  • Campo obrigatório.
  • Formato inválido.
  • Valor máximo: 31.
  • Valor mínimo: 1.
  • lblDiasSemanaEnvioAlerta:
  • Para periodicidade “Diário”, pelo menos um dia da semana deve ser marcado. (Validado em ValidarParaSalvar no AlertasConfiguracaoCadastro.aspx.cs)
  • lsEnvioAtivado:
  • Campo obrigatório.
  • Deve conter uma das sugestões.
  • txtAlerta:
  • Campo obrigatório.
  • Deve conter uma das sugestões.
  • Formato inválido.
  • Adição de Destinatário (btnAdicionarDestinatario_Click no AlertasConfiguracaoCadastro.aspx.cs):
  • Nome e E-mail do Destinatário devem ser preenchidos. Mensagem: “Para adicionar, preencha o Nome e o E-mail do Destinatário.”
  • Destinatário já adicionado (verificado por Nome ou E-mail na lista LsDestinatario). Mensagem: “Destinatário já foi adicionado.”
  • E-mail do Destinatário deve seguir o padrão seuemail@seuprovedor.com. Mensagem: “Campo E-mail Destinatário deve conter o padrão seuemail@seuprovedor.com.”
  • Adição de Alerta (btnAdicionarAlertas_Click no AlertasConfiguracaoCadastro.aspx.cs):
  • Campo Alerta deve ser preenchido (txtAlerta.IdAlertaSelecionado.HasValue). Mensagem: “Preencher Alerta.”
  • Alerta já adicionado (verificado na lista LsIdAlerta). Mensagem: “Alerta já foi adicionado.”
  • Validação para Salvar (ValidarParaSalvar no AlertasConfiguracaoCadastro.aspx.cs):
  • Nenhum destinatário foi adicionado. Mensagem: “Nenhum destinatário foi adicionado. Para realizar a configuração do alerta, é necessário selecionar pelo menos um destinatário.”
  • Nenhum alerta foi adicionado. Mensagem: “Nenhum alerta foi adicionado. Para realizar a configuração do alerta, é necessário selecionar pelo menos um alerta.”
  • Para periodicidade ‘Diário’, obrigatoriamente deve ser marcado pelo menos um dia da semana. Mensagem: “Para alerta configurado para a periodicidade ‘Diário’, obrigatoriamente deve ser marcado pelo menos um dia da semana. Favor verificar.”
  • Alerta já cadastrado para o e-mail informado (verificado por UsuarioAlerta.ValidarConfiguracaoAlertaExistente). Mensagem: “Existem alertas adicionados que já foram configurados para o email do destinatário informado. Favor verificar.”

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

  • Permissão de Visualização (ConfigurarPermissoesTela no AlertasConfiguracaoCadastro.aspx.cs): Se o usuário não tiver a permissão ConfiguracaoAlertas.VisualizarConfiguracaoAlertas, é redirecionado para a página de acesso negado.
  • Permissão de Salvar (ConfigurarPermissoesTela no AlertasConfiguracaoCadastro.aspx.cs): Se o usuário não tiver a permissão ConfiguracaoAlertas.SalvarConfiguracaoAlertas, o botão btnSalvar é desabilitado.
  • Configuração de Dias de Envio por Periodicidade (ConfigurarDiasEnvioAlertaPorPeriodicidade no AlertasConfiguracaoCadastro.aspx.cs):
  • Se Periodicidade for “Mensal”: txtDiaMesEnvioAlerta é habilitado; checkboxes de dias da semana são desabilitados.
  • Se Periodicidade for “Diário”: txtDiaMesEnvioAlerta é desabilitado; checkboxes de dias da semana são habilitados.
  • Se Periodicidade não for selecionada: txtDiaMesEnvioAlerta e checkboxes de dias da semana são desabilitados.
  • Campos Obrigatórios de Destinatário e Alerta (btnAdicionarDestinatario_Click, btnAdicionarAlertas_Click no AlertasConfiguracaoCadastro.aspx.cs):
  • txtNomeDestinatario.Obrigatorio e txtEmailDestinatario.Obrigatorio são definidos como true se LsDestinatario estiver vazio, e false caso contrário.
  • txtAlerta.Obrigatorio é definido como true se LsIdAlerta estiver vazio, e false caso contrário.
  • Visibilidade dos botões de adicionar/abrir modal de destinatários (gvwAlertasConfigurados_OnRowCommand no AlertasConfiguracaoCadastro.aspx.cs): btnAdicionarDestinatario.Visible e btnAbrirModalDestinatarioAdicionado.Visible são definidos como false no modo de edição.
  • Visibilidade dos DropDownLists e botões de exclusão nos modais (CarregarGridViewNomeDestinatario, CarregarGridViewAlerta no AlertasConfiguracaoCadastro.aspx.cs):
  • ddlSelecaoGvwDestinatarioAdicionado.Visible e btnModalExcluirSelecionados.Visible são true se houver linhas na grid de destinatários.
  • ddlSelecaoGvwAlertaAdicionado.Visible e btnModalExcluirAlertasSelecionados.Visible são true se houver linhas na grid de alertas.
  • Habilitação/Desabilitação de campos no modo de edição (ConfiguraCampos no AlertasConfiguracaoCadastro.aspx.cs): txtNomeDestinatario, txtEmailDestinatario, lsPeriodicidade, txtDiaMesEnvioAlerta, ckbDiasSemanaEnvioAlertaSegunda a ckbDiasSemanaEnvioAlertaDomingo, e lsEnvioAtivado são desabilitados. txtAlerta.ValidationGroup é definido como “Salvar”.

5.3. Regras de Inativação e Exclusão

  • Exclusão de Configuração de Alerta (Excluir no AlertasConfiguracaoCadastro.aspx.cs):
  • Requer a permissão ConfiguracaoAlertas.ExcluirConfiguracaoAlertas.
  • Chama UsuarioAlerta.Delete(this.IdAlertaUsuario.Value).
  • Após a exclusão, os campos são limpos, a grid de alertas configurados é recarregada e uma mensagem de sucesso é exibida: “Configuração de alerta excluído com sucesso”.
  • Exclusão de Destinatários Selecionados no Modal (btnModalExcluirSelecionados_Click no AlertasConfiguracaoCadastro.aspx.cs):
  • Se nenhum destinatário for selecionado, exibe mensagem de aviso: “Selecione o destinatário que deve ser excluído.”
  • Remove os destinatários selecionados da lista LsDestinatario.
  • Recarrega a grid do modal de destinatários.
  • Exclusão de Alertas Selecionados no Modal (btnModalExcluirAlertasSelecionados_Click no AlertasConfiguracaoCadastro.aspx.cs):
  • Se nenhum alerta for selecionado, exibe mensagem de aviso: “Selecione o Alerta que deve ser excluído.”
  • Remove os alertas selecionados da lista LsIdAlerta.
  • Recarrega a grid do modal de alertas.

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

  • Salvar Configuração de Alerta (Salvar no AlertasConfiguracaoCadastro.aspx.cs):
  • Se IdAlertaUsuario e EditarDestinatario tiverem valor (modo de edição), carrega o objeto UsuarioAlerta existente e atualiza suas propriedades com os valores da tela. Para cada idAlerta em LsIdAlerta, cria um novo UsuarioAlerta (se EditarDestinatario > 0) e associa o alerta, salvando-o.
  • Se não for edição, itera sobre LsDestinatario e LsIdAlerta, criando um novo UsuarioAlerta para cada combinação e salvando-o.
  • As propriedades setadas no objeto UsuarioAlerta são: NomeDestinatario, DescricaoEmailDestinatario, FlagMensal, NumeroDiaMes, FlagSemanalSegunda a FlagSemanalDomingo, FlagInativo, e Alerta.IdAlerta.
  • Em caso de sucesso, exibe mensagem “Configuração de alerta realizada com sucesso.” e recarrega a grid de alertas configurados.
  • Em caso de erro, exibe “Erro ao salvar configuração de alerta”.

5.5. Outras Regras Específicas da Tela

  • Inicialização da Tela (Inicializar no AlertasConfiguracaoCadastro.aspx.cs):
  • Configura as permissões do usuário.
  • Carrega as listas de sugestão (lsPeriodicidade, lsEnvioAtivado).
  • Carrega a grid de alertas configurados.
  • Preenche ou limpa os campos da tela.
  • Preenchimento de Campos (PreencherCampos no AlertasConfiguracaoCadastro.aspx.cs):
  • Se IdAlertaUsuario tiver valor (modo de edição), carrega o objeto UsuarioAlerta usando UsuarioAlerta.LoadObject(this.IdAlertaUsuario.Value) e preenche os campos da tela com seus dados.
  • Se não for edição, limpa os campos.
  • Limpeza de Campos (LimparCampos no AlertasConfiguracaoCadastro.aspx.cs):
  • Limpa todas as propriedades de ViewState (IdAlertaUsuario, LsDestinatario, LsDestinatarioSelecionadosModal, LsIdAlerta, LsAlertasSelecionadosModal, EditarDestinatario).
  • Limpa o texto/valor de todos os campos de entrada.
  • Redefine a obrigatoriedade dos campos de destinatário e alerta.
  • Atualiza o texto dos botões de abrir modal de destinatários e alertas.
  • Reconfigura os dias de envio de alerta por periodicidade.
  • Carregamento da Grid de Alertas Configurados (CarregarGridViewAlertasConfigurados no AlertasConfiguracaoCadastro.aspx.cs):
  • Chama UsuarioAlerta.ListarAletarConfigurados para obter os dados.
  • Utiliza UIHelper.CarregarGridView para popular a grid.
  • Carregamento da Grid de Destinatários no Modal (CarregarGridViewNomeDestinatario no AlertasConfiguracaoCadastro.aspx.cs):
  • Cria um DataTable a partir da lista LsDestinatario.
  • Pagina os dados e utiliza UIHelper.CarregarGridView para popular a grid do modal.
  • Carregamento da Grid de Alertas no Modal (CarregarGridViewAlerta no AlertasConfiguracaoCadastro.aspx.cs):
  • Chama BLL.Alerta.BuscaComponentePaginado para obter os dados dos alertas.
  • Utiliza UIHelper.CarregarGridView para popular a grid do modal.
  • Seleção de Destinatários no Modal (ddlSelecaoGvwDestinatarioAdicionado_SelectedIndexChanged no AlertasConfiguracaoCadastro.aspx.cs):
  • Permite marcar/desmarcar todos os destinatários, ou todos os destinatários da página atual.
  • Seleção de Alertas no Modal (ddlSelecaoGvwAlertaAdicionado_SelectedIndexChanged no AlertasConfiguracaoCadastro.aspx.cs):
  • Permite marcar/desmarcar todos os alertas, ou todos os alertas da página atual.

🔄 6. Fluxos Principais

6.1. Inicialização da Tela

  1. Page_Load:
  • Verifica se é um postback. Se não for:
  • Chama Inicializar().
  1. Inicializar():
  • Chama ConfigurarPermissoesTela().
  • Chama CarregarListasSugestoes().
  • Chama CarregarGridViewAlertasConfigurados().
  • Chama PreencherCampos().
  1. ConfigurarPermissoesTela():
  • Carrega as permissões do usuário logado para a categoria ConfiguracaoAlertas usando Usuario.CarregarPermissoes().
  • Redireciona para UrlAcessoNegado se não tiver permissão de VisualizarConfiguracaoAlertas.
  • Desabilita btnSalvar se não tiver permissão de SalvarConfiguracaoAlertas.
  1. CarregarListasSugestoes():
  • Popula lsPeriodicidade com “Mensal” e “Diário”.
  • Popula lsEnvioAtivado com os valores de BLL.Flag.Listar().
  1. CarregarGridViewAlertasConfigurados():
  • Chama UsuarioAlerta.ListarAletarConfigurados() para obter os dados.
  • Chama UIHelper.CarregarGridView() para exibir os dados na gvwAlertasConfigurados.
  1. PreencherCampos():
  • Se IdAlertaUsuario tiver valor (edição):
  • Limpa as listas de destinatários e alertas do ViewState.
  • Define a obrigatoriedade e habilitação de campos.
  • Atualiza o texto dos botões de abrir modal de destinatários e alertas.
  • Carrega o objeto UsuarioAlerta usando UsuarioAlerta.LoadObject().
  • Preenche os campos da tela com os dados do objeto.
  • Chama ConfigurarDiasEnvioAlertaPorPeriodicidade().
  • Se IdAlertaUsuario não tiver valor (cadastro):
  • Chama LimparCampos().

6.2. Salvar Configuração de Alerta

  1. btnSalvar_OnClick:
  • Valida permissão de SalvarConfiguracaoAlertas usando Util.ValidaPermissaoUsuario(). Se não tiver, exibe aviso.
  • Chama ValidarParaSalvar(). Se a validação falhar, retorna.
  • Chama Salvar(). Se o salvamento for bem-sucedido:
  • Chama ConfiguraCampos().
  • Chama CarregarGridViewAlertasConfigurados().
  • Exibe mensagem de sucesso.
  1. ValidarParaSalvar():
  • Verifica se há destinatários adicionados.
  • Verifica se há alertas adicionados.
  • Valida se pelo menos um dia da semana foi selecionado para periodicidade “Diário”.
  • Chama UsuarioAlerta.ValidarConfiguracaoAlertaExistente() para verificar alertas já cadastrados para o e-mail informado.
  • Retorna true se todas as validações passarem, false caso contrário.
  1. Salvar():
  • Monta o objeto UsuarioAlerta com os dados da tela.
  • Se for edição, atualiza o objeto existente.
  • Itera sobre os destinatários e alertas, criando e salvando UsuarioAlerta para cada combinação usando objUsuarioAlerta.Save().

6.3. Excluir Configuração de Alerta

  1. gvwAlertasConfigurados_OnRowCommand (CommandName “Excluir”):
  • Recupera IdAlertaUsuario da linha selecionada.
  • Valida permissão de ExcluirConfiguracaoAlertas usando Util.ValidaPermissaoUsuario(). Se não tiver, exibe aviso.
  • Chama Excluir(). Se a exclusão for bem-sucedida:
  • Chama LimparCampos().
  • Reseta a paginação da grid.
  • Habilita os campos de destinatário e periodicidade.
  • Chama CarregarGridViewAlertasConfigurados().
  • Exibe mensagem de sucesso.
  1. Excluir():
  • Chama UsuarioAlerta.Delete(this.IdAlertaUsuario.Value).

6.4. Limpar Campos

  1. btnLimpar_OnClick:
  • Redireciona para a própria página (AlertasConfiguracaoCadastro.aspx), o que efetivamente limpa todos os campos e reinicia a tela.

6.5. Voltar

  1. btnVoltar_OnClick:
  • Redireciona para MenuMaisOpcoes.aspx?ID=A.

6.6. Pesquisar Alertas Configurados

  1. btnPesquisar_OnClick:
  • Chama CarregarGridViewAlertasConfigurados(), que recarrega a grid aplicando o filtro do txtPesquisa.

6.7. Adicionar Destinatário

  1. btnAdicionarDestinatario_Click:
  • Valida se Nome e E-mail do Destinatário estão preenchidos.
  • Valida se o destinatário já foi adicionado.
  • Valida o formato do e-mail usando expressão regular.
  • Adiciona o novo DestinatarioAlertaDTO à lista LsDestinatario.
  • Atualiza o texto do botão btnAbrirModalDestinatarioAdicionado.
  • Exibe mensagem de sucesso.
  • Limpa os campos txtNomeDestinatario e txtEmailDestinatario.
  • Atualiza a obrigatoriedade dos campos de destinatário.

6.8. Abrir Modal de Destinatários Adicionados

  1. btnAbrirModalDestinatarioAdicionado_Click:
  • Chama CarregarGridViewNomeDestinatario().
  1. CarregarGridViewNomeDestinatario():
  • Popula gvwModalDestinatarioAdicionado com os dados de LsDestinatario.
  • Exibe o modal.

6.9. Excluir Destinatários do Modal

  1. btnModalExcluirSelecionados_Click:
  • Valida se há destinatários selecionados em LsDestinatarioSelecionadosModal.
  • Remove os destinatários selecionados de LsDestinatario.
  • Atualiza a obrigatoriedade dos campos de destinatário.
  • Recarrega a grid do modal de destinatários.

6.10. Adicionar Alerta

  1. btnAdicionarAlertas_Click:
  • Valida se o campo txtAlerta está preenchido.
  • Valida se o alerta já foi adicionado.
  • Adiciona o IdAlertaSelecionado à lista LsIdAlerta.
  • Atualiza o texto do botão btnAbrirModalAlertaAdicionado.
  • Exibe mensagem de sucesso.
  • Limpa o campo txtAlerta.
  • Atualiza a obrigatoriedade do campo txtAlerta.

6.11. Abrir Modal de Alertas Adicionados

  1. btnAbrirModalAlertaAdicionado_Click:
  • Chama CarregarGridViewAlerta().
  1. CarregarGridViewAlerta():
  • Popula gvwModalAlertaAdicionado com os dados de LsIdAlerta usando BLL.Alerta.BuscaComponentePaginado().
  • Exibe o modal.

6.12. Excluir Alertas do Modal

  1. btnModalExcluirAlertasSelecionados_Click:
  • Valida se há alertas selecionados em LsAlertasSelecionadosModal.
  • Remove os alertas selecionados de LsIdAlerta.
  • Atualiza a obrigatoriedade do campo txtAlerta.
  • Recarrega a grid do modal de alertas.

🔌 7. Integrações e Dependências

7.1. Classes BLL e Service utilizadas

Employer.Plataforma.BLL.UsuarioAlerta

  • Arquivos de origem: Employer.Plataforma.BLL\UsuarioAlerta_P1.cs, Employer.Plataforma.BLL\UsuarioAlerta_P2.cs
  • Métodos utilizados:
  • ListarAletarConfigurados(string filtro, string colunaOrdenacao, string direcaoOrdenacao, int paginaAtual, int tamanhoPagina, out int totalRegistro): Lista as configurações de alertas existentes, aplicando filtros de pesquisa, ordenação e paginação.
  • LoadObject(int idAlertaUsuario): Carrega um objeto UsuarioAlerta a partir do seu identificador.
  • ValidarConfiguracaoAlertaExistente(int? idAlertaUsuario, int? idAlerta, string emailDestinatario, List<int?> lsIdAlerta, List<string> lsEmailDestinatario): Valida se já existe uma configuração de alerta para o e-mail e alerta informados.
  • Delete(int idAlertaUsuario): Exclui uma configuração de alerta.
  • Save(): Persiste as alterações de um objeto UsuarioAlerta no banco de dados.

Employer.Plataforma.BLL.Alerta

  • Arquivos de origem: Employer.Plataforma.BLL\Alerta_P1.cs, Employer.Plataforma.BLL\Alerta_P2.cs
  • Métodos utilizados:
  • BuscaComponentePaginado(int inicio, int fim, string colunaOrdenacao, string direcaoOrdenacao, out int totalRegistro, string filtro, int? idTipoAlerta, List<int?> lsIdAlerta): Busca alertas paginados, aplicando filtros e ordenação, e filtrando por uma lista de IDs de alerta.

Employer.Plataforma.BLL.DTO.DestinatarioAlertaDTO

  • Arquivo de origem: Employer.Plataforma.BLL\DTO\DestinatarioAlertaDTO.cs
  • Propósito: Objeto de transferência de dados para representar um destinatário de alerta, contendo NomeDestinatario e EmailDestinatario.

Employer.Plataforma.Web.Code.UIHelper

  • Arquivo de origem: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.Code\UIHelper.cs
  • Métodos utilizados:
  • CarregarGridView(GridView grid, object dataSource, int totalRegistros): Método auxiliar para carregar dados em um GridView e configurar a paginação.

Employer.Plataforma.BLL.Usuario

  • Arquivos de origem: Employer.Plataforma.BLL\Usuario_P1.cs, Employer.Plataforma.BLL\Usuario_P2.cs
  • Métodos utilizados:
  • CarregarPermissoes(Usuario usuario, Employer.Plataforma.BLL.Enumeradores.CategoriaPermissao categoriaPermissao): Carrega as permissões de um usuário para uma categoria específica.

Employer.Plataforma.BLL.Util

  • Arquivo de origem: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Util.cs
  • Métodos utilizados:
  • ValidaPermissaoUsuario(List<int> lstPermissoes, int permissao): Verifica se o usuário possui uma permissão específica.

7.2. Stored Procedures chamadas

A análise do código-behind (AlertasConfiguracaoCadastro.aspx.cs) e das classes BLL (UsuarioAlerta_P1.cs, UsuarioAlerta_P2.cs, Alerta_P1.cs, Alerta_P2.cs) revelará as stored procedures.

UsuarioAlerta_P1.cs e UsuarioAlerta_P2.cs

  • SP: TAB_SP_Usuario_Alerta_Listar_Alertas_Configurados
  • Arquivo BLL: UsuarioAlerta_P1.cs (no método ListarAletarConfigurados)
  • Parâmetros SQL: @Des_Filtro, @Nme_Coluna_Ordenacao, @Cod_Direcao_Ordenacao, @Num_Pagina_Atual, @Num_Tamanho_Pagina, @Num_Total_Registro
  • Propósito: Lista as configurações de alertas de usuário com filtros, ordenação e paginação.
  • SP: TAB_SP_Usuario_Alerta_Load_Object
  • Arquivo BLL: UsuarioAlerta_P1.cs (no método LoadObject)
  • Parâmetros SQL: @Idf_Usuario_Alerta
  • Propósito: Carrega os dados de uma configuração de alerta de usuário pelo seu identificador.
  • SP: TAB_SP_Usuario_Alerta_Validar_Configuracao_Alerta_Existente
  • Arquivo BLL: UsuarioAlerta_P1.cs (no método ValidarConfiguracaoAlertaExistente)
  • Parâmetros SQL: @Idf_Usuario_Alerta, @Idf_Alerta, @Des_Email_Destinatario, @Ls_Idf_Alerta, @Ls_Des_Email_Destinatario
  • Propósito: Valida se já existe uma configuração de alerta para o e-mail e alerta informados.
  • SP: TAB_SP_Usuario_Alerta_Delete
  • Arquivo BLL: UsuarioAlerta_P1.cs (no método Delete)
  • Parâmetros SQL: @Idf_Usuario_Alerta
  • Propósito: Exclui uma configuração de alerta de usuário.
  • SP: TAB_SP_Usuario_Alerta_Save
  • Arquivo BLL: UsuarioAlerta_P1.cs (no método Save)
  • Parâmetros SQL: @Idf_Usuario_Alerta, @Idf_Alerta, @Nme_Destinatario, @Des_Email_Destinatario, @Flag_Mensal, @Num_Dia_Mes, @Flag_Semanal_Segunda, @Flag_Semanal_Terca, @Flag_Semanal_Quarta, @Flag_Semanal_Quinta, @Flag_Semanal_Sexta, @Flag_Semanal_Sabado, @Flag_Semanal_Domingo, @Flag_Inativo, @Idf_Usuario_Cadastro, @Dta_Cadastro, @Idf_Usuario_Alteracao, @Dta_Alteracao
  • Propósito: Salva (insere ou atualiza) uma configuração de alerta de usuário.

Alerta_P1.cs e Alerta_P2.cs

  • SP: plataforma.TAB_SP_Alerta_Busca_Componente_Paginado
  • Arquivo BLL: Alerta_P1.cs (no método BuscaComponentePaginado)
  • Parâmetros SQL: @Num_Inicio, @Num_Fim, @Nme_Coluna_Ordenacao, @Cod_Direcao_Ordenacao, @Num_Total_Registro, @Des_Filtro, @Idf_Tipo_Alerta, @Ls_Idf_Alerta
  • Propósito: Busca alertas paginados com filtros e ordenação, e filtrando por uma lista de IDs de alerta.

7.3. UserControls incluídos (.ascx)

  • Employer:ControlAlfaNumerico
  • Caminho: Não é um .ascx, é um controle customizado da biblioteca Employer.Componentes.UI.Web.
  • ID: txtNomeDestinatario, txtEmailDestinatario, txtPesquisa
  • Propriedades expostas: Width, Tipo, Obrigatorio, ValidationGroup, CssClassRegularExpression, MensagemErroObrigatorioSummary, MensagemErroFormatoSummary, MensagemErroValorMaximoSummary, MensagemErroValorMinimoSummary, ExpressaoRegular, Tamanho, CssClassRangeValidator, CssClassRequiredField, CssClassTextBox.
  • Employer:ListaSugestoes
  • Caminho: Não é um .ascx, é um controle customizado da biblioteca Employer.Componentes.UI.Web.
  • ID: lsPeriodicidade, lsEnvioAtivado
  • Propriedades expostas: Obrigatorio, ValidationGroup, MensagemErroObrigatorio, MensagemErroObrigatorioSummary, MensagemErroInvalido, MensagemErroInvalidoSummary, TipoSugestao, ValorInt, ValorBooleano.
  • Eventos: OnValueChanged (para lsPeriodicidade).
  • Employer:ValorNumericoTextBox
  • Caminho: Não é um .ascx, é um controle customizado da biblioteca Employer.Componentes.UI.Web.
  • ID: txtDiaMesEnvioAlerta
  • Propriedades expostas: CasasDecimais, Width, ValorMinimo, ValorMaximo, Tamanho, Obrigatorio, ValidationGroup, CssClassRegularExpression, MensagemErroObrigatorioSummary, MensagemErroFormatoSummary, MensagemErroValorMaximoSummary, MensagemErroValorMinimoSummary, MensagemErroValorMaximo, MensagemErroValorMinimo, MensagemErroObrigatorio, ValorInteiro.
  • Employer:ControlCheckBox
  • Caminho: Não é um .ascx, é um controle customizado da biblioteca Employer.Componentes.UI.Web.
  • ID: ckbDiasSemanaEnvioAlertaSegunda a ckbDiasSemanaEnvioAlertaDomingo, ckbModalSelecionarDestinatario, ckbModalSelecionarAlerta
  • Propriedades expostas: Text, CssClass, Checked.
  • Eventos: OnCheckedChanged (para ckbModalSelecionarDestinatario, ckbModalSelecionarAlerta).
  • Employer:LocalizarAlerta
  • Caminho: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\UserControls\LocalizarAlerta.ascx (presumido pelo namespace Employer.Plataforma.Web.WebFoPag.UserControls e uso no aspx)
  • ID: txtAlerta
  • Propriedades expostas: Obrigatorio, ValidationGroup, Width, CssClassRegularExpression, TabIndex, MensagemErroObrigatorioSummary, MensagemErroFormatoSummary, MensagemErroInvalidoSummary, MensagemErroFormato, IdAlertaSelecionado.
  • Eventos: OnValorAlterado.

7.4. WebServices, APIs externas, filas

Não foram identificadas chamadas diretas a WebServices, APIs externas ou filas na análise do código fornecido.

8. Mensagens ao Usuário

  • “Nenhum destinatário foi adicionado. Para realizar a configuração do alerta, é necessário selecionar pelo menos um destinatário.” (Erro)
  • “Nenhum alerta foi adicionado. Para realizar a configuração do alerta, é necessário selecionar pelo menos um alerta.” (Erro)
  • “Para alerta configurado para a periodicidade ‘Diário’, obrigatoriamente deve ser marcado pelo menos um dia da semana. Favor verificar.” (Erro)
  • “Existem alertas adicionados que já foram configurados para o email do destinatário informado. Favor verificar.” (Erro)
  • “Usuário não tem permissão para executar essa operação!” (Aviso)
  • “Configuração de alerta realizada com sucesso.” (Aviso)
  • “Para adicionar, preencha o Nome e o E-mail do Destinatário.” (Aviso)
  • “Destinatário já foi adicionado.” (Aviso)
  • “Campo E-mail Destinatário deve conter o padrão seuemail@seuprovedor.com.” (Aviso)
  • “Destinatário adicionado com sucesso.” (Aviso)
  • “Selecione o destinatário que deve ser excluído.” (Aviso)
  • “Preencher Alerta.” (Aviso)
  • “Alerta já foi adicionado.” (Aviso)
  • “Alerta adicionado com sucesso” (Aviso)
  • “Selecione o Alerta que deve ser excluído.” (Aviso)
  • “Configuração de alerta excluído com sucesso” (Aviso)

9. Permissões e Perfis

  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ConfiguracaoAlertas.VisualizarConfiguracaoAlertas:
  • Controla o acesso à tela. Se o usuário não possuir, é redirecionado.
  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ConfiguracaoAlertas.SalvarConfiguracaoAlertas:
  • Controla a habilitação do botão “Salvar”.
  • Verificada antes de executar a operação de salvar.
  • Employer.Plataforma.BLL.Enumeradores.Permissoes.ConfiguracaoAlertas.ExcluirConfiguracaoAlertas:
  • Controla a visibilidade do botão de exclusão na grid de alertas configurados.
  • Verificada antes de executar a operação de excluir.

10. Aprofundamento — Detalhes Internos de Métodos

A leitura do arquivo Util.cs foi concluída. O segundo bloco de 500 linhas (start_line = 1501, end_line = 2000) retornou vazio porque o arquivo tem apenas 1456 linhas.

Agora tenho o conteúdo completo de todas as classes solicitadas. Vou processar essas informações e gerar a documentação detalhada para cada uma delas.


Employer.Plataforma.Web.Code.UIHelper

Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.Code\UIHelper.cs

Métodos

MétodoAssinaturaPropósito
RecuperarMensagemErroSqlpublic static string RecuperarMensagemErroSql(Type Constraints, Type Indexes, Type PrimaryKeys, ResourceManager resource, SqlException ex, out string mensagem)Recupera uma mensagem de erro SQL amigável a partir de um SqlException, mapeando-a para recursos de string com base em nomes de constraints, índices ou chaves primárias.
LimparSessionpublic static void LimparSession(HttpSessionState session, StateBag viewState, Type EnumType)Move valores temporários da Session para o ViewState e os remove da Session, com base em um EnumType que define as chaves.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, IDataReader DataSource, string DataValueField, string DataTextField)Preenche um componente ListaSugestoes com dados de um IDataReader.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, DataTable DataSource, string DataValueField, string DataTextField)Preenche um componente ListaSugestoes com dados de um DataTable.
CarregarListaSugestaopublic static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, Dictionary<string, string> Dicionario)Preenche um componente ListaSugestoes com dados de um Dictionary<string, string>.
CarregarGridViewpublic static void CarregarGridView(GridView gv, IDataReader dataSource)Carrega dados de um IDataReader em um GridView e descarta o IDataReader.
CarregarGridViewpublic static void CarregarGridView(GridView gv, DataTable dataSource)Carrega dados de um DataTable em um GridView e descarta o DataTable.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, DataTable dataSource, int itemCount)Carrega dados de um DataTable em um EmployerGrid, define a contagem de itens simulada e descarta o DataTable.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, IDataReader dataSource, int itemCount)Carrega dados de um IDataReader em um DataTable temporário, depois em um EmployerGrid, define a contagem de itens simulada e descarta o IDataReader.
CarregarGridViewpublic static void CarregarGridView(GridView gv, Dictionary<string, string> Dicionario)Carrega dados de um Dictionary<string, string> em um GridView.
CarregarGridViewpublic static void CarregarGridView(GridView gv, Dictionary<int, string> Dicionario)Carrega dados de um Dictionary<int, string> em um GridView.
CarregarGridViewpublic static void CarregarGridView(EmployerGrid gv, int itemCount, List<object> dados)Carrega uma lista de objetos em um EmployerGrid e define a contagem de itens simulada.
CarregarDataListpublic static void CarregarDataList(DataList dl, IDataReader dataSource)Carrega dados de um IDataReader em um DataList e descarta o IDataReader.
CalculaPaginacaopublic static void CalculaPaginacao(out int inicio, out int fim, EmployerGrid grid)Calcula os índices de início e fim para paginação com base na página atual e tamanho da página de um EmployerGrid.
CarregarRepeaterpublic static void CarregarRepeater<T>(Repeater rep, T dataSource)Carrega dados em um Repeater e descarta o dataSource se for IDisposable.
CarregarDropDownListpublic static void CarregarDropDownList(DropDownList ddl, IDataReader DataSource, string DataValueField, string DataTextField)Preenche um DropDownList com dados de um IDataReader e descarta o IDataReader.
RecuperarComponenteFilhoprivate static WebControl RecuperarComponenteFilho(WebControl controle)Percorre os controles filhos de um WebControl para encontrar um controle com ID “txtValor”.
RecuperarComponenteFilhoprivate static WebControl RecuperarComponenteFilho(Telefone controle, out WebControl controleDDD)Percorre os controles filhos de um controle Telefone para encontrar os controles “txtFone” e “txtDDD”.
AjustarStringpublic static string AjustarString(string entrada)Ajusta uma string removendo espaços extras, capitalizando a primeira letra de cada palavra (exceto preposições e algumas siglas), e tratando números romanos.
FormatarPrimeiraMaisculaprivate static string FormatarPrimeiraMaiscula(string entrada)Formata uma string para que a primeira letra de cada palavra seja maiúscula e o restante minúscula.
SetImagemOrdenacaopublic static void SetImagemOrdenacao(int indiceColuna, GridViewRow headerRow, string direcaoOrdenacao)Adiciona uma imagem de ordenação (ascendente ou descendente) ao cabeçalho de uma coluna de um GridView.
GetIndiceColunaOrdenarpublic static int GetIndiceColunaOrdenar(GridView gv, string colunaOrdenacao)Retorna o índice da coluna em um GridView com base na expressão de ordenação.
RetornarMensagempublic static string RetornarMensagem(ResourceManager resource, string idMsg)Retorna uma mensagem de um ResourceManager com base em um ID. Se a mensagem não for encontrada, retorna uma mensagem de erro genérica.
RedimensionaFormataTextoStringpublic static void RedimensionaFormataTextoString(ref string str, int p)Redimensiona e formata uma string, convertendo para maiúsculas, removendo caracteres especiais e acentos, e preenchendo com espaços se for menor que o tamanho especificado.
RemoveCaracteresEspeciaispublic static string RemoveCaracteresEspeciais(string str)Remove caracteres especiais de uma string, exceto ’/’ e ’@’, e trata ‘º’ para ‘o’.
RemoverAcentospublic static string RemoverAcentos(string texto)Remove acentos de uma string.
ValidateFocuspublic static void ValidateFocus(WebControl controle)Registra um script JavaScript para focar no primeiro campo inválido de um grupo de validação.
PrevenirDuploClickpublic static void PrevenirDuploClick(WebControl control, Page page)Adiciona um atributo onclick a um controle para desabilitá-lo após o primeiro clique, prevenindo duplo clique.
PrevenirDuploClickpublic static void PrevenirDuploClick(WebControl control, Page page, String validationGroup = null)Adiciona um atributo onclick a um controle para desabilitá-lo após o primeiro clique, executando a validação do lado do cliente antes de bloquear o botão.
LoadListaSugestoespublic static void LoadListaSugestoes(Page pag, Employer.Plataforma.Web.Componentes.ListaSugestoes ls, Dictionary<string, string> dic, string sDefault)Carrega e mantém o estado de um componente ListaSugestoes com um dicionário de valores.
LoadListaSugestoespublic static void LoadListaSugestoes(Page pag, Employer.Plataforma.Web.Componentes.ListaSugestoes ls, IDataReader DataSource, string DataValueField, string DataTextField, string sDefault)Carrega e mantém o estado de um componente ListaSugestoes com dados de um IDataReader.
ValidaChavesSessionpublic static bool ValidaChavesSession()Verifica se as chaves “CentroServico” e “CodigoUsuario” existem na Session do HttpContext.Current.
TrataErroReportViewerpublic static bool TrataErroReportViewer(HttpContext ctx)Trata erros de sessão expirada no ReportViewer, redirecionando para a página de login.
ConfiguraNomenclaturaCampopublic static void ConfiguraNomenclaturaCampo(Control control, string nomeCampo, bool bMensagensErro)Configura as mensagens de erro de validação ou o texto de um controle com base no nomeCampo.
SetPropertyIfExistsprivate static void SetPropertyIfExists(object obj, string propertyName, object value)Define o valor de uma propriedade em um objeto se a propriedade existir e for gravável.
ConfiguraNomenclaturaGridpublic static void ConfiguraNomenclaturaGrid(EmployerGrid grid, string nomePesquisa, string nomeCampo)Altera o HeaderText de uma coluna em um EmployerGrid se o HeaderText atual corresponder a nomePesquisa.

Detalhamento de Métodos Importantes

RecuperarMensagemErroSql(Type Constraints, Type Indexes, Type PrimaryKeys, ResourceManager resource, SqlException ex, out string mensagem)

  • Lógica:
    1. Itera sobre os valores de um Enum que representa Constraints.
    2. Para cada valor, obtém o nome da Constraint.
    3. Verifica se a mensagem da SqlException (ex.Message) contém o nome da Constraint.
    4. Se encontrar, recupera a mensagem correspondente do ResourceManager usando o prefixo ”_” + o valor numérico da Constraint e retorna o valor numérico como string.
    5. Se não encontrar em Constraints, repete o processo para Indexes.
    6. Se não encontrar em Indexes, repete o processo para PrimaryKeys.
    7. Se não encontrar em nenhum dos Enums, define a mensagem de saída como a string de recurso para “_300003” e retorna “_3003”.
  • Stored Procedures chamadas: Nenhuma (lógica de tratamento de erro, não de acesso a dados).
  • Validações: Nenhuma.
  • Regras de negócio: Mapeamento de erros SQL genéricos para mensagens de erro amigáveis ao usuário, baseadas em recursos de string.

LimparSession(HttpSessionState session, StateBag viewState, Type EnumType)

  • Lógica:
    1. Obtém um array com os nomes das chaves definidas no EnumType.
    2. Itera por cada chave no array.
    3. Para cada chave, verifica se existe um valor correspondente na session.
    4. Se existir, adiciona esse valor ao viewState com a mesma chave.
    5. Remove o valor da session.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Gerenciamento de estado temporário entre requisições, movendo dados da sessão para o viewstate para persistência durante postbacks e limpando a sessão.

CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, IDataReader DataSource, string DataValueField, string DataTextField)

  • Lógica:
    1. Cria um novo Dictionary<string, string> chamado valores.
    2. Se DataSource não for nulo:
  • Enquanto houver registros para ler no DataSource:
  • Adiciona uma entrada ao dicionário valores, onde a chave é o valor do DataValueField (trimado) e o valor é o valor do DataTextField.
  1. Atribui o dicionário valores à propriedade Dicionario do componente ListaSugestoes.
  2. Chama Lista.DataBind() para vincular os dados.
  3. Se DataSource não for nulo, chama DataSource.Dispose() para liberar recursos.
  • Stored Procedures chamadas: Nenhuma (recebe um IDataReader já preenchido).
  • Validações: Nenhuma.
  • Regras de negócio: Nenhuma.

CarregarGridView(EmployerGrid gv, DataTable dataSource, int itemCount)

  • Lógica:
    1. Define a propriedade MockItemCount do EmployerGrid com o valor de itemCount.
    2. Atribui o dataSource à propriedade DataSource do EmployerGrid.
    3. Chama gv.DataBind() para vincular os dados.
    4. Se dataSource não for nulo, chama dataSource.Dispose() para liberar recursos.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Nenhuma.

AjustarString(string entrada)

  • Lógica:
    1. Remove espaços em branco no início e fim da string (entrada.Trim()).
    2. Substitui múltiplas ocorrências de dois espaços por um único espaço em um loop while.
    3. Chama FormatarPrimeiraMaiscula(entrada) para capitalizar a primeira letra de cada palavra.
    4. Substitui preposições e artigos comuns (ex: ” De ”, ” E ”, ” Do ”) para suas versões em minúsculas.
    5. Tratativa Números Romanos:
  • Divide a string em palavras.
  • Se houver mais de uma palavra, itera sobre elas.
  • Se uma palavra (em maiúsculas) corresponder a um número romano específico (II, III, IV, VI, VII, VIII, IX, XI, XII, XIII, XIV, XV, XVI, XVII, XVIII, XIX, XX), mantém a palavra em sua forma original (maiúsculas).
  • Reconstrói a string com as palavras ajustadas.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Padronização de strings para exibição, garantindo formatação consistente de nomes e textos.

PrevenirDuploClick(WebControl control, Page page, String validationGroup = null)

  • Lógica:
    1. Verifica se um validationGroup foi fornecido.
    2. Se validationGroup for nulo ou vazio:
  • Adiciona um atributo onclick ao controle que executa Page_ClientValidate() (validação de cliente padrão). Se a validação for bem-sucedida, desabilita o botão (this.disabled = true;), executa o postback e retorna false para cancelar o evento padrão do clique.
  1. Se validationGroup for fornecido:
  • Adiciona um atributo onclick ao controle que executa Page_ClientValidate('validationGroup') (validação de cliente para um grupo específico). Se a validação for bem-sucedida, desabilita o botão (this.disabled = true;), executa o postback e retorna false.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Utiliza validação de cliente (Page_ClientValidate) antes de desabilitar o botão.
  • Regras de negócio: Prevenção de submissões duplicadas de formulários, melhorando a experiência do usuário e a integridade dos dados.

TrataErroReportViewer(HttpContext ctx)

  • Lógica:
    1. Verifica se ctx ou ctx.Server são nulos. Se sim, retorna false.
    2. Obtém o último erro do servidor (ctx.Server.GetLastError()). Se não houver erro, retorna false.
    3. Tenta obter a exceção base.
    4. Se a exceção base for do tipo Microsoft.Reporting.WebForms.AspNetSessionExpiredException:
  • Limpa o erro do servidor (ctx.Server.ClearError()).
  • Redireciona o usuário para a URL de login, incluindo a URL original como ReturnUrl.
  • Retorna true indicando que o erro foi tratado.
  1. Em caso de qualquer outra exceção durante o tratamento, registra o erro usando Employer.PlataformaLog.LogError.WriteLog(exx).
  2. Se o erro não for de sessão expirada do ReportViewer, retorna false.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Tratamento específico para erros de sessão expirada em relatórios, garantindo que o usuário seja redirecionado corretamente para o login.

Employer.Plataforma.BLL.Usuario

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs

Métodos

MétodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Prepara uma lista de parâmetros SQL para operações de insert e update.
LoadDataReaderprivate static IDataReader LoadDataReader(int usuario)Retorna um IDataReader com os dados de um usuário específico pelo seu ID.
LoadDataReaderprivate static IDataReader LoadDataReader(int usuario, SqlTransaction trans)Retorna um IDataReader com os dados de um usuário específico pelo seu ID, dentro de uma transação.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada de usuários, com ordenação.
LoadObjectpublic static Usuario LoadObject(int usuario)Retorna uma instância de Usuario a partir do banco de dados pelo seu ID.
LoadObjectpublic static Usuario LoadObject(int usuario, SqlTransaction trans)Retorna uma instância de Usuario a partir do banco de dados pelo seu ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa os atributos de uma instância de Usuario a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa os atributos de uma instância de Usuario a partir do banco de dados, dentro de uma transação.
Salvarpublic void Salvar(PessoaFisica objPessoaFisica)Salva um objeto Usuario e seu PessoaFisica associado em uma transação, integrando com fila de cálculo e auditoria.
Salvarpublic void Salvar(PessoaFisica objPessoaFisica, SqlTransaction trans)Salva um objeto Usuario e seu PessoaFisica associado usando uma transação existente.
SalvarAuditoriaprivate static void SalvarAuditoria(Usuario auditoria, SqlTransaction trans = null, bool ehDelete = false, AtividadeAuditoriaDTO atividade = null)Registra eventos de auditoria (insert, update, delete, inativação, ativação) para a entidade Usuario.
CompletarInformacoesAuditoriaprivate static void CompletarInformacoesAuditoria(Usuario usuario, Usuario atual = null, bool consultarDescricaoReferencia = true)Completa informações de auditoria para um objeto Usuario, incluindo PessoaFisica e PerfilPrincipal.
Insertprivate void Insert()Insere uma nova instância de Usuario no banco de dados, incluindo a criação de UsuarioPerfil e PeriodoPermissao.
Insertprivate void Insert(SqlTransaction trans)Insere uma nova instância de Usuario no banco de dados, dentro de uma transação, incluindo a criação de UsuarioPerfil e PeriodoPermissao.
Savepublic void Save(bool auditar = true)Salva uma instância de Usuario (insert ou update) e opcionalmente audita a operação.
Savepublic void Save(SqlTransaction trans)Salva uma instância de Usuario (insert ou update) dentro de uma transação e audita a operação.
Deletepublic static void Delete(int usuario)Exclui um usuário do banco de dados pelo seu ID.
Deletepublic static void Delete(int usuario, SqlTransaction trans)Exclui um usuário do banco de dados pelo seu ID, dentro de uma transação.
Deletepublic static void Delete(List<Usuario> usuario)Exclui uma lista de usuários do banco de dados.
Updateprivate void Update(bool auditar = true)Atualiza uma instância de Usuario no banco de dados e opcionalmente audita a operação.
Updateprivate void Update(SqlTransaction trans)Atualiza uma instância de Usuario no banco de dados, dentro de uma transação.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Preenche uma lista de parâmetros SQL com os valores dos atributos da instância de Usuario.
ExisteCPFpublic static Boolean ExisteCPF(decimal numCPF)Verifica se existe um usuário com o CPF informado.
RecuperarPorCPFpublic static Usuario RecuperarPorCPF(decimal numCPF)Recupera uma instância de Usuario a partir do banco de dados pelo CPF.
CarregarObjetoCPFpublic static Usuario CarregarObjetoCPF(string CPFUsuario)Carrega uma instância de Usuario a partir do banco de dados pelo CPF.
CarregarObjetoCPFpublic static bool CarregarObjetoCPF(string CPFUsuario, out Usuario objUsuario)Carrega uma instância de Usuario a partir do banco de dados pelo CPF, retornando um booleano indicando se o usuário existe.
ListarPorCPFNomeParcialAutoCompletepublic static Dictionary<int, String> ListarPorCPFNomeParcialAutoComplete(string valor, int count)Lista usuários por CPF ou nome parcial para autocomplete.
CarregarPermissoespublic static List<int> CarregarPermissoes(Usuario usuario, Enumeradores.CategoriaPermissao categoria)Retorna uma lista de IDs de permissões que um usuário possui em uma categoria específica.
RelatorioUsuarioSistemapublic static IList<RelatorioUsuarioSistemaDto> RelatorioUsuarioSistema(int? idUsuario, int? pInativo)Gera um relatório de usuários do sistema, incluindo CPF, nome, e-mail, celular, apelido, status e perfil.
ListaAgrupamentoUsuariopublic static List<RelatorioUsuarioSistemaDto> ListaAgrupamentoUsuario(List<decimal> lsCpfUsuario)Retorna uma lista de DTOs de agrupamento de usuário com base em uma lista de CPFs.
FormataCelularprivate static string FormataCelular(DbDataReader dr)Formata o número de celular lido de um DbDataReader.
RetornaQuantidadeUsuariospublic static int RetornaQuantidadeUsuarios(bool? bInternos, bool bAtivos, SqlTransaction tran = null)Retorna a quantidade de usuários ativos ou inativos, opcionalmente filtrando por usuários internos.
CarregarPermissoespublic static Dictionary<int, int> CarregarPermissoes(int _idfUsuario)Retorna um dicionário de permissões (Idf_Permissao, Idf_Categoria_Permissao) para um usuário.
TemPermissaopublic static bool TemPermissao(int IdfUsuario, Enum IdfPermissao, Enumeradores.Sistema sistema)Verifica se um usuário tem uma permissão específica em um determinado sistema.
TemPermissaopublic static bool TemPermissao(int IdfUsuario, Enum IdfPermissao, Enumeradores.Sistema sistema, SqlTransaction tran)Verifica se um usuário tem uma permissão específica em um determinado sistema, dentro de uma transação.
CarregarPermissoespublic static Dictionary<int, int> CarregarPermissoes(int IdfUsuario, Enumeradores.Sistema sistema)Retorna um dicionário de permissões (Idf_Permissao, Idf_Categoria_Permissao) para um usuário em um sistema específico.
ListarPorCodNomeParcialpublic static IDataReader ListarPorCodNomeParcial(string cpf, string nome)Lista usuários por CPF ou nome parcial, retornando um IDataReader.
ListarPerfilPorUsuariopublic static IDataReader ListarPerfilPorUsuario(int idUsuario, DateTime periodo)Lista os perfis de um usuário para um determinado período.
ListarPerfilPorUsuarioSistemapublic static IDataReader ListarPerfilPorUsuarioSistema(int idUsuario, DateTime periodo, string direcaoOrdenacao, int Idf_Sistema)Lista os perfis de um usuário para um determinado período e sistema, com ordenação.
Listarpublic static List<Usuario> Listar()Retorna uma lista de todos os usuários.
Listarpublic static DataTable Listar(string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Lista usuários de forma paginada, com ordenação.
Listarpublic static SqlDataReader Listar(List<int> pLstIdUsuario, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista usuários de forma paginada, filtrando por uma lista de IDs de usuário.
ListarUsuariosCadastradosFiltropublic static SqlDataReader ListarUsuariosCadastradosFiltro(string pNome, string pCpf, string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, int? lsExibir, out int totalRegistros)Lista usuários cadastrados com filtros de nome, CPF e status, de forma paginada.
ListarPermissoesPorUsuariopublic static IDataReader ListarPermissoesPorUsuario(string pesquisa, int idUsuario, string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Lista as permissões de um usuário com filtro de pesquisa, ordenação e paginação.
ListarPermissoesDeVisualizacaoRelatorioESocialPorUsuariopublic static List<PermissaoTipoInscricaoESocial> ListarPermissoesDeVisualizacaoRelatorioESocialPorUsuario(int idUsuario)Retorna uma lista de permissões de visualização de relatório eSocial por tipo de inscrição para um usuário.
ListarCPFspublic static List<decimal> ListarCPFs()Retorna uma lista de todos os CPFs de usuários.
SetInstanceprivate static bool SetInstance(IDataReader dr, Usuario objUsuario, bool bDispose = true)Preenche os atributos de uma instância de Usuario a partir de um IDataReader.
GetNomeCPFpublic static string GetNomeCPF(Int64 idfUsuario)Retorna uma string formatada com o ID e CPF de um usuário.
RelatorioUsuariosPorPerfilpublic static void RelatorioUsuariosPorPerfil(int pIdPerfil, List<ReportParameter> param, List<ReportDataSource> dsT)Preenche uma lista de parâmetros e fontes de dados para um relatório de usuários por perfil.
CarregarUsuariosFilaAtualizcaoPontopublic static DataTable CarregarUsuariosFilaAtualizcaoPonto(int numeroTentativas)Retorna um DataTable com usuários na fila de atualização de ponto que não excederam o número de tentativas.
VerificarFiliaisPontopublic static Dictionary<int, int> VerificarFiliaisPonto(decimal cpfUsuario, SqlTransaction trans)Verifica as filiais às quais um usuário tem permissão no sistema de ponto.
ExibirNomeFormatContaPagarpublic static string ExibirNomeFormatContaPagar(int idUsuario)Retorna o nome formatado de um usuário para exibição em contas a pagar.
RecuperarFiliaisQueUsuarioTemAcessopublic static DataTable RecuperarFiliaisQueUsuarioTemAcesso(int idfUsuario, int idEmpresa)Retorna um DataTable com as filiais às quais um usuário tem acesso em uma empresa específica.
CarregarPermissaoTelapublic static DataTable CarregarPermissaoTela(Usuario usuario, Enumeradores.CategoriaPermissao categoria)Retorna um DataTable com as permissões de uma tela e o status de acesso do usuário.
AjustarUltimaEmpresaLogadapublic static void AjustarUltimaEmpresaLogada(int idfUsuario)Ajusta a última empresa logada de um usuário se ele não tiver mais acesso a ela.
PossuiAcessopublic static bool PossuiAcesso(int idfUsuario, int idfEmpresa)Verifica se um usuário possui acesso a uma empresa específica.
ValidaPerfilPrincipalpublic static bool ValidaPerfilPrincipal(int idfUsuario)Valida se o perfil principal de um usuário não é um perfil de “senha master”.
PerfilUsuarioSistemaSenhaMasterpublic static bool PerfilUsuarioSistemaSenhaMaster(int idUsuario, DateTime periodo, int Idf_Sistema)Verifica se um usuário possui um perfil de “senha master” em um sistema e período específicos.
FilialPadraoDoUsuarioPorEmpresapublic static int? FilialPadraoDoUsuarioPorEmpresa(int idfUsuario, int idfEmpresa)Retorna o ID da filial padrão de um usuário em uma empresa, se ele tiver acesso a apenas uma.
CarregarIdentificacaoUsuariopublic static string CarregarIdentificacaoUsuario(int idUsuario)Retorna a identificação de um usuário (nome da pessoa física ou CPF formatado).

Detalhamento de Métodos Importantes

Salvar(PessoaFisica objPessoaFisica)

  • Lógica:
    1. Abre uma nova conexão SQL e inicia uma transação.
    2. Tenta salvar o objeto objPessoaFisica (que pode ser um insert ou update) usando a transação.
    3. Associa o objPessoaFisica à propriedade PessoaFisica da instância atual de Usuario.
    4. Salva a instância atual de Usuario (insert ou update) usando a transação.
    5. Comita a transação.
    6. Envia para a fila de cálculo (FilaCalculoTransactionSingleton.EnviarParaCalculo).
    7. Integra com o sistema de auditoria (AuditoriaEventMapTransaction.IntegrarAuditoriaEventMap).
    8. Em caso de erro, faz rollback da transação, remove da fila de cálculo e da auditoria, e relança a exceção.
  • Stored Procedures chamadas:
    • SPINSERT (para Usuario se não persistido)
    • SPUPDATE (para Usuario se persistido)
    • PessoaFisica.Save() (chama SPs internas de PessoaFisica)
    • UsuarioPerfil.Save() (chama SPs internas de UsuarioPerfil)
    • PeriodoPermissao.Save() (chama SPs internas de PeriodoPermissao)
  • Validações: Nenhuma explícita neste método, mas as chamadas a Save() de PessoaFisica, UsuarioPerfil e PeriodoPermissao podem conter validações internas.
  • Regras de negócio: Garante a consistência transacional ao salvar dados de usuário e pessoa física, além de integrar com módulos de cálculo e auditoria.

SalvarAuditoria(Usuario auditoria, SqlTransaction trans = null, bool ehDelete = false, AtividadeAuditoriaDTO atividade = null)

  • Lógica:
    1. Verifica se a auditoria está habilitada (GlobalSettingsSingleton.AuditoriaHabilitada). Se não, retorna.
    2. Determina o tipo de ação de auditoria (OperacaoEventoMap.Delete, Insert, Update, Inativacao, Ativacao) com base no parâmetro ehDelete e na mudança do FlagInativo.
    3. Se a ação não for Delete, chama CompletarInformacoesAuditoria para preencher dados adicionais do objeto Usuario.
    4. Cria um objeto AuditoriaQueue com os detalhes da operação, incluindo o estado anterior (PreUpdateAuditoria), o estado atual, IDs, descrição de referência, tipo de evento, campos a ignorar, mapeamento de objetos e se é transacional.
    5. Adiciona o AuditoriaQueue à instância do MongoAcessLayer.
    6. Se houver uma transação SQL, adiciona o AuditoriaQueue à transação de auditoria do MongoAcessLayer.
    7. Em caso de exceção, registra o erro no log.
    8. No bloco finally, limpa as propriedades PreUpdateAuditoria da instância de Usuario e de seus objetos relacionados (PessoaFisica, LoginUsuario) para evitar vazamento de dados entre auditorias.
  • Stored Procedures chamadas: Nenhuma (interage com MongoAcessLayer para auditoria).
  • Validações: Verifica GlobalSettingsSingleton.AuditoriaHabilitada.
  • Regras de negócio: Implementa a lógica de auditoria para a entidade Usuario, registrando as alterações no sistema de log e no MongoDB.

Insert()

  • Lógica:
    1. Obtém uma lista de parâmetros SQL chamando GetParameters().
    2. Preenche esses parâmetros com os valores da instância atual de Usuario chamando SetParameters().
    3. Abre uma nova conexão SQL e inicia uma transação.
    4. Tenta executar o comando SPINSERT para inserir o usuário.
    5. Recupera o Idf_Usuario gerado automaticamente (SCOPE_IDENTITY()) e atribui à propriedade _idUsuario.
    6. Limpa os parâmetros do comando.
    7. Gerenciamento de Perfil:
  • Tenta carregar um UsuarioPerfil existente para o _idUsuario e _perfilPrincipal.IdPerfil.
  • Se não existir, cria um novo UsuarioPerfil, associa o Usuario e Perfil, e o salva na transação.
  1. Gerenciamento de Período de Permissão:
  • Obtém a data e hora atual.
  • Tenta carregar um PeriodoPermissao existente para o _idUsuario, _perfilPrincipal.IdPerfil e a data atual.
  • Se existir, define DataFim como nulo e o salva na transação (reabrindo o período).
  • Se não existir, cria um novo PeriodoPermissao, define DataInicio como a data atual, associa o UsuarioPerfil e o salva na transação.
  1. Define _persisted como true e _modified como false.
  2. Comita a transação.
  3. Integra com o sistema de auditoria (AuditoriaEventMapTransaction.IntegrarAuditoriaEventMap).
  4. Em caso de erro, faz rollback da transação, remove da auditoria e relança a exceção.
  • Stored Procedures chamadas:
    • SPINSERT (constante interna da classe)
    • UsuarioPerfil.CarregarPorUsuarioPerfil (método estático)
    • UsuarioPerfil.Save (método de instância)
    • PeriodoPermissao.CarregarPorUsuarioPerfilPeriodo (método estático)
    • PeriodoPermissao.Save (método de instância)
  • Validações: Nenhuma explícita neste método, mas as chamadas a Save() de UsuarioPerfil e PeriodoPermissao podem conter validações internas.
  • Regras de negócio: Garante a criação correta de um novo usuário, associando-o ao seu perfil principal e definindo o período de permissão inicial, tudo dentro de uma transação para atomicidade.

CarregarPermissoes(Usuario usuario, Enumeradores.CategoriaPermissao categoria)

  • Lógica:
    1. Inicializa uma List<int> vazia para armazenar os IDs das permissões.
    2. Cria uma lista de SqlParameter.
    3. Adiciona dois parâmetros: @Idf_Categoria_Permissao (com o valor da categoria convertida para int) e @Idf_Usuario (com o ID do usuário).
    4. Executa a consulta SQL definida em SPSELECTPERMISSOESUSUARIO usando DataAccessLayer.ExecuteReader.
    5. Enquanto houver registros para ler no IDataReader:
  • Adiciona o valor da coluna “Permissao” (convertido para int) à lista permissoes.
  1. Fecha e descarta o IDataReader.
  2. Retorna a lista de permissoes.
  • Stored Procedures chamadas: SPSELECTPERMISSOESUSUARIO (constante interna da classe).
  • Parâmetros SQL:
    • @Idf_Categoria_Permissao: int - ID da categoria de permissão.
    • @Idf_Usuario: int - ID do usuário.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Recupera todas as permissões ativas de um usuário para uma categoria específica, considerando os períodos de permissão.

ListarPermissoesPorUsuario(string pesquisa, int idUsuario, string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)

  • Lógica:
    1. Inicializa uma lista de SqlParameter com os parâmetros de paginação, ID do usuário e pesquisa.
    2. Calcula os índices de início e fim para a paginação.
    3. Formata a string de ordenação (orderBy).
    4. Formata a consulta SQL SPSELPERMISSOES com a ordenação.
    5. Executa a consulta formatada usando DataAccessLayer.ExecuteReader.
    6. Lê o primeiro resultado (que contém a contagem total de registros) e atribui a totalRegistros.
    7. Avança para o próximo conjunto de resultados (que contém os dados paginados).
    8. Retorna o SqlDataReader com os dados das permissões.
  • Stored Procedures chamadas: SPSELPERMISSOES (constante interna da classe).
  • Parâmetros SQL:
    • @CurrentPage: int - Página atual.
    • @PageSize: int - Tamanho da página.
    • @Idf_Usuario: int - ID do usuário.
    • @Pesquisa: varchar - Termo de pesquisa.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma maneira paginada e filtrada de visualizar as permissões de um usuário, útil para interfaces de gerenciamento de permissões.

PossuiAcesso(int idfUsuario, int idfEmpresa)

  • Lógica:
    1. Verifica se idfUsuario ou idfEmpresa são menores ou iguais a zero. Se sim, retorna false.
    2. Define a consulta SQL CONSULTA que chama a função de tabela TAB_SF_Usuario_Acesso.
    3. Cria uma lista de SqlParameter para @Idf_Usuario e @Idf_Empresa.
    4. Executa a consulta usando DataAccessLayer.ExecuteScalar para obter a contagem de registros.
    5. Retorna true se a contagem for maior que zero, indicando que o usuário tem acesso à empresa.
  • Stored Procedures chamadas: TAB_SF_Usuario_Acesso (função de tabela SQL).
  • Parâmetros SQL:
    • @Idf_Usuario: int - ID do usuário.
    • @Idf_Empresa: int - ID da empresa.
  • Validações: Verifica se os IDs são válidos.
  • Regras de negócio: Determina se um usuário tem permissão para acessar uma empresa específica, provavelmente verificando associações em tabelas de permissão.

Employer.Plataforma.BLL.UsuarioAlerta

Arquivos:

  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\UsuarioAlerta_P1.cs
  • C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\UsuarioAlerta_P2.cs

Métodos

MétodoAssinaturaPropósito
GetParametersprivate List<SqlParameter> GetParameters()Prepara uma lista de parâmetros SQL para operações de insert e update de UsuarioAlerta.
SetParametersprivate void SetParameters(List<SqlParameter> parms)Preenche uma lista de parâmetros SQL com os valores dos atributos da instância de UsuarioAlerta.
Insertprivate void Insert()Insere uma nova instância de UsuarioAlerta no banco de dados.
Insertprivate void Insert(SqlTransaction trans)Insere uma nova instância de UsuarioAlerta no banco de dados, dentro de uma transação.
Updateprivate void Update()Atualiza uma instância existente de UsuarioAlerta no banco de dados.
Updateprivate void Update(SqlTransaction trans)Atualiza uma instância existente de UsuarioAlerta no banco de dados, dentro de uma transação.
Savepublic void Save()Salva uma instância de UsuarioAlerta (insert ou update) no banco de dados.
Savepublic void Save(SqlTransaction trans)Salva uma instância de UsuarioAlerta (insert ou update) no banco de dados, dentro de uma transação.
Deletepublic static void Delete(int idAlertaUsuario)Exclui uma configuração de alerta de usuário pelo seu ID.
Deletepublic static void Delete(int idAlertaUsuario, SqlTransaction trans)Exclui uma configuração de alerta de usuário pelo seu ID, dentro de uma transação.
Deletepublic static void Delete(List<int> idAlertaUsuario)Exclui uma lista de configurações de alerta de usuário.
LoadDataReaderprivate static IDataReader LoadDataReader(int idAlertaUsuario)Retorna um IDataReader com os dados de uma configuração de alerta de usuário específica pelo seu ID.
LoadDataReaderprivate static IDataReader LoadDataReader(int idAlertaUsuario, SqlTransaction trans)Retorna um IDataReader com os dados de uma configuração de alerta de usuário específica pelo seu ID, dentro de uma transação.
LoadDataReaderpublic static IDataReader LoadDataReader(string colunaOrdenacao, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros)Retorna um IDataReader com uma consulta paginada de configurações de alerta de usuário, com ordenação.
LoadObjectpublic static UsuarioAlerta LoadObject(int idAlertaUsuario)Retorna uma instância de UsuarioAlerta a partir do banco de dados pelo seu ID.
LoadObjectpublic static UsuarioAlerta LoadObject(int idAlertaUsuario, SqlTransaction trans)Retorna uma instância de UsuarioAlerta a partir do banco de dados pelo seu ID, dentro de uma transação.
CompleteObjectpublic bool CompleteObject()Completa os atributos de uma instância de UsuarioAlerta a partir do banco de dados.
CompleteObjectpublic bool CompleteObject(SqlTransaction trans)Completa os atributos de uma instância de UsuarioAlerta a partir do banco de dados, dentro de uma transação.
SetInstanceprivate static bool SetInstance(IDataReader dr, UsuarioAlerta objUsuarioAlerta)Preenche os atributos de uma instância de UsuarioAlerta a partir de um IDataReader.
ListarAletarConfiguradospublic static SqlDataReader ListarAletarConfigurados(string pDescricaoPesquisa, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)Lista as configurações de alertas de usuário de forma paginada, com filtros e ordenação.
ValidarConfiguracaoAlertaExistentepublic static bool ValidarConfiguracaoAlertaExistente(int? pIdAlertaUsuario, int? pIdAlerta, string pDescricaoEmailDestinatario, List<int?> pLsIdAlerta, List<string> pLsDesEmailDestinatario)Verifica se já existe uma configuração de alerta para os parâmetros informados (ID do alerta, e-mail do destinatário, listas de IDs e e-mails).

Detalhamento de Métodos Importantes

SetParameters(List parms)

  • Lógica:
    1. Atribui os valores das propriedades da instância de UsuarioAlerta aos parâmetros SQL correspondentes na lista parms.
    2. Para campos opcionais (NumeroDiaMes, FlagSemanalSegunda a FlagSemanalDomingo), verifica se HasValue é verdadeiro. Se sim, atribui o valor; caso contrário, atribui DBNull.Value.
    3. Se a instância não estiver persistida (!_persisted):
  • Define a direção do primeiro parâmetro (@Idf_Alerta_Usuario) como Output (para receber o ID gerado).
  • Define _dataCadastro como a data e hora atual.
  1. Se a instância já estiver persistida:
  • Define a direção do primeiro parâmetro como Input.
  1. Cria uma nova instância de Usuario para _usuarioGerador usando o CodigoUsuario da sessão HTTP (ou 1 se a sessão for nula).
  2. Atribui o ID do _usuarioGerador e _dataCadastro aos seus respectivos parâmetros.
  • Stored Procedures chamadas: Nenhuma (preenche parâmetros para SPs).
  • Validações: Nenhuma explícita, mas a lógica de HasValue trata valores nulos para campos opcionais.
  • Regras de negócio: Mapeamento de objeto para parâmetros SQL, incluindo lógica para campos auto-incrementais e registro do usuário gerador e data de cadastro.

Save()

  • Lógica:
    1. Verifica se a instância de UsuarioAlerta já está persistida (_persisted).
    2. Se não estiver persistida, chama o método Insert() para inserir um novo registro.
    3. Se já estiver persistida, chama o método Update() para atualizar o registro existente.
  • Stored Procedures chamadas:
    • Insert() (chama SPINSERT)
    • Update() (chama SPUPDATE)
  • Validações: Nenhuma explícita neste método, mas os métodos Insert() e Update() podem conter validações internas.
  • Regras de negócio: Encapsula a lógica de persistência de um objeto UsuarioAlerta, decidindo entre inserção e atualização.

Delete(List idAlertaUsuario)

  • Lógica:
    1. Inicializa uma lista de SqlParameter e duas strings de consulta: query (para DELETE) e queryAux (para UPDATE do Idf_Usuario_Gerador).
    2. Itera sobre a lista de IDs de alerta de usuário (idAlertaUsuario).
    3. Para cada ID:
  • Cria um nome de parâmetro dinâmico (ex: “@parm0”, “@parm1”).
  • Adiciona o nome do parâmetro às strings query e queryAux, separando por vírgula se não for o primeiro.
  • Adiciona um novo SqlParameter com o nome e valor do ID à lista parms.
  1. Adiciona um parâmetro @Idf_Usuario_Gerador à lista parms com o ID do usuário logado na sessão.
  2. Concatena as strings queryAux e query para formar uma única consulta que primeiro atualiza o Idf_Usuario_Gerador e depois exclui os registros.
  3. Executa a consulta usando DataAccessLayer.ExecuteNonQuery.
  • Stored Procedures chamadas: Nenhuma (constrói a query SQL dinamicamente).
  • Parâmetros SQL:
    • @parmX: int - ID de cada alerta de usuário a ser excluído.
    • @Idf_Usuario_Gerador: int - ID do usuário que realizou a exclusão.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Permite a exclusão em massa de configurações de alerta de usuário, registrando o usuário que realizou a operação.

ListarAletarConfigurados(string pDescricaoPesquisa, string pNomeColuna, string pDirecaoOrdenacao, int pPaginaCorrente, int pTamanhoPagina, out int pTotalRegistros)

  • Lógica:
    1. Inicializa variáveis para parâmetros, queries paginadas e contagem, e calcula os índices de início e fim da paginação.
    2. Cria uma lista de SqlParameter e adiciona @Des_Pesquisa.
    3. Se pDescricaoPesquisa não for nulo ou vazio, atribui seu valor ao parâmetro; caso contrário, atribui DBNull.Value.
    4. Constrói a queryPaginada usando string.Format para inserir a coluna de ordenação, direção, a consulta SELLISTARALERTASCONFIGURADOS e os índices de paginação.
    5. Constrói a queryCount para obter o total de registros.
    6. Executa queryCount usando DataAccessLayer.ExecuteScalar para obter pTotalRegistros.
    7. Executa queryPaginada usando DataAccessLayer.ExecuteReader e retorna o SqlDataReader resultante.
  • Stored Procedures chamadas: Nenhuma (constrói a query SQL dinamicamente a partir de constantes internas).
  • Parâmetros SQL:
    • @Des_Pesquisa: varchar - Descrição para filtrar a pesquisa.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Fornece uma listagem paginada e filtrada das configurações de alertas, exibindo informações relevantes como descrição do alerta, status, tipo, destinatário e periodicidade.

ValidarConfiguracaoAlertaExistente(int? pIdAlertaUsuario, int? pIdAlerta, string pDescricaoEmailDestinatario, List<int?> pLsIdAlerta, List pLsDesEmailDestinatario)

  • Lógica:
    1. Inicializa uma lista de SqlParameter.
    2. Constrói a parte WHERE da query dinamicamente:
  • Se pLsIdAlerta tiver itens, adiciona uma condição AND UA.Idf_Alerta IN (...).
  • Caso contrário, se pIdAlerta tiver valor, adiciona AND UA.Idf_Alerta = @Idf_Alerta.
  • Se pLsDesEmailDestinatario tiver itens, adiciona uma condição AND UA.Des_Email_Destinatario IN (...).
  • Caso contrário, se pDescricaoEmailDestinatario não for vazio, adiciona AND UA.Des_Email_Destinatario LIKE @Des_Email_Destinatario.
  1. Adiciona os parâmetros @Idf_Alerta_Usuario, @Idf_Alerta e @Des_Email_Destinatario à lista parms, atribuindo DBNull.Value se os valores correspondentes forem nulos ou vazios.
  2. Executa a query construída usando DataAccessLayer.ExecuteScalar para obter a contagem de configurações de alerta existentes.
  3. Retorna true se a contagem for maior que zero (indicando que a configuração já existe), false caso contrário.
  • Stored Procedures chamadas: Nenhuma (constrói a query SQL dinamicamente a partir de constantes internas).
  • Parâmetros SQL:
    • @Idf_Alerta_Usuario: int - ID da configuração de alerta (usado para exclusão na validação de existência).
    • @Idf_Alerta: int - ID do alerta.
    • @Des_Email_Destinatario: varchar - E-mail do destinatário.
  • Validações: Verifica a existência de configurações de alerta duplicadas com base em uma combinação de alerta e e-mail do destinatário, permitindo exclusão do próprio registro em caso de edição.
  • Regras de negócio: Impede o cadastro de configurações de alerta duplicadas para o mesmo alerta e destinatário.

Employer.Plataforma.BLL.Util

Arquivo: C:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Util.cs

Métodos

MétodoAssinaturaPropósito
CamelCasepublic static string CamelCase(string texto)Converte uma string para o formato CamelCase, tratando preposições e algumas siglas.
ProximoDiaUtilpublic static DateTime? ProximoDiaUtil(DateTime? data, bool incremento, Estado estado, Cidade cidade)Retorna o próximo dia útil (ou anterior, se incremento for false) para um dado estado e cidade, considerando feriados.
ProximoDiaUtilpublic static DateTime? ProximoDiaUtil(DateTime? data, bool incremento, Estado estado, Cidade cidade, string connectionString)Retorna o próximo dia útil (ou anterior) para um dado estado e cidade, usando uma connection string específica.
ProximoDiaUtilpublic static DateTime? ProximoDiaUtil(DateTime data, bool incremento, Filial filial)Retorna o próximo dia útil (ou anterior) para uma filial específica, completando seus dados de endereço.
ProximoDiaUtilEspecificopublic static DateTime? ProximoDiaUtilEspecifico(DateTime? data, bool pIncremento, int? pIdEstado, int? pIdCidade, int? pIdEmpresa, int? pIdFilial, int? pIdContrato, int? pIdCentroResultado)Retorna o próximo dia útil (ou anterior) considerando feriados específicos de estado, cidade, empresa, filial, contrato e centro de resultado.
ProximoDiaUtilEspecificopublic static DateTime? ProximoDiaUtilEspecifico(DateTime? data, bool pIncremento, int? pIdEstado, int? pIdCidade, int? pIdEmpresa, int? pIdFilial, int? pIdContrato, int? pIdCentroResultado, bool blContemplaFDS)Retorna o próximo dia útil (ou anterior) considerando feriados específicos e se deve contemplar fins de semana.
Weekendpublic static bool Weekend(DateTime Date)Verifica se uma determinada data é um fim de semana (sábado ou domingo).
ProximoDiaUtilPorEmpregadospublic static DateTime ProximoDiaUtilPorEmpregados(List<int> lstEmpregados, DateTime dta, int IdEmpresa)Calcula o próximo dia útil com base nos empregados e empresa, buscando o estado e cidade dos empregados.
MesAnoCompetenciapublic static string MesAnoCompetencia(DateTime dtaCompetencia, string connectionString)Retorna o mês e ano de competência formatados (ex: “JAN/2023”) para uma data.
QuantidadeDiasUteisNaoUteisMespublic static int QuantidadeDiasUteisNaoUteisMes(DateTime dtaCompetencia, bool flgUteis, string connectionString)Calcula a quantidade de dias úteis ou não úteis em um mês de competência.
AliquotasInsspublic static string AliquotasInss(DateTime dta, string connectionString)Retorna uma string com as alíquotas de INSS vigentes para uma data, separadas por vírgula.
FaixaInsspublic static string FaixaInss(DateTime dta, string connectionString)Retorna uma string com as faixas de INSS (inicial e final) vigentes para uma data, separadas por vírgula.
MapearPropriedadesObjetopublic static void MapearPropriedadesObjeto(Type objTypeIn, object objIn, Type objTypeOut, object objOut)Mapeia propriedades de um objeto de origem para um objeto de destino com base nos nomes das propriedades.
SalarioMinimoNacionalpublic static string SalarioMinimoNacional(string connectionString)Retorna o valor do salário mínimo nacional vigente.
RecuperarCentroResultadoAnaliticopublic static string RecuperarCentroResultadoAnalitico(int? pIdCentroResultado, int pIdEmpresa)Recupera uma lista de IDs de centros de resultado analíticos para uso em queries.
DataTablePivotpublic static DataTable DataTablePivot(DataTable dt, DataColumn pivotColumn, List<KeyValuePair<DataColumn, string>> listPivotValues, object[] arrPivotColumnValues = null)Pivoteia uma DataTable com base em uma coluna e valores de agregação.
ValorPorExtensopublic static string ValorPorExtenso(decimal valor, Enumeradores.ValorExtenso TipoValor)Converte um valor decimal para sua representação por extenso em português, considerando tipo monetário ou porcentagem.
ValorPorExtensopublic static string ValorPorExtenso(long x)Converte um número inteiro para sua representação por extenso em português.
CalcularIdadepublic static int CalcularIdade(DateTime dtaNascimento)Calcula a idade de uma pessoa com base na data de nascimento.
ConvertToDataTablepublic static DataTable ConvertToDataTable<T>(IList<T> data)Converte uma lista de objetos genéricos para um DataTable.
ValidaPermissaoUsuariopublic static bool ValidaPermissaoUsuario(List<int> permissoes, int permissaoNecessaria)Verifica se uma lista de permissões contém uma permissão específica.
VerificarTagsMaliciosasWordpublic static bool VerificarTagsMaliciosasWord(Stream stream)Verifica se um documento Word (stream) contém tags maliciosas ou conteúdo oculto.
VerificarTagsMaliciosasExcelpublic static bool VerificarTagsMaliciosasExcel(Stream stream, string fileExtension)Verifica se um documento Excel (stream) contém tags HTML/JavaScript maliciosas.
ValidaImagempublic static bool ValidaImagem(Stream fileStream, string fileName)Realiza uma série de validações em um stream de imagem (assinatura, MIME type, imagem real, conteúdo malicioso).
VerificaMineImagemprivate static bool VerificaMineImagem(string fileName)Verifica se o MIME type de um arquivo de imagem é permitido (JPEG, PNG, GIF).
ValidaImagemComAssinaturaprivate static bool ValidaImagemComAssinatura(Stream fileStream)Valida a assinatura de bytes de um stream para verificar se é um formato de imagem válido.
ValidaImagemRealprivate static bool ValidaImagemReal(Stream fileStream)Tenta carregar um stream como imagem para verificar sua validade.
ValidaConteudoMaliciosoprivate static bool ValidaConteudoMalicioso(Stream fileStream)Verifica se um stream contém padrões de texto maliciosos (scripts, comandos).
ToEnumpublic static T? ToEnum<T>(this object texto) where T : structConverte um objeto (int ou string) para um tipo Enum nullable.
VerificarTagsMaliciosasPdfpublic static bool VerificarTagsMaliciosasPdf(Stream stream)Verifica se um documento PDF (stream) contém scripts JavaScript ou palavras-chave perigosas.
ValidaSQLMaliciosoprivate static bool ValidaSQLMalicioso(Stream stream)Valida se o conteúdo textual de um stream contém padrões típicos de SQL Injection.
ContarCasasDecimaispublic static int ContarCasasDecimais(decimal numero)Conta o número de casas decimais de um número decimal.
ValidaConteudoRequisicaopublic static bool ValidaConteudoRequisicao(Stream fileStream)Valida se o conteúdo de um stream de requisição contém SQL ou conteúdo malicioso.
NormalizarCPFpublic static string NormalizarCPF(string cpf)Normaliza uma string de CPF, removendo caracteres não numéricos e preenchendo com zeros à esquerda.
PossuiDiferencaCampospublic static bool PossuiDiferencaCampos(Dictionary<string, object> camposOriginais, Dictionary<string, object> camposAlterados)Verifica se há diferenças entre dois dicionários de campos.
EnumPossuiValorpublic static bool EnumPossuiValor<TEnum>(int valor) where TEnum : EnumVerifica se um valor inteiro é um membro definido de um tipo Enum.

Detalhamento de Métodos Importantes

ProximoDiaUtil(DateTime? data, bool incremento, Estado estado, Cidade cidade)

  • Lógica:
    1. Verifica se data tem valor. Se não, retorna null.
    2. Define uma query SQL que chama a função de tabela TAB_SF_ProximoDiaUtil.
    3. Cria uma lista de SqlParameter para @Data, @Incremento, @Idf_Estado e @Idf_Cidade.
    4. Atribui os valores dos parâmetros.
    5. Executa a query usando DataAccessLayer.ExecuteScalar para obter o resultado.
    6. Se o resultado for DBNull.Value, retorna null.
    7. Caso contrário, converte o resultado para DateTime? e o retorna.
  • Stored Procedures chamadas: TAB_SF_ProximoDiaUtil (função de tabela SQL).
  • Parâmetros SQL:
    • @Data: datetime - Data base para o cálculo.
    • @Incremento: bit - Indica se deve buscar o próximo dia útil (true) ou o anterior (false).
    • @Idf_Estado: int - ID do estado.
    • @Idf_Cidade: int - ID da cidade.
  • Validações: Verifica se a data de entrada é nula.
  • Regras de negócio: Calcula dias úteis considerando feriados específicos de estado e cidade, utilizando uma função de banco de dados para a lógica complexa.

DataTablePivot(DataTable dt, DataColumn pivotColumn, List<KeyValuePair<DataColumn, string>> listPivotValues, object[] arrPivotColumnValues = null)

  • Lógica:
    1. Otimização para arrPivotColumnValues: Verifica se arrPivotColumnValues é fornecido e se seus tipos de dados são consistentes com a pivotColumn. Se sim, uma flag flgUsarArrPivotColumnValues é ativada.
    2. Tratamento de Máscara de Colunas: Garante que cada KeyValuePair em listPivotValues tenha uma máscara de nome de coluna (se não fornecida, usa “{0}”).
    3. Identificação de Chaves Primárias:
  • Cria uma cópia da DataTable original (temp).
  • Remove a pivotColumn e as colunas de listPivotValues de temp.
  • As colunas restantes em temp são consideradas as chaves primárias (pkColumnNames).
  1. Preparação da Tabela de Resultados:
  • Cria uma nova DataTable (result) contendo apenas as colunas de chave primária, garantindo que sejam únicas.
  • Define as chaves primárias para result.
  1. Criação de Colunas Pivotadas:
  • Se flgUsarArrPivotColumnValues for false:
  • Itera sobre os valores distintos da pivotColumn na dt original.
  • Para cada valor distinto, cria novas colunas em result usando a máscara de nome e o tipo de dado de cada DataColumn em listPivotValues.
  • Se flgUsarArrPivotColumnValues for true:
  • Itera sobre os valores em arrPivotColumnValues.
  • Para cada valor, cria novas colunas em result da mesma forma.
  1. Preenchimento da Tabela de Resultados:
  • Itera sobre cada DataRow na dt original.
  • Encontra a linha correspondente em result usando as chaves primárias.
  • Para cada KeyValuePair em listPivotValues:
  • Constrói o nome da coluna pivotada.
  • Se a coluna pivotada não existir ou o valor da pivotColumn for nulo, não faz nada.
  • Se o valor na célula pivotada em aggRow for nulo, atribui o valor da linha original.
  • Caso contrário (se já houver um valor na célula pivotada):
  • Tenta realizar uma operação de soma usando Expression.Add se o tipo de dado permitir.
  • Se a soma falhar (ex: tipo de dado não suporta soma), simplesmente atribui o novo valor (comportamento de “último valor”).
  • Stored Procedures chamadas: Nenhuma (lógica de manipulação de DataTable em memória).
  • Validações: Verifica a consistência dos tipos de dados em arrPivotColumnValues para otimização.
  • Regras de negócio: Transforma dados de um formato “linha” para um formato “coluna” (pivot), agregando valores conforme a lógica definida.

ValorPorExtenso(decimal valor, Enumeradores.ValorExtenso TipoValor)

  • Lógica:
    1. Separa o valor em reais (parte inteira) e centavos (parte decimal).
    2. Inicializa valorExtenso como uma string vazia.
    3. Tratamento da Parte Inteira (reais):
  • Se reais for maior que zero, chama ValorPorExtenso(reais) (versão para long).
  • Se TipoValor for Monetario:
  • Adiciona ” real” se reais for 1, ou ” reais” caso contrário.
  • Se centavos for zero e TipoValor for Porcentagem:
  • Adiciona ” por cento”.
  1. Tratamento da Parte Decimal (centavos):
  • Se centavos for maior que zero:
  • Se reais também for maior que zero:
  • Adiciona ” e ” se TipoValor for Monetario.
  • Adiciona ” vírgula ” se TipoValor for Porcentagem.
  • Chama ValorPorExtenso(centavos) (versão para long).
  • Se TipoValor for Monetario:
  • Adiciona ” centavo” se centavos for 1, ou ” centavos” caso contrário.
  • Se TipoValor for Porcentagem:
  • Adiciona ” por cento”.
  1. Retorna valorExtenso em maiúsculas.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma explícita.
  • Regras de negócio: Converte valores numéricos para sua representação textual em português, com formatação específica para valores monetários e porcentagens.

ValidaPermissaoUsuario(List permissoes, int permissaoNecessaria)

  • Lógica:
    1. Verifica se a lista permissoes não é nula.
    2. Se não for nula, verifica se a lista permissoes contém o permissaoNecessaria.
    3. Retorna true se a permissão for encontrada, false caso contrário.
  • Stored Procedures chamadas: Nenhuma.
  • Validações: Nenhuma.
  • Regras de negócio: Uma função utilitária simples para verificar se um usuário possui uma permissão específica.

ValidaConteudoRequisicao(Stream fileStream)

  • Lógica:
    1. Chama ValidaSQLMalicioso(fileStream). Se retornar false, este método também retorna false.
    2. Chama ValidaConteudoMalicioso(fileStream). Se retornar false, este método também retorna false.
    3. Se ambas as validações passarem, retorna true.
  • Stored Procedures chamadas: Nenhuma (chama métodos internos de validação).
  • Validações: Delega a validação para ValidaSQLMalicioso e ValidaConteudoMalicioso.
  • Regras de negócio: Fornece uma validação de segurança abrangente para streams de requisição, protegendo contra SQL Injection e outros conteúdos maliciosos.

📌 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