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