2 using System.Collections.Generic;
14 internal class RgpdComunicadosOperation
23 if (_oComunicadosManager == null)
24 _oComunicadosManager = getComunicadorsOperationProvider();
25 return _oComunicadosManager;
27 set { _oComunicadosManager = value; }
38 return new RgpdComunicadosManagerFiltrado();
48 internal static IRespuestaComunicado _MandarComunicadoDeSolicitudConsentimiento(
object sender,
string tcRutaFichero =
"")
50 if (_ComunicadosManager != null)
52 return _ComunicadosManager._RgpdEnviarComunicado(eTipoPlantilla.RecogidaDatos.__ToSolicitudComunicado(sender, tcRutaFichero));
64 internal static IRespuestaComunicado _MandarComunicadoDeConfirmacionSolicitudSupresion(
object sender,
string tcRutaFichero =
"")
66 if (_ComunicadosManager != null)
68 return _ComunicadosManager._RgpdEnviarComunicado(eTipoPlantilla.Supresion.__ToSolicitudComunicado(sender, tcRutaFichero));
80 internal static IRespuestaComunicado _MandarComunicadoDeNotificacionDeAcceso(
object sender,
string tcRutaFichero =
"")
82 if (_ComunicadosManager != null)
84 return _ComunicadosManager._RgpdEnviarComunicado(eTipoPlantilla.Acceso.__ToSolicitudComunicado(sender, tcRutaFichero));
96 internal static IRespuestaComunicado _MandarComunicadoDeEmisionPortabilidad(
object sender,
string tcRutaFichero =
"")
98 if (_ComunicadosManager != null)
100 return _ComunicadosManager._RgpdEnviarComunicado(eTipoPlantilla.Portabilidad.__ToSolicitudComunicado(sender, tcRutaFichero));
106 internal static IRespuestaProceso _ComunicadoMasivoSolicitudConsentimiento(
string tcCodigoEntidad, IEnumerable<string> tlisCodigoInstancias)
110 loSolicitud.
_NombreOrigen = eTipoPlantilla.RecogidaDatos.__ObtenerNombreOrigen();
111 loSolicitud.
_CodigoPlantilla = eTipoPlantilla.RecogidaDatos.__ObtenerPlantilla();
114 List<ManteExtEntidades> lisInstancias =
new List<ManteExtEntidades>();
115 List<IMante> lisInstanciasMante =
new List<IMante>();
118 tlisCodigoInstancias.ToList().ForEach(loCodigoInstancia =>lisInstancias.Add(
new ManteExtEntidades(tcCodigoEntidad, loCodigoInstancia.TrimEnd())));
121 lisInstancias = lisInstancias.OrderBy(loEle => loEle._CodigoInstancia).ToList();
128 lisInstancias.ForEach(loTratamiento => lisInstanciasMante.Add(loTratamiento._Mante));
137 ResultadoProceso loResultadoProceso =
new ResultadoProceso();
144 OperationBroker loBrokerOperaciones =
new OperationBroker();
145 string lcFicherosNoRecibidos =
string.Empty;
146 bool llErroresPresentes =
false;
151 int lnIndex = lisInstancias.FindIndex(loEle => loEle == loInstanciaEntidad);
154 if (
String.IsNullOrWhiteSpace(lcRuta))
156 llErroresPresentes =
true;
157 lcFicherosNoRecibidos +=
"No se ha generado fichero para " + loInstanciaEntidad.
_CodigoInstancia + Environment.NewLine;
161 loBrokerOperaciones._AddOperacion(
new OperationAdjuntarSolicitudConsentimiento(loInstanciaEntidad, lcRuta));
164 loBrokerOperaciones._EjecutarOperaciones();
167 loResultadoProceso._DetallesDelProceso = lcFicherosNoRecibidos;
172 loResultadoProceso._DetallesDelProceso =
"La solicitud no se ha completado correctamente, los ficheros generados no concuerdan con las solicitudes.";
180 loResultadoProceso._DetallesDelProceso =
"La solicitud no se ha podido completar: " +
181 Environment.NewLine + Environment.NewLine + loRespuesta.
_MessageError;
188 return loResultadoProceso;
191 private bool laEntidadPuedeRecibirComunicados(
object toSender)
193 bool puedeRecibirComunicados =
true;
198 return puedeRecibirComunicados;
206 get {
return estadoProceso; }
207 set { estadoProceso = value; }
211 public string _DetallesDelProceso
213 get {
return _cDetallesDelProceso; }
214 set { _cDetallesDelProceso = value; }
216 private string _cDetallesDelProceso =
string.Empty;
218 public ResultadoProceso() { }
225 internal class TipoPlantillaInfoAttribute : Attribute
234 public TipoPlantillaInfoAttribute(
string tcNombreOrigen,
string tcPlantillaPorDefecto,
string tcCampoPlantilla)
236 SetProperties(tcNombreOrigen, tcPlantillaPorDefecto, tcCampoPlantilla);
245 private void SetProperties(
string tcNombreOrigen,
string tcPlantillaPorDefecto,
string tcCampoPlantilla)
247 this._NombreOrigen = tcNombreOrigen;
248 this._PlantillaPorDefecto = tcPlantillaPorDefecto;
249 this._CampoPlantillaEspecifica = tcCampoPlantilla;
255 public string _NombreOrigen {
get;
private set; }
259 public string _PlantillaPorDefecto {
get;
private set; }
263 public string _CampoPlantillaEspecifica {
get;
private set; }
269 internal static class EnumExtensions
277 public static TAttribute __GetAttribute<TAttribute>(
this eTipoPlantilla value)
278 where TAttribute : Attribute
280 var type = value.GetType();
281 var name = Enum.GetName(type, value);
282 return type.GetField(name)
283 .GetCustomAttributes(
false)
284 .OfType<TAttribute>()
292 internal static class TipoPlantillaExtensions
299 public static string __ObtenerNombreOrigen(
this eTipoPlantilla p)
301 var attr = p.__GetAttribute<TipoPlantillaInfoAttribute>();
303 return attr._NombreOrigen;
311 public static string __ObtenerNombreCampoPlantilla(
this eTipoPlantilla p)
313 var attr = p.__GetAttribute<TipoPlantillaInfoAttribute>();
315 return attr._CampoPlantillaEspecifica;
323 public static string __ObtenerCodigoPlantillaPorDefecto(
this eTipoPlantilla p)
325 var attr = p.__GetAttribute<TipoPlantillaInfoAttribute>();
327 return attr._PlantillaPorDefecto;
330 public static string __ObtenerPlantilla(
this eTipoPlantilla p)
333 string lcEmpresaActual = DB.SQLString(Convert.ToString(EW_GLOBAL._GetVariable(
"wc_empresa",
"")));
334 string lcCampo = p.__ObtenerNombreCampoPlantilla();
335 string lcDefaultValue = p.__ObtenerCodigoPlantillaPorDefecto();
338 DataTable ldtDatos =
new DataTable();
341 string lcSQL =
"SELECT TOP(1) " + lcCampo +
" AS PLANTILLA FROM " + DB.SQLDatabase(
"RGPD",
"DELEGADOS") +
342 " WHERE EMPRESA = " + lcEmpresaActual +
" AND " + lcCampo +
" != '' " +
344 "SELECT TOP(1) " + DB.SQLString(lcDefaultValue) +
" AS PLANTILLA FROM " + DB.SQLDatabase(
"RGPD",
"DELEGADOS") +
345 " WHERE EMPRESA = " + lcEmpresaActual +
" AND " + lcCampo +
" = '' ";
347 if (DB.SQLExec(lcSQL, ref ldtDatos) && ldtDatos.Rows.Count > 0)
348 return Convert.ToString(ldtDatos.Rows[0][
"PLANTILLA"]).TrimEnd();
350 return lcDefaultValue;
360 public static ISolicitudComunicado __ToSolicitudComunicado(
this eTipoPlantilla tePlantilla,
object toSender,
string tcRutaFichero =
"")
362 RgpdSolicitudComunicado loSolicitud =
new RgpdSolicitudComunicado(toSender as
ManteExtEntidades);
363 loSolicitud._CodigoPlantilla = tePlantilla.__ObtenerPlantilla();
364 loSolicitud._NombreOrigen = tePlantilla.__ObtenerNombreOrigen();
365 if (!
String.IsNullOrWhiteSpace(tcRutaFichero))
366 loSolicitud._RutasFicheros =
new List<string>() { tcRutaFichero };
Interfície de respuesta de los comunicados
Extensión para el mantenimiento de clientes
Intefície para solicitar comunicados
string _NombreOrigen
Literal del orígen de la llamada
Es como el tipo de entrada asientos pero por negocio, sin formulario, pq quiero que me haga las propu...
string _CodigoInstancia
Código de instancia concreta de entidad (pe. 43000002 o 40000001 o 0001, etc). Valores concretos ...
IEnumerable< String > _RutasFicheros
Fichero(s) de comunicado generados
Operaciones de comunicados de la RGPD
IEnumerable< IMante > _Mantenimientos
Mantenimiento(s) asociado(s) a la solicitud.
string _MessageError
Mensaje de error si lo hay.
eResultadoProceso
Enumeración de titpos de resultado
bool _Ejecutado
True si se ha ejecutado, false en caso contrario (cancelado, error, etc.)
string _CodigoPlantilla
Código de la plantilla a comunicar