LevelOS-Core/UI/Dashboards/Cadastros/PerfilPanel.cs

115 lines
4.1 KiB
C#

using CPM;
using MLL;
using System;
using System.Drawing;
using System.Windows.Forms;
namespace UI
{
public class PerfilPanel : FormularioModelo
{
// Mapeamento absoluto de todas as propriedades do ModeloPerfil
private LV_TEXTBOX1 txtId;
private LV_TEXTBOX1 txtEmpresaId;
private LV_TEXTBOX1 txtNome;
private LV_TEXTBOX1 txtDescricao;
private CheckBox chkAtivo;
public PerfilPanel()
{
this.Titulo = "CONTROLE DE PERFIS DE ACESSO";
MontarInterfaceCompleta();
}
private void MontarInterfaceCompleta()
{
// --- SEÇÃO ÚNICA: ESTRUTURA DO PERFIL ---
content.Controls.Add(CreateSectionHeader("Configurações do Perfil de Usuário", 20));
// Linha 1: Chaves de Identificação e Vínculo Multi-Empresa
txtId = AddInput(content, "ID PERFIL", 20, 55, 110, 28, true);
txtEmpresaId = AddInput(content, "ID EMPRESA", 145, 55, 120, 28);
// Status Ativo/Inativo posicionado de forma alinhada na primeira linha
chkAtivo = new CheckBox
{
Text = "Perfil Liberado / Ativo",
Location = new Point(285, 71),
AutoSize = true,
Font = new Font("Segoe UI", 10F, FontStyle.Bold),
ForeColor = Color.FromArgb(64, 64, 64)
};
content.Controls.Add(chkAtivo);
// Linha 2: Nome do Grupo/Perfil
txtNome = AddInput(content, "NOME DO PERFIL (EX: ADMINISTRADOR, VENDEDOR)", 20, 115, 500, 28);
// Linha 3: Detalhamento das Permissões do Perfil
txtDescricao = AddInput(content, "DESCRIÇÃO DAS ATRIBUIÇÕES E PERMISSÕES DESTE NÍVEL", 20, 175, 500, 28);
}
// --- MÉTODOS OBRIGATÓRIOS DO FORMULÁRIO MODELO ---
protected override void OnNovo()
{
// Limpa os campos de texto editáveis
txtEmpresaId.Text = string.Empty;
txtNome.Text = string.Empty;
txtDescricao.Text = string.Empty;
// Estado padrão para novas inserções
txtId.Text = "0";
chkAtivo.Checked = true;
txtEmpresaId.Focus();
}
protected override void OnSalvar()
{
// Validação simples antes de montar o objeto
if (string.IsNullOrWhiteSpace(txtNome.Text))
{
MessageBox.Show("O nome do perfil é obrigatório.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
txtNome.Focus();
return;
}
// Mapeamento absoluto de todas as propriedades da classe
var perfil = new ModeloPerfil
{
Id = string.IsNullOrEmpty(txtId.Text) ? 0 : Convert.ToInt32(txtId.Text),
EmpresaId = string.IsNullOrEmpty(txtEmpresaId.Text) ? 0 : Convert.ToInt32(txtEmpresaId.Text),
Nome = txtNome.Text,
Descricao = txtDescricao.Text,
Ativo = chkAtivo.Checked // Atribuição booleana direta sem necessidade de conversão de string
};
// Envio do objeto limpo e populado para sua camada BLL / DAL do SQL Server
MessageBox.Show("Perfil de acesso salvo com sucesso!", "LevelOS", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
protected override void OnAlterar()
{
txtNome.Focus();
}
protected override void OnExcluir()
{
if (MessageBox.Show("Deseja realmente remover este perfil? Usuários vinculados a ele podem perder o acesso ao sistema.", "LevelOS", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
// Executa exclusão física ou lógica...
OnNovo();
}
}
protected override void OnLocalizar()
{
// Abre sua Grid / Tela de pesquisa para buscar os perfis existentes
}
protected override void OnCancelar()
{
OnNovo();
}
}
}