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