using CPM; using MLL; using System; using System.Drawing; using System.Windows.Forms; using UI; namespace UI { public partial class ContratoEquipamentosCadastroPanel : FormularioModelo { private ModeloContratoEquipamentos _itemContrato = new ModeloContratoEquipamentos(); // Controles - Vínculo e Identificação private LV_TEXTBOX1 txtId, txtContratoId, txtDescricaoContrato; private Button btnBuscaContrato; // Controles - Especificações do Equipamento private LV_TEXTBOX1 txtModelo, txtMarca, txtOperadora; private LV_TEXTBOX1 txtSerial, txtPatrimonio, txtObservacoes; public ContratoEquipamentosCadastroPanel() { this.Titulo = "Vínculo de Equipamentos ao Contrato"; MontarInterface(); } private void MontarInterface() { // --- SEÇÃO 1: Vínculo com o Contrato --- content.Controls.Add(CreateSectionHeader("DADOS DO CONTRATO", 20)); txtId = AddInput(content, "ID VÍNCULO", 20, 50, 90, 30, true); txtContratoId = AddInput(content, "ID CONTRATO", 120, 50, 90, 30); btnBuscaContrato = CriarBotaoLupa(215, 66, OnBuscaContrato); txtDescricaoContrato = AddInput(content, "DESCRIÇÃO / CLIENTE DO CONTRATO", 255, 50, 400, 30, true); // --- SEÇÃO 2: Especificações Técnicas --- content.Controls.Add(CreateSectionHeader("ESPECIFICAÇÕES DO EQUIPAMENTO", 110)); txtMarca = AddInput(content, "MARCA", 20, 140, 240, 30); txtModelo = AddInput(content, "MODELO", 270, 140, 240, 30); txtOperadora = AddInput(content, "OPERADORA (CHIP/LINK)", 520, 140, 200, 30); // --- SEÇÃO 3: Identificação Única --- content.Controls.Add(CreateSectionHeader("IDENTIFICAÇÃO E RASTREABILIDADE", 200)); txtSerial = AddInput(content, "NÚMERO DE SÉRIE / IMEI", 20, 230, 300, 30); txtPatrimonio = AddInput(content, "Nº PATRIMÔNIO", 330, 230, 200, 30); // --- SEÇÃO 4: Observações --- content.Controls.Add(CreateSectionHeader("NOTAS DO ITEM", 290)); txtObservacoes = AddInput(content, "OBSERVAÇÕES DE INSTALAÇÃO/ESTADO", 20, 320, 860, 60); content.Height = 450; } // Helper para criar lupas (reutilizando a lógica do financeiro) private Button CriarBotaoLupa(int x, int y, EventHandler clickEvent) { var btn = new Button { Text = "🔍", Location = new Point(x, y), Size = new Size(32, 30), BackColor = AccentBlue, ForeColor = Color.White, FlatStyle = FlatStyle.Flat, Cursor = Cursors.Hand }; btn.FlatAppearance.BorderSize = 0; btn.Click += clickEvent; content.Controls.Add(btn); return btn; } private void OnBuscaContrato(object sender, EventArgs e) { // Abre sua tela de busca de ModeloContrato MessageBox.Show("Abrir busca de Contratos ativos"); } private void PreencherModel() { if (int.TryParse(txtContratoId.Text, out int cId)) _itemContrato.ContratoId = cId; _itemContrato.Marca = txtMarca.Text; _itemContrato.Modelo = txtModelo.Text; _itemContrato.Operadora = txtOperadora.Text; _itemContrato.Serial = txtSerial.Text; _itemContrato.NumeroPatrimonio = txtPatrimonio.Text; _itemContrato.Observacoes = txtObservacoes.Text; } protected override void OnNovo() { _itemContrato = new ModeloContratoEquipamentos(); txtContratoId.Focus(); } protected override void OnSalvar() { try { PreencherModel(); // BLL.Salvar(_itemContrato); MessageBox.Show("Equipamento vinculado ao contrato com sucesso!"); } catch (Exception ex) { MessageBox.Show("Erro: " + ex.Message); } } protected override void OnAlterar() { } protected override void OnExcluir() { } protected override void OnLocalizar() { } protected override void OnCancelar() { OnNovo(); } } }