using CPM; using MLL; using System; using System.Drawing; using System.Windows.Forms; using UI; namespace UI { public partial class BackupAutomaticoCadastroPanel : FormularioModelo { private ModeloBackupAutomatico _auto = new ModeloBackupAutomatico(); // Controles - Vínculo e Status private LV_TEXTBOX1 txtId, txtIdBackup, txtNomeBackup; private CheckBox chkAtivo, chkExecutando; // Controles - Recorrência private ComboBox cbFrequencia, cbDiaSemana; private NumericUpDown numIntervalo, numDiaMes; private DateTimePicker dtpHorario; // Controles - Monitoramento de Tempo private LV_TEXTBOX1 txtUltimaExec, txtProximaExec; public BackupAutomaticoCadastroPanel() { this.Titulo = "Agendamento Inteligente de Backup"; MontarInterface(); } private void MontarInterface() { // --- SEÇÃO 1: Identificação do Job --- content.Controls.Add(CreateSectionHeader("VÍNCULO DA TAREFA", 20)); txtId = AddInput(content, "ID", 20, 50, 70, 30, true); txtIdBackup = AddInput(content, "ID BACKUP", 100, 50, 100, 30); txtNomeBackup = AddInput(content, "ROTINA ASSOCIADA", 210, 50, 350, 30, true); chkAtivo = new CheckBox { Text = "AGENDAMENTO ATIVO", Location = new Point(580, 66), AutoSize = true, Font = new Font("Segoe UI", 9, FontStyle.Bold) }; chkExecutando = new CheckBox { Text = "EM EXECUÇÃO AGORA", Location = new Point(735, 66), AutoSize = true, Enabled = false }; content.Controls.Add(chkAtivo); content.Controls.Add(chkExecutando); // --- SEÇÃO 2: Regras de Frequência --- content.Controls.Add(CreateSectionHeader("PERIODICIDADE E REGRAS", 115)); Label lblFreq = new Label { Text = "FREQUÊNCIA", Location = new Point(20, 143), AutoSize = true }; cbFrequencia = new ComboBox { Location = new Point(20, 160), Size = new Size(150, 30), DropDownStyle = ComboBoxStyle.DropDownList }; cbFrequencia.Items.AddRange(new object[] { "INTERVALO", "DIARIO", "SEMANAL", "MENSAL" }); Label lblInt = new Label { Text = "INTERVALO (MIN)", Location = new Point(180, 143), AutoSize = true }; numIntervalo = new NumericUpDown { Location = new Point(180, 160), Size = new Size(100, 30), Maximum = 1440 }; Label lblHora = new Label { Text = "HORÁRIO FIXO", Location = new Point(290, 143), AutoSize = true }; dtpHorario = new DateTimePicker { Location = new Point(290, 160), Size = new Size(100, 30), Format = DateTimePickerFormat.Time, ShowUpDown = true }; Label lblSemana = new Label { Text = "DIA DA SEMANA", Location = new Point(400, 143), AutoSize = true }; cbDiaSemana = new ComboBox { Location = new Point(400, 160), Size = new Size(130, 30), DropDownStyle = ComboBoxStyle.DropDownList }; cbDiaSemana.Items.AddRange(new object[] { "Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado" }); Label lblDiaMes = new Label { Text = "DIA DO MÊS", Location = new Point(540, 143), AutoSize = true }; numDiaMes = new NumericUpDown { Location = new Point(540, 160), Size = new Size(80, 30), Minimum = 1, Maximum = 31 }; content.Controls.Add(lblFreq); content.Controls.Add(cbFrequencia); content.Controls.Add(lblInt); content.Controls.Add(numIntervalo); content.Controls.Add(lblHora); content.Controls.Add(dtpHorario); content.Controls.Add(lblSemana); content.Controls.Add(cbDiaSemana); content.Controls.Add(lblDiaMes); content.Controls.Add(numDiaMes); // --- SEÇÃO 3: Linha do Tempo --- content.Controls.Add(CreateSectionHeader("PRÓXIMAS ETAPAS", 220)); txtUltimaExec = AddInput(content, "ÚLTIMA VEZ QUE RODOU", 20, 250, 250, 30, true); txtProximaExec = AddInput(content, "AGENDADO PARA", 280, 250, 250, 30, true); txtProximaExec.BackColor = Color.LightYellow; content.Height = 350; // Lógica para habilitar/desabilitar campos baseado na frequência cbFrequencia.SelectedIndexChanged += (s, e) => ActualizarInterfaceFrequencia(); } private void ActualizarInterfaceFrequencia() { string freq = cbFrequencia.Text; numIntervalo.Enabled = (freq == "INTERVALO"); dtpHorario.Enabled = (freq != "INTERVALO"); cbDiaSemana.Enabled = (freq == "SEMANAL"); numDiaMes.Enabled = (freq == "MENSAL"); } private void PreencherModel() { _auto.IdBackup = int.TryParse(txtIdBackup.Text, out int idB) ? idB : 0; _auto.Ativo = chkAtivo.Checked; _auto.Frequencia = cbFrequencia.Text; _auto.IntervaloMinutos = (int)numIntervalo.Value; _auto.Horario = dtpHorario.Value.TimeOfDay; _auto.DiaSemana = cbDiaSemana.SelectedIndex; _auto.DiaMes = (int)numDiaMes.Value; } protected override void OnNovo() { _auto = new ModeloBackupAutomatico(); cbFrequencia.SelectedIndex = 1; } protected override void OnSalvar() { PreencherModel(); MessageBox.Show("Agendamento automático configurado!", "LevelOS Scheduler"); } protected override void OnCancelar() { } protected override void OnExcluir() { } protected override void OnLocalizar() { } protected override void OnAlterar() { } } }