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(); } } }