🛠️ 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
| Nome | Tipo | Obrigatório | Regra |
|---|---|---|---|
| lblTituloPagina | Label | ⚪ Não | Título da página: “Configuração de Alertas” |
| vsValidacao | EmployerValidationSummary | ⚪ Não | Exibe mensagens de erro de validação do grupo “Salvar” |
| txtNomeDestinatario | ControlAlfaNumerico | 🔴 Sim | Largura: 360. Tipo: Padrão. Mensagens de erro para obrigatório, formato inválido, valor máximo e mínimo. |
| lblEmail | Label | ⚪ Não | Rótulo para txtEmailDestinatario |
| txtEmailDestinatario | ControlAlfaNumerico | 🔴 Sim | Largura: 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. |
| btnAdicionarDestinatario | ImageButton | ⚪ Não | Imagem: /img/global/icones/ico_adicionar_16x16.gif. ToolTip: “Adicionar Destinatario”. ValidationGroup: “Val1”. |
| btnAbrirModalDestinatarioAdicionado | Button | ⚪ Não | Texto: “0 Destiatário(s) Adicionado(s)”. Abre o modal de destinatários adicionados. |
| lblPeriodicidade | Label | ⚪ Não | Rótulo para lsPeriodicidade |
| lsPeriodicidade | ListaSugestoes | 🔴 Sim | Mensagens de erro para obrigatório e inválido. TipoSugestao: “Numero”. |
| lblDiaMesEnvioAlerta | Label | ⚪ Não | Rótulo para txtDiaMesEnvioAlerta |
| txtDiaMesEnvioAlerta | ValorNumericoTextBox | 🔴 Sim | Casas 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. |
| lblDiasSemanaEnvioAlerta | Label | 🔴 Sim | Rótulo para os checkboxes de dias da semana. |
| ckbDiasSemanaEnvioAlertaSegunda | ControlCheckBox | ⚪ Não | Texto: “Segunda” |
| ckbDiasSemanaEnvioAlertaTerca | ControlCheckBox | ⚪ Não | Texto: “Terça” |
| ckbDiasSemanaEnvioAlertaQuarta | ControlCheckBox | ⚪ Não | Texto: “Quarta” |
| ckbDiasSemanaEnvioAlertaQuinta | ControlCheckBox | ⚪ Não | Texto: “Quinta” |
| ckbDiasSemanaEnvioAlertaSexta | ControlCheckBox | ⚪ Não | Texto: “Sexta” |
| ckbDiasSemanaEnvioAlertaSabado | ControlCheckBox | ⚪ Não | Texto: “Sábado” |
| ckbDiasSemanaEnvioAlertaDomingo | ControlCheckBox | ⚪ Não | Texto: “Domingo” |
| lblEnvioAtivado | Label | ⚪ Não | Rótulo para lsEnvioAtivado |
| lsEnvioAtivado | ListaSugestoes | 🔴 Sim | Mensagens de erro para obrigatório e inválido. TipoSugestao: “Numero”. |
| lblAlerta | Label | ⚪ Não | Rótulo para txtAlerta |
| txtAlerta | LocalizarAlerta | 🔴 Sim | Largura: 360. Mensagens de erro para obrigatório, formato inválido e inválido. |
| btnAdicionarAlertas | ImageButton | ⚪ Não | Imagem: /img/global/icones/ico_adicionar_16x16.gif. ToolTip: “Adicionar Alerta”. ValidationGroup: “Val1”. |
| btnAbrirModalAlertaAdicionado | Button | ⚪ Não | Texto: “0 Alerta(s) Adicionado(s)”. Abre o modal de alertas adicionados. |
| btnSalvar | Button | ⚪ Não | Texto: “Salvar”. ValidationGroup: “Salvar”. |
| btnLimpar | Button | ⚪ Não | Texto: “Limpar”. |
| btnVoltar | Button | ⚪ Não | Texto: “Voltar”. |
| lblPesquisa | Label | ⚪ Não | Texto: “Pesquise por título do alerta, nome do destinatário ou e-mail do destinatário.” |
| txtPesquisa | ControlAlfaNumerico | ⚪ Não | Largura: 450. Tamanho: 200. |
| btnPesquisar | Button | ⚪ Não | Texto: “Pesquisar”. |
| gvwAlertasConfigurados | EmployerGrid | ⚪ Não | Exibe alertas configurados. Colunas: Título, Alerta Ativo?, Tipo Alerta, Nome Destinatário, E-mail Destinatário, Periodicidade, Envio Ativo?, Ações (Editar, Excluir). |
| pnlModalDestinatarioAdicionado | Panel | ⚪ Não | Modal para exibir e gerenciar destinatários adicionados. |
| btnFecharModalDestinatarioAdicionado | ImageButton | ⚪ Não | Botão para fechar o modal de destinatários. |
| lblTituloModalDestinatarioAdicionado | Label | ⚪ Não | Título do modal: “Destinatário Adicionado”. |
| ddlSelecaoGvwDestinatarioAdicionado | DropDownList | ⚪ Não | Opções para selecionar/desmarcar destinatários na grid do modal. |
| gvwModalDestinatarioAdicionado | EmployerGrid | ⚪ Não | Exibe destinatários adicionados. Colunas: Nome Destinatario, Email Destinatario, Ação (checkbox). |
| btnModalExcluirSelecionados | Button | ⚪ Não | Texto: “Excluir Selecionados”. |
| pnlModalAlertaAdicionado | Panel | ⚪ Não | Modal para exibir e gerenciar alertas adicionados. |
| btnFecharModalAlertaAdicionado | ImageButton | ⚪ Não | Botão para fechar o modal de alertas. |
| lblTituloModalAlertaAdicionado | Label | ⚪ Não | Título do modal: “Alerta Adicionado”. |
| ddlSelecaoGvwAlertaAdicionado | DropDownList | ⚪ Não | Opções para selecionar/desmarcar alertas na grid do modal. |
| gvwModalAlertaAdicionado | EmployerGrid | ⚪ Não | Exibe alertas adicionados. Colunas: Descrição, Dta. Cadastro, Ação (checkbox). |
| btnModalExcluirAlertasSelecionados | Button | ⚪ Não | Texto: “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 oEmployerValidationSummary.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
txtPesquisae o botãobtnPesquisar. pnlAlertasConfigurados: Painel que contém a gridgvwAlertasConfigurados.
- Modal “Destinatário Adicionado” (
pnlModalDestinatarioAdicionado): Exibido para gerenciar os destinatários adicionados.- Contém um
DropDownListpara seleção em massa e umaEmployerGrid(gvwModalDestinatarioAdicionado) para listar os destinatários. - Botão “Excluir Selecionados” (
btnModalExcluirSelecionados).
- Contém um
- Modal “Alerta Adicionado” (
pnlModalAlertaAdicionado): Exibido para gerenciar os alertas adicionados.- Contém um
DropDownListpara seleção em massa e umaEmployerGrid(gvwModalAlertaAdicionado) para listar os alertas. - Botão “Excluir Alertas Selecionados” (
btnModalExcluirAlertasSelecionados).
- Contém um
🛡️ 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
ValidarParaSalvarnoAlertasConfiguracaoCadastro.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_ClicknoAlertasConfiguracaoCadastro.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_ClicknoAlertasConfiguracaoCadastro.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 (
ValidarParaSalvarnoAlertasConfiguracaoCadastro.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 (
ConfigurarPermissoesTelanoAlertasConfiguracaoCadastro.aspx.cs): Se o usuário não tiver a permissãoConfiguracaoAlertas.VisualizarConfiguracaoAlertas, é redirecionado para a página de acesso negado. - Permissão de Salvar (
ConfigurarPermissoesTelanoAlertasConfiguracaoCadastro.aspx.cs): Se o usuário não tiver a permissãoConfiguracaoAlertas.SalvarConfiguracaoAlertas, o botãobtnSalvaré desabilitado. - Configuração de Dias de Envio por Periodicidade (
ConfigurarDiasEnvioAlertaPorPeriodicidadenoAlertasConfiguracaoCadastro.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:
txtDiaMesEnvioAlertae checkboxes de dias da semana são desabilitados. - Campos Obrigatórios de Destinatário e Alerta (
btnAdicionarDestinatario_Click,btnAdicionarAlertas_ClicknoAlertasConfiguracaoCadastro.aspx.cs): txtNomeDestinatario.ObrigatorioetxtEmailDestinatario.Obrigatoriosão definidos comotrueseLsDestinatarioestiver vazio, efalsecaso contrário.txtAlerta.Obrigatorioé definido comotrueseLsIdAlertaestiver vazio, efalsecaso contrário.- Visibilidade dos botões de adicionar/abrir modal de destinatários (
gvwAlertasConfigurados_OnRowCommandnoAlertasConfiguracaoCadastro.aspx.cs):btnAdicionarDestinatario.VisibleebtnAbrirModalDestinatarioAdicionado.Visiblesão definidos comofalseno modo de edição. - Visibilidade dos DropDownLists e botões de exclusão nos modais (
CarregarGridViewNomeDestinatario,CarregarGridViewAlertanoAlertasConfiguracaoCadastro.aspx.cs): ddlSelecaoGvwDestinatarioAdicionado.VisibleebtnModalExcluirSelecionados.Visiblesãotruese houver linhas na grid de destinatários.ddlSelecaoGvwAlertaAdicionado.VisibleebtnModalExcluirAlertasSelecionados.Visiblesãotruese houver linhas na grid de alertas.- Habilitação/Desabilitação de campos no modo de edição (
ConfiguraCamposnoAlertasConfiguracaoCadastro.aspx.cs):txtNomeDestinatario,txtEmailDestinatario,lsPeriodicidade,txtDiaMesEnvioAlerta,ckbDiasSemanaEnvioAlertaSegundaackbDiasSemanaEnvioAlertaDomingo, elsEnvioAtivadosão desabilitados.txtAlerta.ValidationGroupé definido como “Salvar”.
5.3. Regras de Inativação e Exclusão
- Exclusão de Configuração de Alerta (
ExcluirnoAlertasConfiguracaoCadastro.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_ClicknoAlertasConfiguracaoCadastro.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_ClicknoAlertasConfiguracaoCadastro.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 (
SalvarnoAlertasConfiguracaoCadastro.aspx.cs): - Se
IdAlertaUsuarioeEditarDestinatariotiverem valor (modo de edição), carrega o objetoUsuarioAlertaexistente e atualiza suas propriedades com os valores da tela. Para cadaidAlertaemLsIdAlerta, cria um novoUsuarioAlerta(seEditarDestinatario > 0) e associa o alerta, salvando-o. - Se não for edição, itera sobre
LsDestinatarioeLsIdAlerta, criando um novoUsuarioAlertapara cada combinação e salvando-o. - As propriedades setadas no objeto
UsuarioAlertasão:NomeDestinatario,DescricaoEmailDestinatario,FlagMensal,NumeroDiaMes,FlagSemanalSegundaaFlagSemanalDomingo,FlagInativo, eAlerta.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 (
InicializarnoAlertasConfiguracaoCadastro.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 (
PreencherCamposnoAlertasConfiguracaoCadastro.aspx.cs): - Se
IdAlertaUsuariotiver valor (modo de edição), carrega o objetoUsuarioAlertausandoUsuarioAlerta.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 (
LimparCamposnoAlertasConfiguracaoCadastro.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 (
CarregarGridViewAlertasConfiguradosnoAlertasConfiguracaoCadastro.aspx.cs): - Chama
UsuarioAlerta.ListarAletarConfiguradospara obter os dados. - Utiliza
UIHelper.CarregarGridViewpara popular a grid. - Carregamento da Grid de Destinatários no Modal (
CarregarGridViewNomeDestinatarionoAlertasConfiguracaoCadastro.aspx.cs): - Cria um
DataTablea partir da listaLsDestinatario. - Pagina os dados e utiliza
UIHelper.CarregarGridViewpara popular a grid do modal. - Carregamento da Grid de Alertas no Modal (
CarregarGridViewAlertanoAlertasConfiguracaoCadastro.aspx.cs): - Chama
BLL.Alerta.BuscaComponentePaginadopara obter os dados dos alertas. - Utiliza
UIHelper.CarregarGridViewpara popular a grid do modal. - Seleção de Destinatários no Modal (
ddlSelecaoGvwDestinatarioAdicionado_SelectedIndexChangednoAlertasConfiguracaoCadastro.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_SelectedIndexChangednoAlertasConfiguracaoCadastro.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
Page_Load:
- Verifica se é um postback. Se não for:
- Chama
Inicializar().
Inicializar():
- Chama
ConfigurarPermissoesTela(). - Chama
CarregarListasSugestoes(). - Chama
CarregarGridViewAlertasConfigurados(). - Chama
PreencherCampos().
ConfigurarPermissoesTela():
- Carrega as permissões do usuário logado para a categoria
ConfiguracaoAlertasusandoUsuario.CarregarPermissoes(). - Redireciona para
UrlAcessoNegadose não tiver permissão deVisualizarConfiguracaoAlertas. - Desabilita
btnSalvarse não tiver permissão deSalvarConfiguracaoAlertas.
CarregarListasSugestoes():
- Popula
lsPeriodicidadecom “Mensal” e “Diário”. - Popula
lsEnvioAtivadocom os valores deBLL.Flag.Listar().
CarregarGridViewAlertasConfigurados():
- Chama
UsuarioAlerta.ListarAletarConfigurados()para obter os dados. - Chama
UIHelper.CarregarGridView()para exibir os dados nagvwAlertasConfigurados.
PreencherCampos():
- Se
IdAlertaUsuariotiver 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
UsuarioAlertausandoUsuarioAlerta.LoadObject(). - Preenche os campos da tela com os dados do objeto.
- Chama
ConfigurarDiasEnvioAlertaPorPeriodicidade(). - Se
IdAlertaUsuarionão tiver valor (cadastro): - Chama
LimparCampos().
6.2. Salvar Configuração de Alerta
btnSalvar_OnClick:
- Valida permissão de
SalvarConfiguracaoAlertasusandoUtil.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.
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
truese todas as validações passarem,falsecaso contrário.
Salvar():
- Monta o objeto
UsuarioAlertacom os dados da tela. - Se for edição, atualiza o objeto existente.
- Itera sobre os destinatários e alertas, criando e salvando
UsuarioAlertapara cada combinação usandoobjUsuarioAlerta.Save().
6.3. Excluir Configuração de Alerta
gvwAlertasConfigurados_OnRowCommand(CommandName “Excluir”):
- Recupera
IdAlertaUsuarioda linha selecionada. - Valida permissão de
ExcluirConfiguracaoAlertasusandoUtil.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.
Excluir():
- Chama
UsuarioAlerta.Delete(this.IdAlertaUsuario.Value).
6.4. Limpar Campos
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
btnVoltar_OnClick:
- Redireciona para
MenuMaisOpcoes.aspx?ID=A.
6.6. Pesquisar Alertas Configurados
btnPesquisar_OnClick:
- Chama
CarregarGridViewAlertasConfigurados(), que recarrega a grid aplicando o filtro dotxtPesquisa.
6.7. Adicionar Destinatário
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à listaLsDestinatario. - Atualiza o texto do botão
btnAbrirModalDestinatarioAdicionado. - Exibe mensagem de sucesso.
- Limpa os campos
txtNomeDestinatarioetxtEmailDestinatario. - Atualiza a obrigatoriedade dos campos de destinatário.
6.8. Abrir Modal de Destinatários Adicionados
btnAbrirModalDestinatarioAdicionado_Click:
- Chama
CarregarGridViewNomeDestinatario().
CarregarGridViewNomeDestinatario():
- Popula
gvwModalDestinatarioAdicionadocom os dados deLsDestinatario. - Exibe o modal.
6.9. Excluir Destinatários do Modal
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
btnAdicionarAlertas_Click:
- Valida se o campo
txtAlertaestá preenchido. - Valida se o alerta já foi adicionado.
- Adiciona o
IdAlertaSelecionadoà listaLsIdAlerta. - 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
btnAbrirModalAlertaAdicionado_Click:
- Chama
CarregarGridViewAlerta().
CarregarGridViewAlerta():
- Popula
gvwModalAlertaAdicionadocom os dados deLsIdAlertausandoBLL.Alerta.BuscaComponentePaginado(). - Exibe o modal.
6.12. Excluir Alertas do Modal
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 objetoUsuarioAlertaa 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 objetoUsuarioAlertano 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
NomeDestinatarioeEmailDestinatario.
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 umGridViewe 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étodoListarAletarConfigurados) - 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étodoLoadObject) - 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étodoValidarConfiguracaoAlertaExistente) - 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étodoDelete) - 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étodoSave) - 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étodoBuscaComponentePaginado) - 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(paralsPeriodicidade). 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:
ckbDiasSemanaEnvioAlertaSegundaackbDiasSemanaEnvioAlertaDomingo,ckbModalSelecionarDestinatario,ckbModalSelecionarAlerta - Propriedades expostas:
Text,CssClass,Checked. - Eventos:
OnCheckedChanged(parackbModalSelecionarDestinatario,ckbModalSelecionarAlerta). Employer:LocalizarAlerta- Caminho:
C:\Webfopag\Etec.WebFopag\Employer.Plataforma.Web.WebFoPag\UserControls\LocalizarAlerta.ascx(presumido pelo namespaceEmployer.Plataforma.Web.WebFoPag.UserControlse 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étodo | Assinatura | Propósito |
|---|---|---|
RecuperarMensagemErroSql | public 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. |
LimparSession | public 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. |
CarregarListaSugestao | public static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, IDataReader DataSource, string DataValueField, string DataTextField) | Preenche um componente ListaSugestoes com dados de um IDataReader. |
CarregarListaSugestao | public static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, DataTable DataSource, string DataValueField, string DataTextField) | Preenche um componente ListaSugestoes com dados de um DataTable. |
CarregarListaSugestao | public static void CarregarListaSugestao(Employer.Plataforma.Web.Componentes.ListaSugestoes Lista, Dictionary<string, string> Dicionario) | Preenche um componente ListaSugestoes com dados de um Dictionary<string, string>. |
CarregarGridView | public static void CarregarGridView(GridView gv, IDataReader dataSource) | Carrega dados de um IDataReader em um GridView e descarta o IDataReader. |
CarregarGridView | public static void CarregarGridView(GridView gv, DataTable dataSource) | Carrega dados de um DataTable em um GridView e descarta o DataTable. |
CarregarGridView | public 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. |
CarregarGridView | public 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. |
CarregarGridView | public static void CarregarGridView(GridView gv, Dictionary<string, string> Dicionario) | Carrega dados de um Dictionary<string, string> em um GridView. |
CarregarGridView | public static void CarregarGridView(GridView gv, Dictionary<int, string> Dicionario) | Carrega dados de um Dictionary<int, string> em um GridView. |
CarregarGridView | public 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. |
CarregarDataList | public static void CarregarDataList(DataList dl, IDataReader dataSource) | Carrega dados de um IDataReader em um DataList e descarta o IDataReader. |
CalculaPaginacao | public 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. |
CarregarRepeater | public static void CarregarRepeater<T>(Repeater rep, T dataSource) | Carrega dados em um Repeater e descarta o dataSource se for IDisposable. |
CarregarDropDownList | public static void CarregarDropDownList(DropDownList ddl, IDataReader DataSource, string DataValueField, string DataTextField) | Preenche um DropDownList com dados de um IDataReader e descarta o IDataReader. |
RecuperarComponenteFilho | private static WebControl RecuperarComponenteFilho(WebControl controle) | Percorre os controles filhos de um WebControl para encontrar um controle com ID “txtValor”. |
RecuperarComponenteFilho | private static WebControl RecuperarComponenteFilho(Telefone controle, out WebControl controleDDD) | Percorre os controles filhos de um controle Telefone para encontrar os controles “txtFone” e “txtDDD”. |
AjustarString | public 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. |
FormatarPrimeiraMaiscula | private static string FormatarPrimeiraMaiscula(string entrada) | Formata uma string para que a primeira letra de cada palavra seja maiúscula e o restante minúscula. |
SetImagemOrdenacao | public 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. |
GetIndiceColunaOrdenar | public static int GetIndiceColunaOrdenar(GridView gv, string colunaOrdenacao) | Retorna o índice da coluna em um GridView com base na expressão de ordenação. |
RetornarMensagem | public 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. |
RedimensionaFormataTextoString | public 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. |
RemoveCaracteresEspeciais | public static string RemoveCaracteresEspeciais(string str) | Remove caracteres especiais de uma string, exceto ’/’ e ’@’, e trata ‘º’ para ‘o’. |
RemoverAcentos | public static string RemoverAcentos(string texto) | Remove acentos de uma string. |
ValidateFocus | public static void ValidateFocus(WebControl controle) | Registra um script JavaScript para focar no primeiro campo inválido de um grupo de validação. |
PrevenirDuploClick | public 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. |
PrevenirDuploClick | public 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. |
LoadListaSugestoes | public 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. |
LoadListaSugestoes | public 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. |
ValidaChavesSession | public static bool ValidaChavesSession() | Verifica se as chaves “CentroServico” e “CodigoUsuario” existem na Session do HttpContext.Current. |
TrataErroReportViewer | public static bool TrataErroReportViewer(HttpContext ctx) | Trata erros de sessão expirada no ReportViewer, redirecionando para a página de login. |
ConfiguraNomenclaturaCampo | public 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. |
SetPropertyIfExists | private 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. |
ConfiguraNomenclaturaGrid | public 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:
- Itera sobre os valores de um
Enumque representaConstraints. - Para cada valor, obtém o nome da
Constraint. - Verifica se a mensagem da
SqlException(ex.Message) contém o nome daConstraint. - Se encontrar, recupera a mensagem correspondente do
ResourceManagerusando o prefixo ”_” + o valor numérico daConstrainte retorna o valor numérico como string. - Se não encontrar em
Constraints, repete o processo paraIndexes. - Se não encontrar em
Indexes, repete o processo paraPrimaryKeys. - Se não encontrar em nenhum dos
Enums, define a mensagem de saída como a string de recurso para “_300003” e retorna “_3003”.
- Itera sobre os valores de um
- 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:
- Obtém um array com os nomes das chaves definidas no
EnumType. - Itera por cada chave no array.
- Para cada chave, verifica se existe um valor correspondente na
session. - Se existir, adiciona esse valor ao
viewStatecom a mesma chave. - Remove o valor da
session.
- Obtém um array com os nomes das chaves definidas no
- 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:
- Cria um novo
Dictionary<string, string>chamadovalores. - Se
DataSourcenão for nulo:
- Cria um novo
- Enquanto houver registros para ler no
DataSource: - Adiciona uma entrada ao dicionário
valores, onde a chave é o valor doDataValueField(trimado) e o valor é o valor doDataTextField.
- Atribui o dicionário
valoresà propriedadeDicionariodo componenteListaSugestoes. - Chama
Lista.DataBind()para vincular os dados. - Se
DataSourcenão for nulo, chamaDataSource.Dispose()para liberar recursos.
- Stored Procedures chamadas: Nenhuma (recebe um
IDataReaderjá preenchido). - Validações: Nenhuma.
- Regras de negócio: Nenhuma.
CarregarGridView(EmployerGrid gv, DataTable dataSource, int itemCount)
- Lógica:
- Define a propriedade
MockItemCountdoEmployerGridcom o valor deitemCount. - Atribui o
dataSourceà propriedadeDataSourcedoEmployerGrid. - Chama
gv.DataBind()para vincular os dados. - Se
dataSourcenão for nulo, chamadataSource.Dispose()para liberar recursos.
- Define a propriedade
- Stored Procedures chamadas: Nenhuma.
- Validações: Nenhuma.
- Regras de negócio: Nenhuma.
AjustarString(string entrada)
- Lógica:
- Remove espaços em branco no início e fim da string (
entrada.Trim()). - Substitui múltiplas ocorrências de dois espaços por um único espaço em um loop
while. - Chama
FormatarPrimeiraMaiscula(entrada)para capitalizar a primeira letra de cada palavra. - Substitui preposições e artigos comuns (ex: ” De ”, ” E ”, ” Do ”) para suas versões em minúsculas.
- Tratativa Números Romanos:
- Remove espaços em branco no início e fim da string (
- 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:
- Verifica se um
validationGroupfoi fornecido. - Se
validationGroupfor nulo ou vazio:
- Verifica se um
- Adiciona um atributo
onclickao controle que executaPage_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 retornafalsepara cancelar o evento padrão do clique.
- Se
validationGroupfor fornecido:
- Adiciona um atributo
onclickao controle que executaPage_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 retornafalse. - 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:
- Verifica se
ctxouctx.Serversão nulos. Se sim, retornafalse. - Obtém o último erro do servidor (
ctx.Server.GetLastError()). Se não houver erro, retornafalse. - Tenta obter a exceção base.
- Se a exceção base for do tipo
Microsoft.Reporting.WebForms.AspNetSessionExpiredException:
- Verifica se
- Limpa o erro do servidor (
ctx.Server.ClearError()). - Redireciona o usuário para a URL de login, incluindo a URL original como
ReturnUrl. - Retorna
trueindicando que o erro foi tratado.
- Em caso de qualquer outra exceção durante o tratamento, registra o erro usando
Employer.PlataformaLog.LogError.WriteLog(exx). - 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.csC:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\Usuario_P2.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Prepara uma lista de parâmetros SQL para operações de insert e update. |
LoadDataReader | private static IDataReader LoadDataReader(int usuario) | Retorna um IDataReader com os dados de um usuário específico pelo seu ID. |
LoadDataReader | private 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. |
LoadDataReader | public 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. |
LoadObject | public static Usuario LoadObject(int usuario) | Retorna uma instância de Usuario a partir do banco de dados pelo seu ID. |
LoadObject | public 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. |
CompleteObject | public bool CompleteObject() | Completa os atributos de uma instância de Usuario a partir do banco de dados. |
CompleteObject | public bool CompleteObject(SqlTransaction trans) | Completa os atributos de uma instância de Usuario a partir do banco de dados, dentro de uma transação. |
Salvar | public void Salvar(PessoaFisica objPessoaFisica) | Salva um objeto Usuario e seu PessoaFisica associado em uma transação, integrando com fila de cálculo e auditoria. |
Salvar | public void Salvar(PessoaFisica objPessoaFisica, SqlTransaction trans) | Salva um objeto Usuario e seu PessoaFisica associado usando uma transação existente. |
SalvarAuditoria | private 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. |
CompletarInformacoesAuditoria | private static void CompletarInformacoesAuditoria(Usuario usuario, Usuario atual = null, bool consultarDescricaoReferencia = true) | Completa informações de auditoria para um objeto Usuario, incluindo PessoaFisica e PerfilPrincipal. |
Insert | private void Insert() | Insere uma nova instância de Usuario no banco de dados, incluindo a criação de UsuarioPerfil e PeriodoPermissao. |
Insert | private 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. |
Save | public void Save(bool auditar = true) | Salva uma instância de Usuario (insert ou update) e opcionalmente audita a operação. |
Save | public void Save(SqlTransaction trans) | Salva uma instância de Usuario (insert ou update) dentro de uma transação e audita a operação. |
Delete | public static void Delete(int usuario) | Exclui um usuário do banco de dados pelo seu ID. |
Delete | public static void Delete(int usuario, SqlTransaction trans) | Exclui um usuário do banco de dados pelo seu ID, dentro de uma transação. |
Delete | public static void Delete(List<Usuario> usuario) | Exclui uma lista de usuários do banco de dados. |
Update | private void Update(bool auditar = true) | Atualiza uma instância de Usuario no banco de dados e opcionalmente audita a operação. |
Update | private void Update(SqlTransaction trans) | Atualiza uma instância de Usuario no banco de dados, dentro de uma transação. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Preenche uma lista de parâmetros SQL com os valores dos atributos da instância de Usuario. |
ExisteCPF | public static Boolean ExisteCPF(decimal numCPF) | Verifica se existe um usuário com o CPF informado. |
RecuperarPorCPF | public static Usuario RecuperarPorCPF(decimal numCPF) | Recupera uma instância de Usuario a partir do banco de dados pelo CPF. |
CarregarObjetoCPF | public static Usuario CarregarObjetoCPF(string CPFUsuario) | Carrega uma instância de Usuario a partir do banco de dados pelo CPF. |
CarregarObjetoCPF | public 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. |
ListarPorCPFNomeParcialAutoComplete | public static Dictionary<int, String> ListarPorCPFNomeParcialAutoComplete(string valor, int count) | Lista usuários por CPF ou nome parcial para autocomplete. |
CarregarPermissoes | public 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. |
RelatorioUsuarioSistema | public 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. |
ListaAgrupamentoUsuario | public static List<RelatorioUsuarioSistemaDto> ListaAgrupamentoUsuario(List<decimal> lsCpfUsuario) | Retorna uma lista de DTOs de agrupamento de usuário com base em uma lista de CPFs. |
FormataCelular | private static string FormataCelular(DbDataReader dr) | Formata o número de celular lido de um DbDataReader. |
RetornaQuantidadeUsuarios | public 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. |
CarregarPermissoes | public static Dictionary<int, int> CarregarPermissoes(int _idfUsuario) | Retorna um dicionário de permissões (Idf_Permissao, Idf_Categoria_Permissao) para um usuário. |
TemPermissao | public 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. |
TemPermissao | public 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. |
CarregarPermissoes | public 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. |
ListarPorCodNomeParcial | public static IDataReader ListarPorCodNomeParcial(string cpf, string nome) | Lista usuários por CPF ou nome parcial, retornando um IDataReader. |
ListarPerfilPorUsuario | public static IDataReader ListarPerfilPorUsuario(int idUsuario, DateTime periodo) | Lista os perfis de um usuário para um determinado período. |
ListarPerfilPorUsuarioSistema | public 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. |
Listar | public static List<Usuario> Listar() | Retorna uma lista de todos os usuários. |
Listar | public static DataTable Listar(string nomeColuna, string direcaoOrdenacao, int paginaCorrente, int tamanhoPagina, out int totalRegistros) | Lista usuários de forma paginada, com ordenação. |
Listar | public 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. |
ListarUsuariosCadastradosFiltro | public 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. |
ListarPermissoesPorUsuario | public 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. |
ListarPermissoesDeVisualizacaoRelatorioESocialPorUsuario | public 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. |
ListarCPFs | public static List<decimal> ListarCPFs() | Retorna uma lista de todos os CPFs de usuários. |
SetInstance | private static bool SetInstance(IDataReader dr, Usuario objUsuario, bool bDispose = true) | Preenche os atributos de uma instância de Usuario a partir de um IDataReader. |
GetNomeCPF | public static string GetNomeCPF(Int64 idfUsuario) | Retorna uma string formatada com o ID e CPF de um usuário. |
RelatorioUsuariosPorPerfil | public 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. |
CarregarUsuariosFilaAtualizcaoPonto | public 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. |
VerificarFiliaisPonto | public static Dictionary<int, int> VerificarFiliaisPonto(decimal cpfUsuario, SqlTransaction trans) | Verifica as filiais às quais um usuário tem permissão no sistema de ponto. |
ExibirNomeFormatContaPagar | public static string ExibirNomeFormatContaPagar(int idUsuario) | Retorna o nome formatado de um usuário para exibição em contas a pagar. |
RecuperarFiliaisQueUsuarioTemAcesso | public 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. |
CarregarPermissaoTela | public 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. |
AjustarUltimaEmpresaLogada | public static void AjustarUltimaEmpresaLogada(int idfUsuario) | Ajusta a última empresa logada de um usuário se ele não tiver mais acesso a ela. |
PossuiAcesso | public static bool PossuiAcesso(int idfUsuario, int idfEmpresa) | Verifica se um usuário possui acesso a uma empresa específica. |
ValidaPerfilPrincipal | public static bool ValidaPerfilPrincipal(int idfUsuario) | Valida se o perfil principal de um usuário não é um perfil de “senha master”. |
PerfilUsuarioSistemaSenhaMaster | public 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. |
FilialPadraoDoUsuarioPorEmpresa | public 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. |
CarregarIdentificacaoUsuario | public 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:
- Abre uma nova conexão SQL e inicia uma transação.
- Tenta salvar o objeto
objPessoaFisica(que pode ser um insert ou update) usando a transação. - Associa o
objPessoaFisicaà propriedadePessoaFisicada instância atual deUsuario. - Salva a instância atual de
Usuario(insert ou update) usando a transação. - Comita a transação.
- Envia para a fila de cálculo (
FilaCalculoTransactionSingleton.EnviarParaCalculo). - Integra com o sistema de auditoria (
AuditoriaEventMapTransaction.IntegrarAuditoriaEventMap). - 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(paraUsuariose não persistido)SPUPDATE(paraUsuariose persistido)PessoaFisica.Save()(chama SPs internas dePessoaFisica)UsuarioPerfil.Save()(chama SPs internas deUsuarioPerfil)PeriodoPermissao.Save()(chama SPs internas dePeriodoPermissao)
- Validações: Nenhuma explícita neste método, mas as chamadas a
Save()dePessoaFisica,UsuarioPerfilePeriodoPermissaopodem 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:
- Verifica se a auditoria está habilitada (
GlobalSettingsSingleton.AuditoriaHabilitada). Se não, retorna. - Determina o tipo de ação de auditoria (
OperacaoEventoMap.Delete,Insert,Update,Inativacao,Ativacao) com base no parâmetroehDeletee na mudança doFlagInativo. - Se a ação não for
Delete, chamaCompletarInformacoesAuditoriapara preencher dados adicionais do objetoUsuario. - Cria um objeto
AuditoriaQueuecom 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. - Adiciona o
AuditoriaQueueà instância doMongoAcessLayer. - Se houver uma transação SQL, adiciona o
AuditoriaQueueà transação de auditoria doMongoAcessLayer. - Em caso de exceção, registra o erro no log.
- No bloco
finally, limpa as propriedadesPreUpdateAuditoriada instância deUsuarioe de seus objetos relacionados (PessoaFisica,LoginUsuario) para evitar vazamento de dados entre auditorias.
- Verifica se a auditoria está habilitada (
- Stored Procedures chamadas: Nenhuma (interage com
MongoAcessLayerpara 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:
- Obtém uma lista de parâmetros SQL chamando
GetParameters(). - Preenche esses parâmetros com os valores da instância atual de
UsuariochamandoSetParameters(). - Abre uma nova conexão SQL e inicia uma transação.
- Tenta executar o comando
SPINSERTpara inserir o usuário. - Recupera o
Idf_Usuariogerado automaticamente (SCOPE_IDENTITY()) e atribui à propriedade_idUsuario. - Limpa os parâmetros do comando.
- Gerenciamento de Perfil:
- Obtém uma lista de parâmetros SQL chamando
- Tenta carregar um
UsuarioPerfilexistente para o_idUsuarioe_perfilPrincipal.IdPerfil. - Se não existir, cria um novo
UsuarioPerfil, associa oUsuarioePerfil, e o salva na transação.
- Gerenciamento de Período de Permissão:
- Obtém a data e hora atual.
- Tenta carregar um
PeriodoPermissaoexistente para o_idUsuario,_perfilPrincipal.IdPerfile a data atual. - Se existir, define
DataFimcomo nulo e o salva na transação (reabrindo o período). - Se não existir, cria um novo
PeriodoPermissao, defineDataIniciocomo a data atual, associa oUsuarioPerfile o salva na transação.
- Define
_persistedcomotruee_modifiedcomofalse. - Comita a transação.
- Integra com o sistema de auditoria (
AuditoriaEventMapTransaction.IntegrarAuditoriaEventMap). - 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()deUsuarioPerfilePeriodoPermissaopodem 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:
- Inicializa uma
List<int>vazia para armazenar os IDs das permissões. - Cria uma lista de
SqlParameter. - Adiciona dois parâmetros:
@Idf_Categoria_Permissao(com o valor da categoria convertida para int) e@Idf_Usuario(com o ID do usuário). - Executa a consulta SQL definida em
SPSELECTPERMISSOESUSUARIOusandoDataAccessLayer.ExecuteReader. - Enquanto houver registros para ler no
IDataReader:
- Inicializa uma
- Adiciona o valor da coluna “Permissao” (convertido para int) à lista
permissoes.
- Fecha e descarta o
IDataReader. - 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:
- Inicializa uma lista de
SqlParametercom os parâmetros de paginação, ID do usuário e pesquisa. - Calcula os índices de início e fim para a paginação.
- Formata a string de ordenação (
orderBy). - Formata a consulta SQL
SPSELPERMISSOEScom a ordenação. - Executa a consulta formatada usando
DataAccessLayer.ExecuteReader. - Lê o primeiro resultado (que contém a contagem total de registros) e atribui a
totalRegistros. - Avança para o próximo conjunto de resultados (que contém os dados paginados).
- Retorna o
SqlDataReadercom os dados das permissões.
- Inicializa uma lista de
- 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:
- Verifica se
idfUsuarioouidfEmpresasão menores ou iguais a zero. Se sim, retornafalse. - Define a consulta SQL
CONSULTAque chama a função de tabelaTAB_SF_Usuario_Acesso. - Cria uma lista de
SqlParameterpara@Idf_Usuarioe@Idf_Empresa. - Executa a consulta usando
DataAccessLayer.ExecuteScalarpara obter a contagem de registros. - Retorna
truese a contagem for maior que zero, indicando que o usuário tem acesso à empresa.
- Verifica se
- 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.csC:\Webfopag\Etec.WebFopag\Employer.Plataforma.BLL\UsuarioAlerta_P2.cs
Métodos
| Método | Assinatura | Propósito |
|---|---|---|
GetParameters | private List<SqlParameter> GetParameters() | Prepara uma lista de parâmetros SQL para operações de insert e update de UsuarioAlerta. |
SetParameters | private void SetParameters(List<SqlParameter> parms) | Preenche uma lista de parâmetros SQL com os valores dos atributos da instância de UsuarioAlerta. |
Insert | private void Insert() | Insere uma nova instância de UsuarioAlerta no banco de dados. |
Insert | private void Insert(SqlTransaction trans) | Insere uma nova instância de UsuarioAlerta no banco de dados, dentro de uma transação. |
Update | private void Update() | Atualiza uma instância existente de UsuarioAlerta no banco de dados. |
Update | private void Update(SqlTransaction trans) | Atualiza uma instância existente de UsuarioAlerta no banco de dados, dentro de uma transação. |
Save | public void Save() | Salva uma instância de UsuarioAlerta (insert ou update) no banco de dados. |
Save | public void Save(SqlTransaction trans) | Salva uma instância de UsuarioAlerta (insert ou update) no banco de dados, dentro de uma transação. |
Delete | public static void Delete(int idAlertaUsuario) | Exclui uma configuração de alerta de usuário pelo seu ID. |
Delete | public static void Delete(int idAlertaUsuario, SqlTransaction trans) | Exclui uma configuração de alerta de usuário pelo seu ID, dentro de uma transação. |
Delete | public static void Delete(List<int> idAlertaUsuario) | Exclui uma lista de configurações de alerta de usuário. |
LoadDataReader | private 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. |
LoadDataReader | private 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. |
LoadDataReader | public 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. |
LoadObject | public static UsuarioAlerta LoadObject(int idAlertaUsuario) | Retorna uma instância de UsuarioAlerta a partir do banco de dados pelo seu ID. |
LoadObject | public 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. |
CompleteObject | public bool CompleteObject() | Completa os atributos de uma instância de UsuarioAlerta a partir do banco de dados. |
CompleteObject | public bool CompleteObject(SqlTransaction trans) | Completa os atributos de uma instância de UsuarioAlerta a partir do banco de dados, dentro de uma transação. |
SetInstance | private static bool SetInstance(IDataReader dr, UsuarioAlerta objUsuarioAlerta) | Preenche os atributos de uma instância de UsuarioAlerta a partir de um IDataReader. |
ListarAletarConfigurados | public 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. |
ValidarConfiguracaoAlertaExistente | public 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:
- Atribui os valores das propriedades da instância de
UsuarioAlertaaos parâmetros SQL correspondentes na listaparms. - Para campos opcionais (
NumeroDiaMes,FlagSemanalSegundaaFlagSemanalDomingo), verifica seHasValueé verdadeiro. Se sim, atribui o valor; caso contrário, atribuiDBNull.Value. - Se a instância não estiver persistida (
!_persisted):
- Atribui os valores das propriedades da instância de
- Define a direção do primeiro parâmetro (
@Idf_Alerta_Usuario) comoOutput(para receber o ID gerado). - Define
_dataCadastrocomo a data e hora atual.
- Se a instância já estiver persistida:
- Define a direção do primeiro parâmetro como
Input.
- Cria uma nova instância de
Usuariopara_usuarioGeradorusando oCodigoUsuarioda sessão HTTP (ou1se a sessão for nula). - Atribui o ID do
_usuarioGeradore_dataCadastroaos seus respectivos parâmetros.
- Stored Procedures chamadas: Nenhuma (preenche parâmetros para SPs).
- Validações: Nenhuma explícita, mas a lógica de
HasValuetrata 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:
- Verifica se a instância de
UsuarioAlertajá está persistida (_persisted). - Se não estiver persistida, chama o método
Insert()para inserir um novo registro. - Se já estiver persistida, chama o método
Update()para atualizar o registro existente.
- Verifica se a instância de
- Stored Procedures chamadas:
Insert()(chamaSPINSERT)Update()(chamaSPUPDATE)
- Validações: Nenhuma explícita neste método, mas os métodos
Insert()eUpdate()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:
- Inicializa uma lista de
SqlParametere duas strings de consulta:query(para DELETE) equeryAux(para UPDATE doIdf_Usuario_Gerador). - Itera sobre a lista de IDs de alerta de usuário (
idAlertaUsuario). - Para cada ID:
- Inicializa uma lista de
- Cria um nome de parâmetro dinâmico (ex: “@parm0”, “@parm1”).
- Adiciona o nome do parâmetro às strings
queryequeryAux, separando por vírgula se não for o primeiro. - Adiciona um novo
SqlParametercom o nome e valor do ID à listaparms.
- Adiciona um parâmetro
@Idf_Usuario_Geradorà listaparmscom o ID do usuário logado na sessão. - Concatena as strings
queryAuxequerypara formar uma única consulta que primeiro atualiza oIdf_Usuario_Geradore depois exclui os registros. - 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:
- Inicializa variáveis para parâmetros, queries paginadas e contagem, e calcula os índices de início e fim da paginação.
- Cria uma lista de
SqlParametere adiciona@Des_Pesquisa. - Se
pDescricaoPesquisanão for nulo ou vazio, atribui seu valor ao parâmetro; caso contrário, atribuiDBNull.Value. - Constrói a
queryPaginadausandostring.Formatpara inserir a coluna de ordenação, direção, a consultaSELLISTARALERTASCONFIGURADOSe os índices de paginação. - Constrói a
queryCountpara obter o total de registros. - Executa
queryCountusandoDataAccessLayer.ExecuteScalarpara obterpTotalRegistros. - Executa
queryPaginadausandoDataAccessLayer.ExecuteReadere retorna oSqlDataReaderresultante.
- 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:
- Inicializa uma lista de
SqlParameter. - Constrói a parte
WHEREda query dinamicamente:
- Inicializa uma lista de
- Se
pLsIdAlertativer itens, adiciona uma condiçãoAND UA.Idf_Alerta IN (...). - Caso contrário, se
pIdAlertativer valor, adicionaAND UA.Idf_Alerta = @Idf_Alerta. - Se
pLsDesEmailDestinatariotiver itens, adiciona uma condiçãoAND UA.Des_Email_Destinatario IN (...). - Caso contrário, se
pDescricaoEmailDestinatarionão for vazio, adicionaAND UA.Des_Email_Destinatario LIKE @Des_Email_Destinatario.
- Adiciona os parâmetros
@Idf_Alerta_Usuario,@Idf_Alertae@Des_Email_Destinatarioà listaparms, atribuindoDBNull.Valuese os valores correspondentes forem nulos ou vazios. - Executa a query construída usando
DataAccessLayer.ExecuteScalarpara obter a contagem de configurações de alerta existentes. - Retorna
truese a contagem for maior que zero (indicando que a configuração já existe),falsecaso 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étodo | Assinatura | Propósito |
|---|---|---|
CamelCase | public static string CamelCase(string texto) | Converte uma string para o formato CamelCase, tratando preposições e algumas siglas. |
ProximoDiaUtil | public 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. |
ProximoDiaUtil | public 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. |
ProximoDiaUtil | public 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. |
ProximoDiaUtilEspecifico | public 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. |
ProximoDiaUtilEspecifico | public 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. |
Weekend | public static bool Weekend(DateTime Date) | Verifica se uma determinada data é um fim de semana (sábado ou domingo). |
ProximoDiaUtilPorEmpregados | public 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. |
MesAnoCompetencia | public static string MesAnoCompetencia(DateTime dtaCompetencia, string connectionString) | Retorna o mês e ano de competência formatados (ex: “JAN/2023”) para uma data. |
QuantidadeDiasUteisNaoUteisMes | public 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. |
AliquotasInss | public static string AliquotasInss(DateTime dta, string connectionString) | Retorna uma string com as alíquotas de INSS vigentes para uma data, separadas por vírgula. |
FaixaInss | public 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. |
MapearPropriedadesObjeto | public 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. |
SalarioMinimoNacional | public static string SalarioMinimoNacional(string connectionString) | Retorna o valor do salário mínimo nacional vigente. |
RecuperarCentroResultadoAnalitico | public static string RecuperarCentroResultadoAnalitico(int? pIdCentroResultado, int pIdEmpresa) | Recupera uma lista de IDs de centros de resultado analíticos para uso em queries. |
DataTablePivot | public 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. |
ValorPorExtenso | public 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. |
ValorPorExtenso | public static string ValorPorExtenso(long x) | Converte um número inteiro para sua representação por extenso em português. |
CalcularIdade | public static int CalcularIdade(DateTime dtaNascimento) | Calcula a idade de uma pessoa com base na data de nascimento. |
ConvertToDataTable | public static DataTable ConvertToDataTable<T>(IList<T> data) | Converte uma lista de objetos genéricos para um DataTable. |
ValidaPermissaoUsuario | public static bool ValidaPermissaoUsuario(List<int> permissoes, int permissaoNecessaria) | Verifica se uma lista de permissões contém uma permissão específica. |
VerificarTagsMaliciosasWord | public static bool VerificarTagsMaliciosasWord(Stream stream) | Verifica se um documento Word (stream) contém tags maliciosas ou conteúdo oculto. |
VerificarTagsMaliciosasExcel | public static bool VerificarTagsMaliciosasExcel(Stream stream, string fileExtension) | Verifica se um documento Excel (stream) contém tags HTML/JavaScript maliciosas. |
ValidaImagem | public 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). |
VerificaMineImagem | private static bool VerificaMineImagem(string fileName) | Verifica se o MIME type de um arquivo de imagem é permitido (JPEG, PNG, GIF). |
ValidaImagemComAssinatura | private static bool ValidaImagemComAssinatura(Stream fileStream) | Valida a assinatura de bytes de um stream para verificar se é um formato de imagem válido. |
ValidaImagemReal | private static bool ValidaImagemReal(Stream fileStream) | Tenta carregar um stream como imagem para verificar sua validade. |
ValidaConteudoMalicioso | private static bool ValidaConteudoMalicioso(Stream fileStream) | Verifica se um stream contém padrões de texto maliciosos (scripts, comandos). |
ToEnum | public static T? ToEnum<T>(this object texto) where T : struct | Converte um objeto (int ou string) para um tipo Enum nullable. |
VerificarTagsMaliciosasPdf | public static bool VerificarTagsMaliciosasPdf(Stream stream) | Verifica se um documento PDF (stream) contém scripts JavaScript ou palavras-chave perigosas. |
ValidaSQLMalicioso | private static bool ValidaSQLMalicioso(Stream stream) | Valida se o conteúdo textual de um stream contém padrões típicos de SQL Injection. |
ContarCasasDecimais | public static int ContarCasasDecimais(decimal numero) | Conta o número de casas decimais de um número decimal. |
ValidaConteudoRequisicao | public static bool ValidaConteudoRequisicao(Stream fileStream) | Valida se o conteúdo de um stream de requisição contém SQL ou conteúdo malicioso. |
NormalizarCPF | public static string NormalizarCPF(string cpf) | Normaliza uma string de CPF, removendo caracteres não numéricos e preenchendo com zeros à esquerda. |
PossuiDiferencaCampos | public static bool PossuiDiferencaCampos(Dictionary<string, object> camposOriginais, Dictionary<string, object> camposAlterados) | Verifica se há diferenças entre dois dicionários de campos. |
EnumPossuiValor | public static bool EnumPossuiValor<TEnum>(int valor) where TEnum : Enum | Verifica 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:
- Verifica se
datatem valor. Se não, retornanull. - Define uma query SQL que chama a função de tabela
TAB_SF_ProximoDiaUtil. - Cria uma lista de
SqlParameterpara@Data,@Incremento,@Idf_Estadoe@Idf_Cidade. - Atribui os valores dos parâmetros.
- Executa a query usando
DataAccessLayer.ExecuteScalarpara obter o resultado. - Se o resultado for
DBNull.Value, retornanull. - Caso contrário, converte o resultado para
DateTime?e o retorna.
- Verifica se
- 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:
- Otimização para
arrPivotColumnValues: Verifica searrPivotColumnValuesé fornecido e se seus tipos de dados são consistentes com apivotColumn. Se sim, uma flagflgUsarArrPivotColumnValuesé ativada. - Tratamento de Máscara de Colunas: Garante que cada
KeyValuePairemlistPivotValuestenha uma máscara de nome de coluna (se não fornecida, usa “{0}”). - Identificação de Chaves Primárias:
- Otimização para
- Cria uma cópia da
DataTableoriginal (temp). - Remove a
pivotColumne as colunas delistPivotValuesdetemp. - As colunas restantes em
tempsão consideradas as chaves primárias (pkColumnNames).
- 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.
- Criação de Colunas Pivotadas:
- Se
flgUsarArrPivotColumnValuesforfalse: - Itera sobre os valores distintos da
pivotColumnnadtoriginal. - Para cada valor distinto, cria novas colunas em
resultusando a máscara de nome e o tipo de dado de cadaDataColumnemlistPivotValues. - Se
flgUsarArrPivotColumnValuesfortrue: - Itera sobre os valores em
arrPivotColumnValues. - Para cada valor, cria novas colunas em
resultda mesma forma.
- Preenchimento da Tabela de Resultados:
- Itera sobre cada
DataRownadtoriginal. - Encontra a linha correspondente em
resultusando as chaves primárias. - Para cada
KeyValuePairemlistPivotValues: - Constrói o nome da coluna pivotada.
- Se a coluna pivotada não existir ou o valor da
pivotColumnfor nulo, não faz nada. - Se o valor na célula pivotada em
aggRowfor 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.Addse 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
DataTableem memória). - Validações: Verifica a consistência dos tipos de dados em
arrPivotColumnValuespara 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:
- Separa o
valoremreais(parte inteira) ecentavos(parte decimal). - Inicializa
valorExtensocomo uma string vazia. - Tratamento da Parte Inteira (
reais):
- Separa o
- Se
reaisfor maior que zero, chamaValorPorExtenso(reais)(versão paralong). - Se
TipoValorforMonetario: - Adiciona ” real” se
reaisfor 1, ou ” reais” caso contrário. - Se
centavosfor zero eTipoValorforPorcentagem: - Adiciona ” por cento”.
- Tratamento da Parte Decimal (
centavos):
- Se
centavosfor maior que zero: - Se
reaistambém for maior que zero: - Adiciona ” e ” se
TipoValorforMonetario. - Adiciona ” vírgula ” se
TipoValorforPorcentagem. - Chama
ValorPorExtenso(centavos)(versão paralong). - Se
TipoValorforMonetario: - Adiciona ” centavo” se
centavosfor 1, ou ” centavos” caso contrário. - Se
TipoValorforPorcentagem: - Adiciona ” por cento”.
- Retorna
valorExtensoem 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:
- Verifica se a lista
permissoesnão é nula. - Se não for nula, verifica se a lista
permissoescontém opermissaoNecessaria. - Retorna
truese a permissão for encontrada,falsecaso contrário.
- Verifica se a lista
- 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:
- Chama
ValidaSQLMalicioso(fileStream). Se retornarfalse, este método também retornafalse. - Chama
ValidaConteudoMalicioso(fileStream). Se retornarfalse, este método também retornafalse. - Se ambas as validações passarem, retorna
true.
- Chama
- Stored Procedures chamadas: Nenhuma (chama métodos internos de validação).
- Validações: Delega a validação para
ValidaSQLMaliciosoeValidaConteudoMalicioso. - 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