LevelOS-Core/DAL/DALLBackupExecucao.cs

231 lines
7.3 KiB
C#

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<ModeloBackupExecucao> Listar()
{
List<ModeloBackupExecucao> 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<ModeloBackupExecucao> ListarPorIdBackup(int idBackup)
{
List<ModeloBackupExecucao> 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);
}
}
}