322 lines
13 KiB
C#
322 lines
13 KiB
C#
using CPM;
|
|
using DAL;
|
|
using MLL;
|
|
using BLL;
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
|
|
namespace UI
|
|
{
|
|
public class CalibracaoCadastroPanel : FormularioModelo
|
|
{
|
|
// ── CAMPOS DO FORMULÁRIO ──────────────────────────────────────────────
|
|
private LV_TEXTBOX1 txtIdCalibracao = null!;
|
|
private LV_TEXTBOX1 txtCodigo = null!;
|
|
private LV_TEXTBOX1 txtOsNumero = null!;
|
|
private LV_TEXTBOX1 txtData = null!;
|
|
private LV_TEXTBOX1 txtTemp = null!;
|
|
private LV_TEXTBOX1 txtHumidade = null!;
|
|
private LV_TEXTBOX1 txtResponsavel = null!;
|
|
private LV_TEXTBOX1 txtObserv = null!;
|
|
|
|
// ── ESTADO DO FORMULÁRIO ──────────────────────────────────────────────
|
|
private enum ModoFormulario { Visualizacao, Novo, Edicao }
|
|
private ModoFormulario _modo = ModoFormulario.Visualizacao;
|
|
private int _idAtual = 0;
|
|
|
|
// ── BLL ───────────────────────────────────────────────────────────────
|
|
// private CalibracaoBLL _bll = null!;
|
|
|
|
// ── CONSTRUTOR ────────────────────────────────────────────────────────
|
|
public CalibracaoCadastroPanel()
|
|
{
|
|
Titulo = "Cadastro de Calibração";
|
|
BuildForm();
|
|
AplicarModo(ModoFormulario.Visualizacao);
|
|
}
|
|
|
|
// ── CONSTRUÇÃO DOS CAMPOS ─────────────────────────────────────────────
|
|
private void BuildForm()
|
|
{
|
|
// ── SEÇÃO: IDENTIFICAÇÃO ──────────────────────────────────────────
|
|
content.Controls.Add(CreateSectionHeader("Identificação", 20));
|
|
|
|
txtIdCalibracao = AddInput(content, "ID", 20, 58, 80, 32, readOnly: true);
|
|
|
|
txtCodigo = AddInput(content, "Código", 120, 58, 200, 32);
|
|
txtCodigo.MaxLength = 50;
|
|
|
|
txtOsNumero = AddInput(content, "Nº da OS", 340, 58, 200, 32);
|
|
txtOsNumero.MaxLength = 50;
|
|
|
|
// ── SEÇÃO: CONDIÇÕES ──────────────────────────────────────────────
|
|
content.Controls.Add(CreateSectionHeader("Condições do ambiente", 120));
|
|
|
|
txtData = AddInput(content, "Data", 20, 158, 160, 32);
|
|
txtData.MaxLength = 20;
|
|
|
|
txtTemp = AddInput(content, "Temperatura", 200, 158, 160, 32);
|
|
txtTemp.MaxLength = 20;
|
|
|
|
txtHumidade = AddInput(content, "Humidade", 380, 158, 160, 32);
|
|
txtHumidade.MaxLength = 20;
|
|
|
|
// ── SEÇÃO: RESPONSÁVEL ────────────────────────────────────────────
|
|
content.Controls.Add(CreateSectionHeader("Responsável", 220));
|
|
|
|
txtResponsavel = AddInput(content, "Responsável", 20, 258, 320, 32);
|
|
txtResponsavel.MaxLength = 100;
|
|
|
|
// ── SEÇÃO: OBSERVAÇÕES ────────────────────────────────────────────
|
|
content.Controls.Add(CreateSectionHeader("Observações", 320));
|
|
|
|
// Observações — campo maior, multiline via LV_TEXTBOX1
|
|
var lblObserv = new Label
|
|
{
|
|
Text = "Observações",
|
|
Location = new Point(20, 358),
|
|
Font = new Font("Segoe UI", 7.5f, FontStyle.Bold),
|
|
ForeColor = TextDark,
|
|
AutoSize = true
|
|
};
|
|
|
|
txtObserv = new LV_TEXTBOX1
|
|
{
|
|
Location = new Point(20, 374),
|
|
Size = new Size(720, 80),
|
|
BorderColor = BorderColor,
|
|
BorderFocusColor = AccentBlue,
|
|
Multiline = true,
|
|
MaxLength = 255
|
|
};
|
|
|
|
content.Controls.Add(lblObserv);
|
|
content.Controls.Add(txtObserv);
|
|
|
|
content.Height = 490;
|
|
}
|
|
|
|
// ── MODOS DO FORMULÁRIO ───────────────────────────────────────────────
|
|
private void AplicarModo(ModoFormulario modo)
|
|
{
|
|
_modo = modo;
|
|
|
|
bool editando = modo == ModoFormulario.Novo || modo == ModoFormulario.Edicao;
|
|
|
|
// Campos editáveis conforme o modo
|
|
txtCodigo.ReadOnly = !editando;
|
|
txtOsNumero.ReadOnly = !editando;
|
|
txtData.ReadOnly = !editando;
|
|
txtTemp.ReadOnly = !editando;
|
|
txtHumidade.ReadOnly = !editando;
|
|
txtResponsavel.ReadOnly = !editando;
|
|
txtObserv.ReadOnly = !editando;
|
|
|
|
// Cor de fundo conforme estado
|
|
Color bgAtivo = Color.White;
|
|
Color bgInativo = ReadOnlyBg;
|
|
|
|
txtCodigo.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtOsNumero.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtData.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtTemp.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtHumidade.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtResponsavel.BackColor = editando ? bgAtivo : bgInativo;
|
|
txtObserv.BackColor = editando ? bgAtivo : bgInativo;
|
|
|
|
// Bordas conforme estado
|
|
txtCodigo.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtOsNumero.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtData.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtTemp.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtHumidade.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtResponsavel.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
txtObserv.BorderColor = editando ? BorderColor : ReadOnlyBorder;
|
|
|
|
// Botões
|
|
btnNovo.Enabled = !editando;
|
|
btnAlterar.Enabled = !editando && _idAtual > 0;
|
|
btnExcluir.Enabled = !editando && _idAtual > 0;
|
|
btnLocalizar.Enabled = !editando;
|
|
btnSalvar.Enabled = editando;
|
|
btnCancelar.Enabled = editando;
|
|
|
|
if (modo == ModoFormulario.Novo) LimparCampos();
|
|
}
|
|
|
|
// ── POPULAR / LIMPAR CAMPOS ───────────────────────────────────────────
|
|
private void PopularCampos(ModeloCalibracao m)
|
|
{
|
|
_idAtual = m.ID_CALIBRACAO;
|
|
|
|
txtIdCalibracao.Text = m.ID_CALIBRACAO.ToString();
|
|
txtCodigo.Text = m.CODIGO;
|
|
txtOsNumero.Text = m.OS_NUMERO;
|
|
txtData.Text = m.DATA;
|
|
txtTemp.Text = m.TEMP;
|
|
txtHumidade.Text = m.HUMIDADE;
|
|
txtResponsavel.Text = m.RESPONSABEL;
|
|
txtObserv.Text = m.OBSERV;
|
|
}
|
|
|
|
private void LimparCampos()
|
|
{
|
|
_idAtual = 0;
|
|
|
|
txtIdCalibracao.Text = string.Empty;
|
|
txtCodigo.Text = string.Empty;
|
|
txtOsNumero.Text = string.Empty;
|
|
txtData.Text = string.Empty;
|
|
txtTemp.Text = string.Empty;
|
|
txtHumidade.Text = string.Empty;
|
|
txtResponsavel.Text = string.Empty;
|
|
txtObserv.Text = string.Empty;
|
|
}
|
|
|
|
// ── VALIDAÇÃO ─────────────────────────────────────────────────────────
|
|
private bool Validar()
|
|
{
|
|
if (string.IsNullOrWhiteSpace(txtCodigo.Text))
|
|
{
|
|
MessageBox.Show("Informe o código da calibração.", "Validação",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
txtCodigo.Focus();
|
|
return false;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(txtOsNumero.Text))
|
|
{
|
|
MessageBox.Show("Informe o número da OS.", "Validação",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
txtOsNumero.Focus();
|
|
return false;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(txtData.Text))
|
|
{
|
|
MessageBox.Show("Informe a data da calibração.", "Validação",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
txtData.Focus();
|
|
return false;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(txtResponsavel.Text))
|
|
{
|
|
MessageBox.Show("Informe o responsável pela calibração.", "Validação",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
txtResponsavel.Focus();
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
// ── MONTAR MODELO A PARTIR DOS CAMPOS ─────────────────────────────────
|
|
private ModeloCalibracao MontarModelo() => new ModeloCalibracao(
|
|
_idAtual,
|
|
txtCodigo.Text.Trim(),
|
|
txtOsNumero.Text.Trim(),
|
|
txtData.Text.Trim(),
|
|
txtTemp.Text.Trim(),
|
|
txtHumidade.Text.Trim(),
|
|
txtResponsavel.Text.Trim(),
|
|
txtObserv.Text.Trim()
|
|
);
|
|
|
|
// ── EVENTOS ABSTRATOS ─────────────────────────────────────────────────
|
|
protected override void OnNovo()
|
|
{
|
|
AplicarModo(ModoFormulario.Novo);
|
|
txtCodigo.Focus();
|
|
}
|
|
|
|
protected override void OnAlterar()
|
|
{
|
|
if (_idAtual == 0) return;
|
|
AplicarModo(ModoFormulario.Edicao);
|
|
txtCodigo.Focus();
|
|
}
|
|
|
|
protected override void OnExcluir()
|
|
{
|
|
if (_idAtual == 0) return;
|
|
|
|
var confirm = MessageBox.Show(
|
|
$"Deseja realmente excluir a calibração \"{txtCodigo.Text}\"?",
|
|
"Confirmar exclusão",
|
|
MessageBoxButtons.YesNo,
|
|
MessageBoxIcon.Warning);
|
|
|
|
if (confirm != DialogResult.Yes) return;
|
|
|
|
try
|
|
{
|
|
// TODO: _bll.Excluir(_idAtual);
|
|
MessageBox.Show("Calibração excluída com sucesso.", "Sucesso",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
LimparCampos();
|
|
AplicarModo(ModoFormulario.Visualizacao);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"Erro ao excluir:\n{ex.Message}", "Erro",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
protected override void OnLocalizar()
|
|
{
|
|
// TODO: abrir formulário de busca e retornar a calibração selecionada
|
|
// var frm = new FormularioBuscarCalibracao();
|
|
// if (frm.ShowDialog() == DialogResult.OK)
|
|
// {
|
|
// PopularCampos(frm.CalibracaoSelecionada);
|
|
// AplicarModo(ModoFormulario.Visualizacao);
|
|
// }
|
|
|
|
MessageBox.Show("Implemente o formulário de busca de calibrações.",
|
|
"Localizar", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
protected override void OnSalvar()
|
|
{
|
|
if (!Validar()) return;
|
|
|
|
var modelo = MontarModelo();
|
|
|
|
try
|
|
{
|
|
if (_modo == ModoFormulario.Novo)
|
|
{
|
|
// TODO: _bll.Criar(modelo);
|
|
MessageBox.Show("Calibração cadastrada com sucesso!", "Sucesso",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
else
|
|
{
|
|
// TODO: _bll.Atualizar(modelo);
|
|
MessageBox.Show("Calibração atualizada com sucesso!", "Sucesso",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
}
|
|
|
|
AplicarModo(ModoFormulario.Visualizacao);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show($"Erro ao salvar:\n{ex.Message}", "Erro",
|
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
protected override void OnCancelar()
|
|
{
|
|
if (_idAtual > 0)
|
|
{
|
|
// TODO: recarregar do banco se necessário
|
|
}
|
|
LimparCampos();
|
|
AplicarModo(ModoFormulario.Visualizacao);
|
|
}
|
|
}
|
|
} |