LevelOS-Core/DAL/DALLCloudBackup.cs

356 lines
12 KiB
C#

using Microsoft.Data.SqlClient;
using MLL;
using System;
using System.Collections.Generic;
using System.Data;
namespace DAL
{
public class DALLCloudBackup
{
private readonly string connectionString;
public DALLCloudBackup(string connectionString)
{
this.connectionString = connectionString;
}
public bool Inserir(ModeloCloudBackup modelo)
{
using SqlConnection conn = new(connectionString);
string query = @"
INSERT INTO Config_cloud_backup
(
nome,
tipo,
client_id,
client_secret,
access_token,
refresh_token,
token_expira_em,
url,
usuario,
senha,
pasta_base,
ativo,
criado_em,
atualizado_em
)
VALUES
(
@nome,
@tipo,
@client_id,
@client_secret,
@access_token,
@refresh_token,
@token_expira_em,
@url,
@usuario,
@senha,
@pasta_base,
@ativo,
@criado_em,
@atualizado_em
)";
using SqlCommand cmd = new(query, conn);
PreencherParametros(cmd, modelo);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//Incluir
public bool Alterar(ModeloCloudBackup modelo)
{
using SqlConnection conn = new(connectionString);
string query = @"
UPDATE Config_cloud_backup
SET
nome = @nome,
tipo = @tipo,
client_id = @client_id,
client_secret = @client_secret,
access_token = @access_token,
refresh_token = @refresh_token,
token_expira_em = @token_expira_em,
url = @url,
usuario = @usuario,
senha = @senha,
pasta_base = @pasta_base,
ativo = @ativo,
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_cloud_backup WHERE id = @id";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//Excluir
public ModeloCloudBackup? ObterPorId(int id)
{
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Config_cloud_backup 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;
}//ObterPorID
public List<ModeloCloudBackup> Listar()
{
List<ModeloCloudBackup> lista = [];
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Config_cloud_backup 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 ModeloCloudBackup? ObterAtivo()
{
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Config_cloud_backup WHERE ativo = 1";
using SqlCommand cmd = new(query, conn);
conn.Open();
using SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
return PreencherModelo(dr);
}
return null;
}//ObterAtivo
public bool DesativarTodos()
{
using SqlConnection conn = new(connectionString);
string query = "UPDATE Config_cloud_backup SET ativo = 0";
using SqlCommand cmd = new(query, conn);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//DesativarTodos
public bool Ativar(int id)
{
using SqlConnection conn = new(connectionString);
string query = "UPDATE Config_cloud_backup SET ativo = 1 WHERE id = @id";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//Ativar
public bool AtualizarToken(int id, string accessToken, string refreshToken, DateTime tokenExpiraEm)
{
using SqlConnection conn = new(connectionString);
string query = @"
UPDATE Config_cloud_backup
SET
access_token = @access_token,
refresh_token = @refresh_token,
token_expira_em = @token_expira_em,
atualizado_em = @atualizado_em
WHERE id = @id";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@access_token", accessToken);
cmd.Parameters.AddWithValue("@refresh_token", refreshToken);
cmd.Parameters.AddWithValue("@token_expira_em", tokenExpiraEm);
cmd.Parameters.AddWithValue("@atualizado_em", DateTime.Now);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//AtualizarToken
public bool AtualizarCredenciais(int id, string clientId, string clientSecret)
{
using SqlConnection conn = new(connectionString);
string query = @"
UPDATE Config_cloud_backup
SET
client_id = @client_id,
client_secret = @client_secret,
atualizado_em = @atualizado_em
WHERE id = @id";
using SqlCommand cmd = new(query, conn);
cmd.Parameters.AddWithValue("@client_id", clientId);
cmd.Parameters.AddWithValue("@client_secret", clientSecret);
cmd.Parameters.AddWithValue("@atualizado_em", DateTime.Now);
cmd.Parameters.AddWithValue("@id", id);
conn.Open();
return cmd.ExecuteNonQuery() > 0;
}//AtualizarCredenciais
public DataTable LocalizarTodos()
{
using SqlConnection conn = new(connectionString);
string query = "SELECT * FROM Config_cloud_backup";
using SqlCommand cmd = new(query, conn);
using SqlDataAdapter da = new(cmd);
DataTable dt = new();
da.Fill(dt);
return dt;
}//LocalizarTodos
private static ModeloCloudBackup PreencherModelo(SqlDataReader dr)
{
return new ModeloCloudBackup
{
Id = Convert.ToInt32(dr["id"]),
Nome = Convert.ToString(dr["nome"]) ?? string.Empty,
Tipo = Convert.ToString(dr["tipo"]) ?? string.Empty,
ClientId = dr["client_id"] == DBNull.Value
? null
: Convert.ToString(dr["client_id"]),
ClientSecret = dr["client_secret"] == DBNull.Value
? null
: Convert.ToString(dr["client_secret"]),
AccessToken = dr["access_token"] == DBNull.Value
? null
: Convert.ToString(dr["access_token"]),
RefreshToken = dr["refresh_token"] == DBNull.Value
? null
: Convert.ToString(dr["refresh_token"]),
TokenExpiraEm = dr["token_expira_em"] == DBNull.Value
? null
: Convert.ToDateTime(dr["token_expira_em"]),
Url = dr["url"] == DBNull.Value
? null
: Convert.ToString(dr["url"]),
Usuario = dr["usuario"] == DBNull.Value
? null
: Convert.ToString(dr["usuario"]),
Senha = dr["senha"] == DBNull.Value
? null
: Convert.ToString(dr["senha"]),
PastaBase = dr["pasta_base"] == DBNull.Value
? null
: Convert.ToString(dr["pasta_base"]),
Ativo = Convert.ToBoolean(dr["ativo"]),
CriadoEm = dr["criado_em"] == DBNull.Value
? null
: Convert.ToDateTime(dr["criado_em"]),
AtualizadoEm = dr["atualizado_em"] == DBNull.Value
? null
: Convert.ToDateTime(dr["atualizado_em"])
};
}
private static void PreencherParametros(SqlCommand cmd, ModeloCloudBackup modelo)
{
cmd.Parameters.AddWithValue("@nome", modelo.Nome);
cmd.Parameters.AddWithValue("@tipo", modelo.Tipo);
cmd.Parameters.AddWithValue("@client_id",
string.IsNullOrWhiteSpace(modelo.ClientId)
? DBNull.Value
: modelo.ClientId);
cmd.Parameters.AddWithValue("@client_secret",
string.IsNullOrWhiteSpace(modelo.ClientSecret)
? DBNull.Value
: modelo.ClientSecret);
cmd.Parameters.AddWithValue("@access_token",
string.IsNullOrWhiteSpace(modelo.AccessToken)
? DBNull.Value
: modelo.AccessToken);
cmd.Parameters.AddWithValue("@refresh_token",
string.IsNullOrWhiteSpace(modelo.RefreshToken)
? DBNull.Value
: modelo.RefreshToken);
cmd.Parameters.AddWithValue("@token_expira_em",
modelo.TokenExpiraEm.HasValue
? modelo.TokenExpiraEm.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@url",
string.IsNullOrWhiteSpace(modelo.Url)
? DBNull.Value
: modelo.Url);
cmd.Parameters.AddWithValue("@usuario",
string.IsNullOrWhiteSpace(modelo.Usuario)
? DBNull.Value
: modelo.Usuario);
cmd.Parameters.AddWithValue("@senha",
string.IsNullOrWhiteSpace(modelo.Senha)
? DBNull.Value
: modelo.Senha);
cmd.Parameters.AddWithValue("@pasta_base",
string.IsNullOrWhiteSpace(modelo.PastaBase)
? DBNull.Value
: modelo.PastaBase);
cmd.Parameters.AddWithValue("@ativo", modelo.Ativo);
cmd.Parameters.AddWithValue("@criado_em",
modelo.CriadoEm.HasValue
? modelo.CriadoEm.Value
: DBNull.Value);
cmd.Parameters.AddWithValue("@atualizado_em",
modelo.AtualizadoEm.HasValue
? modelo.AtualizadoEm.Value
: DBNull.Value);
}
}
}