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

119 lines
5.7 KiB
C#

using CPM;
using MLL;
using System;
using System.Drawing;
using System.Windows.Forms;
using UI;
namespace UI
{
public partial class BackupCadastroPanel : FormularioModelo
{
private ModeloBackup _backup = new ModeloBackup();
// Controles - Configuração Geral
private LV_TEXTBOX1 txtId, txtNome, txtOrigem, txtCaminhoDestino;
private ComboBox cbTipoBackup, cbDestinoTipo, cbFrequencia;
// Controles - Segurança e Compactação
private CheckBox chkCompactar, chkCriptografia, chkAtivo;
private LV_TEXTBOX1 txtAlgoritmo, txtManterUltimos;
// Controles - Agendamento
private DateTimePicker dtpHorario;
// Controles - Status e Logs (Somente Leitura)
private LV_TEXTBOX1 txtStatusUltimo, txtDataUltimo, txtLogUltimo;
public BackupCadastroPanel()
{
this.Titulo = "Configuração e Agendamento de Backup";
MontarInterface();
}
private void MontarInterface()
{
// --- SEÇÃO 1: Definição do Backup ---
content.Controls.Add(CreateSectionHeader("O QUE SERÁ SALVO?", 20));
txtId = AddInput(content, "ID", 20, 50, 70, 30, true);
txtNome = AddInput(content, "NOME DA ROTINA (EX: BACKUP DIÁRIO DB)", 100, 50, 300, 30);
Label lblTipo = new Label { Text = "TIPO", Location = new Point(410, 33), AutoSize = true };
cbTipoBackup = new ComboBox { Location = new Point(410, 50), Size = new Size(130, 30), DropDownStyle = ComboBoxStyle.DropDownList };
cbTipoBackup.Items.AddRange(new object[] { "database", "arquivos", "completo" });
txtOrigem = AddInput(content, "ORIGEM (NOME DO BANCO OU DIRETÓRIO)", 20, 105, 520, 30);
chkAtivo = new CheckBox { Text = "ATIVO", Location = new Point(560, 121), AutoSize = true, Checked = true };
content.Controls.Add(lblTipo);
content.Controls.Add(cbTipoBackup);
content.Controls.Add(chkAtivo);
// --- SEÇÃO 2: Destino e Frequência ---
content.Controls.Add(CreateSectionHeader("ONDE E QUANDO?", 165));
Label lblDest = new Label { Text = "DESTINO", Location = new Point(20, 178), AutoSize = true };
cbDestinoTipo = new ComboBox { Location = new Point(20, 195), Size = new Size(120, 30), DropDownStyle = ComboBoxStyle.DropDownList };
cbDestinoTipo.Items.AddRange(new object[] { "local", "ftp", "ssh", "nuvem" });
txtCaminhoDestino = AddInput(content, "CAMINHO DE DESTINO / PASTA REMOTA", 150, 195, 390, 30);
Label lblFreq = new Label { Text = "FREQUÊNCIA", Location = new Point(20, 233), AutoSize = true };
cbFrequencia = new ComboBox { Location = new Point(20, 250), Size = new Size(120, 30), DropDownStyle = ComboBoxStyle.DropDownList };
cbFrequencia.Items.AddRange(new object[] { "manual", "diario", "semanal", "mensal" });
Label lblHora = new Label { Text = "HORÁRIO", Location = new Point(150, 233), AutoSize = true };
dtpHorario = new DateTimePicker { Location = new Point(150, 250), Size = new Size(100, 30), Format = DateTimePickerFormat.Time, ShowUpDown = true };
txtManterUltimos = AddInput(content, "RETENÇÃO (QTD)", 270, 250, 100, 30);
content.Controls.Add(lblDest);
content.Controls.Add(cbDestinoTipo);
content.Controls.Add(lblFreq);
content.Controls.Add(cbFrequencia);
content.Controls.Add(lblHora);
content.Controls.Add(dtpHorario);
// --- SEÇÃO 3: Segurança ---
content.Controls.Add(CreateSectionHeader("OPÇÕES DE ARQUIVO", 305));
chkCompactar = new CheckBox { Text = "COMPACTAR (.ZIP)", Location = new Point(20, 335), AutoSize = true };
chkCriptografia = new CheckBox { Text = "CRIPTOGRAFAR", Location = new Point(160, 335), AutoSize = true };
txtAlgoritmo = AddInput(content, "ALGORITMO", 300, 325, 150, 30);
content.Controls.Add(chkCompactar);
content.Controls.Add(chkCriptografia);
// --- SEÇÃO 4: Última Execução (Monitoramento) ---
content.Controls.Add(CreateSectionHeader("MONITORAMENTO", 380));
txtStatusUltimo = AddInput(content, "STATUS", 20, 410, 120, 30, true);
txtDataUltimo = AddInput(content, "DATA ÚLT. EXECUÇÃO", 150, 410, 180, 30, true);
txtLogUltimo = AddInput(content, "LOG / MENSAGEM", 340, 410, 495, 30, true);
content.Height = 480;
}
private void PreencherModel()
{
_backup.Nome = txtNome.Text;
_backup.TipoBackup = cbTipoBackup.Text;
_backup.Origem = txtOrigem.Text;
_backup.DestinoTipo = cbDestinoTipo.Text;
_backup.CaminhoDestino = txtCaminhoDestino.Text;
_backup.Compactar = chkCompactar.Checked;
_backup.UsarCriptografia = chkCriptografia.Checked;
_backup.AlgoritmoCriptografia = txtAlgoritmo.Text;
_backup.Frequencia = cbFrequencia.Text;
_backup.Horario = dtpHorario.Value.TimeOfDay;
_backup.ManterUltimos = int.TryParse(txtManterUltimos.Text, out int m) ? m : 5;
_backup.Ativo = chkAtivo.Checked;
}
protected override void OnNovo() { _backup = new ModeloBackup(); cbTipoBackup.SelectedIndex = 0; }
protected override void OnSalvar() { PreencherModel(); MessageBox.Show("Rotina de backup agendada!", "LevelOS Security"); }
protected override void OnCancelar() { }
protected override void OnAlterar() { }
protected override void OnExcluir() { }
protected override void OnLocalizar(){ }
}
}