using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALLBackupAutomatico { private readonly string connectionString; public DALLBackupAutomatico(string connectionString) { this.connectionString = connectionString; } public bool Inserir(ModeloBackupAutomatico modelo) { using SqlConnection conn = new(connectionString); string query = @" INSERT INTO Config_backup_auto ( id_backup, ativo, frequencia, intervalo_minutos, horario, dia_semana, dia_mes, ultima_execucao, proxima_execucao, executando, criado_em, atualizado_em ) VALUES ( @id_backup, @ativo, @frequencia, @intervalo_minutos, @horario, @dia_semana, @dia_mes, @ultima_execucao, @proxima_execucao, @executando, @criado_em, @atualizado_em )"; using SqlCommand cmd = new(query, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//inserir public bool Atualizar(ModeloBackupAutomatico modelo) { using SqlConnection conn = new(connectionString); string query = @" UPDATE Config_backup_auto SET id_backup = @id_backup, ativo = @ativo, frequencia = @frequencia, intervalo_minutos = @intervalo_minutos, horario = @horario, dia_semana = @dia_semana, dia_mes = @dia_mes, ultima_execucao = @ultima_execucao, proxima_execucao = @proxima_execucao, executando = @executando, atualizado_em = @atualizado_em WHERE id = @id"; using SqlCommand cmd = new(query, conn); PreencherParametros(cmd, modelo); cmd.Parameters.AddWithValue("@id", modelo.Id); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//alterar public bool Excluir(int id) { using SqlConnection conn = new(connectionString); string query = "DELETE FROM Config_backup_auto WHERE id = @id"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//excluir public ModeloBackupAutomatico? ObterPorId(int id) { using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_auto WHERE id = @id"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id", id); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { return PreencherModelo(dr); } return null; }//CarregarUsandoID public List Listar() { List lista = []; using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_auto ORDER BY id DESC"; using SqlCommand cmd = new(query, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add(PreencherModelo(dr)); } return lista; }//listar public ModeloBackupAutomatico? ObterPorIdBackup(int idBackup) { using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_auto WHERE id_backup = @id_backup"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id_backup", idBackup); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { return PreencherModelo(dr); } return null; }//CarregarUsandoIDBackup public bool AtualizarProximaExecucao(int id, DateTime proximaExecucao) { using SqlConnection conn = new(connectionString); string query = @" UPDATE Config_backup_auto SET proxima_execucao = @proxima_execucao, atualizado_em = @atualizado_em WHERE id = @id"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@proxima_execucao", proximaExecucao); cmd.Parameters.AddWithValue("@atualizado_em", DateTime.Now); cmd.Parameters.AddWithValue("@id", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//AtualizarProximaExecucao public DataTable LocalizarTodos() { DataTable dt = new(); using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_auto"; using SqlCommand cmd = new(query, conn); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); dt.Load(dr); return dt; }//ListarDataTable private static ModeloBackupAutomatico PreencherModelo(SqlDataReader dr) { return new ModeloBackupAutomatico { Id = Convert.ToInt32(dr["id"]), IdBackup = Convert.ToInt32(dr["id_backup"]), Ativo = Convert.ToBoolean(dr["ativo"]), Frequencia = Convert.ToString(dr["frequencia"]) ?? string.Empty, IntervaloMinutos = dr["intervalo_minutos"] == DBNull.Value ? null : Convert.ToInt32(dr["intervalo_minutos"]), Horario = dr["horario"] == DBNull.Value ? null : (TimeSpan)dr["horario"], DiaSemana = dr["dia_semana"] == DBNull.Value ? null : Convert.ToInt32(dr["dia_semana"]), DiaMes = dr["dia_mes"] == DBNull.Value ? null : Convert.ToInt32(dr["dia_mes"]), UltimaExecucao = dr["ultima_execucao"] == DBNull.Value ? null : Convert.ToDateTime(dr["ultima_execucao"]), ProximaExecucao = dr["proxima_execucao"] == DBNull.Value ? null : Convert.ToDateTime(dr["proxima_execucao"]), Executando = Convert.ToBoolean(dr["executando"]), CriadoEm = Convert.ToDateTime(dr["criado_em"]), AtualizadoEm = dr["atualizado_em"] == DBNull.Value ? null : Convert.ToDateTime(dr["atualizado_em"]) }; } private static void PreencherParametros(SqlCommand cmd, ModeloBackupAutomatico modelo) { cmd.Parameters.AddWithValue("@id_backup", modelo.IdBackup); cmd.Parameters.AddWithValue("@ativo", modelo.Ativo); cmd.Parameters.AddWithValue("@frequencia", modelo.Frequencia); cmd.Parameters.AddWithValue("@intervalo_minutos", modelo.IntervaloMinutos.HasValue ? modelo.IntervaloMinutos.Value : DBNull.Value); cmd.Parameters.AddWithValue("@horario", modelo.Horario.HasValue ? modelo.Horario.Value : DBNull.Value); cmd.Parameters.AddWithValue("@dia_semana", modelo.DiaSemana.HasValue ? modelo.DiaSemana.Value : DBNull.Value); cmd.Parameters.AddWithValue("@dia_mes", modelo.DiaMes.HasValue ? modelo.DiaMes.Value : DBNull.Value); cmd.Parameters.AddWithValue("@ultima_execucao", modelo.UltimaExecucao.HasValue ? modelo.UltimaExecucao.Value : DBNull.Value); cmd.Parameters.AddWithValue("@proxima_execucao", modelo.ProximaExecucao.HasValue ? modelo.ProximaExecucao.Value : DBNull.Value); cmd.Parameters.AddWithValue("@executando", modelo.Executando); cmd.Parameters.AddWithValue("@criado_em", modelo.CriadoEm); cmd.Parameters.AddWithValue("@atualizado_em", modelo.AtualizadoEm.HasValue ? modelo.AtualizadoEm.Value : DBNull.Value); } } }