using Microsoft.Data.SqlClient; using MLL; using System; using System.Collections.Generic; using System.Data; namespace DALL { public class DALLBackupExecucao { private readonly string connectionString; public DALLBackupExecucao(string connectionString) { this.connectionString = connectionString; } public bool Inserir(ModeloBackupExecucao modelo) { using SqlConnection conn = new(connectionString); string query = @" INSERT INTO Config_backup_execucao ( id_backup, data_execucao, status, mensagem, tamanho_arquivo, duracao_segundos ) VALUES ( @id_backup, @data_execucao, @status, @mensagem, @tamanho_arquivo, @duracao_segundos )"; using SqlCommand cmd = new(query, conn); PreencherParametros(cmd, modelo); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//inserir public bool Alterar(ModeloBackupExecucao modelo) { using SqlConnection conn = new(connectionString); string query = @" UPDATE Config_backup_execucao SET id_backup = @id_backup, data_execucao = @data_execucao, status = @status, mensagem = @mensagem, tamanho_arquivo = @tamanho_arquivo, duracao_segundos = @duracao_segundos 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_execucao WHERE id = @id"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id", id); conn.Open(); return cmd.ExecuteNonQuery() > 0; }//excluir public ModeloBackupExecucao? ObterPorId(int id) { using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_execucao 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; }//CarregarID public List Listar() { List lista = []; using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_execucao 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 List ListarPorIdBackup(int idBackup) { List lista = []; using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_execucao WHERE id_backup = @id_backup ORDER BY id DESC"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id_backup", idBackup); conn.Open(); using SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { lista.Add(PreencherModelo(dr)); } return lista; }//ListarPorIdBackup public int ContarExecucoesPorIdBackup(int idBackup) { using SqlConnection conn = new(connectionString); string query = "SELECT COUNT(*) FROM Config_backup_execucao WHERE id_backup = @id_backup"; using SqlCommand cmd = new(query, conn); cmd.Parameters.AddWithValue("@id_backup", idBackup); conn.Open(); return Convert.ToInt32(cmd.ExecuteScalar()); }//ContarExecucoesPorIdBackup public ModeloBackupExecucao? ObterUltimaExecucaoPorIdBackup(int idBackup) { using SqlConnection conn = new(connectionString); string query = "SELECT TOP 1 * FROM Config_backup_execucao WHERE id_backup = @id_backup ORDER BY data_execucao DESC"; 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; }//ObterUltimaExecucaoPorIdBackup public DataTable LocalizarTodos() { using SqlConnection conn = new(connectionString); string query = "SELECT * FROM Config_backup_execucao"; using SqlCommand cmd = new(query, conn); using SqlDataAdapter da = new(cmd); DataTable dt = new(); da.Fill(dt); return dt; }//LocalizarTodos private static ModeloBackupExecucao PreencherModelo(SqlDataReader dr) { return new ModeloBackupExecucao { Id = Convert.ToInt32(dr["id"]), IdBackup = Convert.ToInt32(dr["id_backup"]), DataExecucao = dr["data_execucao"] == DBNull.Value ? DateTime.MinValue : Convert.ToDateTime(dr["data_execucao"]), Status = Convert.ToString(dr["status"]) ?? string.Empty, Mensagem = dr["mensagem"] == DBNull.Value ? null : Convert.ToString(dr["mensagem"]), TamanhoArquivo = dr["tamanho_arquivo"] == DBNull.Value ? null : Convert.ToInt64(dr["tamanho_arquivo"]), DuracaoSegundos = dr["duracao_segundos"] == DBNull.Value ? null : Convert.ToInt32(dr["duracao_segundos"]) }; } private static void PreencherParametros(SqlCommand cmd, ModeloBackupExecucao modelo) { cmd.Parameters.AddWithValue("@id_backup", modelo.IdBackup); cmd.Parameters.AddWithValue("@data_execucao", modelo.DataExecucao); cmd.Parameters.AddWithValue("@status", modelo.Status); cmd.Parameters.AddWithValue("@mensagem", string.IsNullOrWhiteSpace(modelo.Mensagem) ? DBNull.Value : modelo.Mensagem); cmd.Parameters.AddWithValue("@tamanho_arquivo", modelo.TamanhoArquivo.HasValue ? modelo.TamanhoArquivo.Value : DBNull.Value); cmd.Parameters.AddWithValue("@duracao_segundos", modelo.DuracaoSegundos.HasValue ? modelo.DuracaoSegundos.Value : DBNull.Value); } } }