LevelOS-Core/DAL/DALLBackupAutomatico.cs

282 lines
8.9 KiB
C#

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<ModeloBackupAutomatico> Listar()
{
List<ModeloBackupAutomatico> 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);
}
}
}