2 using System.Collections.Generic;
10 using System.Windows.Forms;
14 namespace sage.addons.rgpd
16 internal static class RgpdFileExportManager
21 internal static IRgpdFileExportOperations _GeneradorFicherosExportacion
25 if(_oGeneradorFicherosExportacion == null)
26 _oGeneradorFicherosExportacion =
new RgpdFileExportToCSV();
27 return _oGeneradorFicherosExportacion;
29 set { _oGeneradorFicherosExportacion = value; }
31 private static IRgpdFileExportOperations _oGeneradorFicherosExportacion = null;
36 public static string _RutaFicheroGenerado
38 get {
return _cRutaFicheroGenerado; }
39 private set { _cRutaFicheroGenerado = value; }
41 private static string _cRutaFicheroGenerado =
string.Empty;
47 public static bool _Exportar(IRgpdInstanciaEntidad toOrigen,
bool tlSolicitarRuta =
true)
49 bool llResultadoExportacion =
false;
50 _cRutaFicheroGenerado =
"";
52 DataTable ldtDatos = obtenerDatosExportacion(toOrigen);
54 if (_GeneradorFicherosExportacion != null && _GeneradorFicherosExportacion._Exportar(ldtDatos, tlSolicitarRuta))
56 llResultadoExportacion =
true;
57 _cRutaFicheroGenerado = _GeneradorFicherosExportacion._RutaFicheroGenerado;
60 return llResultadoExportacion;
67 private static DataTable obtenerDatosExportacion(IRgpdInstanciaEntidad toOrigen)
70 DataTable ldtResultados =
new DataTable();
73 var camposSensibles = obtenerCamposSensiblesDeLaEntidad(toOrigen._CodigoEntidad);
76 if (camposSensibles.Any())
78 StringBuilder sbSql =
new StringBuilder();
80 camposSensibles.ToList().ForEach(loCampo => sbSql.Append(queryCampoSensible(loCampo, toOrigen._CodigoInstancia) + (camposSensibles.Last() == loCampo ?
"" :
" UNION ALL ")));
81 string lcQuerysConcatenados = sbSql.ToString();
83 DB.SQLExec(lcQuerysConcatenados, ref ldtResultados);
94 private static string queryCampoSensible(
IRgpdCampoSensible toCampo,
string tcCodigoInstania)
96 string lcSql =
String.Empty;
98 lcSql =
"SELECT '" + toCampo.
_Nombre +
"' AS DESCRIPCIONCAMPO, CAST(" + toCampo.
_Campo +
" as nvarchar) COLLATE " + DB._ServerColation() +
" AS VALORCAMPO " +
100 " WHERE " + toCampo.
_CampoInstancia +
" = " + DB.SQLString(tcCodigoInstania.TrimEnd());
110 private static IEnumerable<IRgpdCampoSensible> obtenerCamposSensiblesDeLaEntidad(
string tcCodigoEntidad)
112 string lcSql =
"SELECT CODENT, BBDD, TABLA, CAMPO, NOMBRE, CODTRATA, CODCATEG, PORTABLE, CAMPOINS FROM " + DB.SQLDatabase(
"RGPD",
"ENTIDAD_D") +
113 " WHERE CODENT = " + DB.SQLString(tcCodigoEntidad.TrimEnd()) +
114 " AND PORTABLE = 1 " +
115 " AND CAMPOINS != '' ";
116 DataTable ldtResultados =
new DataTable();
117 List<IRgpdCampoSensible> listaCampos =
new List<IRgpdCampoSensible>();
120 if (DB.SQLExec(lcSql, ref ldtResultados) && ldtResultados.Rows.Count > 0)
122 ldtResultados.AsEnumerable().Cast<DataRow>().ToList().ForEach(loEle => listaCampos.Add(
new CampoSensible(loEle)));
128 if (loObjeto == null)
129 listaCampos = listaCampos
130 .Where(loEle => loEle._BaseDeDatos !=
"MAYORIST")
static AddonsController Instance
Instancia al objeto singleton Addons
Argumentos para los eventos lanzados por el addons en caso de error
string _CampoInstancia
Campo que contiene el código de instancia concreto
object GetAddon(int numaddon)
Obtiene el addon por numero
string _Campo
Campo de la tabla
Interfície de un campo sensible
IAddonsManager AddonsManager
Gestor de Addons
string _BaseDeDatos
Base de datos
string _Tabla
Tabla de la base de datos