public void Iniciar(Oracle oracleGlobal, Comun comunGlobal, Crm crmGlobal) { try { //Aquí no hay que hacer new, el lanzador orquestador lo pasará a las properties Comun = comunGlobal; Comun.LogText("----Iniciando sincronización comités normalizacion------"); Crm = crmGlobal; ComitesDesactivar = new HashSet <string>(); Oracle = oracleGlobal; Crm.InicializarPFE(oracleGlobal); LeerEntidades(); LeerComitesOracle(); if (!ComitesNormalizacionOracle.Any()) { Comun.LogText("No hay comités en origen, terminamos"); return; } foreach (var comiteOra in ComitesNormalizacionOracle) { try { ClaveIntegracionActual = comiteOra.Key; bool ok = ComitesNormalizacionCRM.TryGetValue(comiteOra.Key, out ComiteNormalizacion comiteCRM); if (ok && ComitesIguales(comiteOra.Value, comiteCRM)) { Crm.Iguales++; continue; } var comite = GetEntity(comiteOra.Value); if (ok) { comite["aen_comitenormalizacionid"] = comiteCRM.Aen_ComiteNormalizacionId; Crm.AnadirElementoEmr(new UpdateRequest { Target = comite }); } else { if (comiteOra.Value.StateCode == "Inactivo") { comite["statecode"] = new OptionSetValue(0); comite["statuscode"] = new OptionSetValue(1); ComitesDesactivar.Add(comiteOra.Value.Aen_Name); } Crm.AnadirElementoEmr(new CreateRequest { Target = comite }); } } catch (Exception e) { Comun.EscribirExcepcion(e, "Error al procesar Comité: " + comiteOra.Key); } } Crm.ProcesarUltimosEmr(); SincronizarEmparentamiento(); DesactivarRecienCreadosInactivas(); Crm.MostrarEstadisticas("COMITES"); } catch (Exception ex) { Comun.EscribirExcepcion(ex, "Error"); if (ClaveIntegracionActual != "") { Oracle.MandarErrorIntegracion(ClaveIntegracionActual, ex.Message, Oracle.TipoEntidadDireccion, Oracle.TipoAccionValidacion, null); } if (Oracle != null && Oracle.OraConnParaLog.State == ConnectionState.Open) { Oracle.OraConnParaLog.Dispose(); } } finally { if (Oracle != null && Oracle.OraConnParaLog.State == ConnectionState.Open) { Oracle.OraConnParaLog.Dispose(); } } }
public void Iniciar(Oracle oracleGlobal, Comun comunGlobal, Crm crmGlobal) { try { //Aquí no hay que hacer new, el lanzador orquestador lo pasará a las properties Comun = comunGlobal; Comun.LogText("----Iniciando sincronización direcciones------"); Crm = crmGlobal; DireccionesDesactivar = new HashSet <string>(); Oracle = oracleGlobal; Crm.InicializarPFE(oracleGlobal); Stopwatch sW_Dir = new Stopwatch(), sW_SoloCarga = new Stopwatch(); sW_Dir.Start(); //BorrarDirecciones(); LeerEntidades(); LeerDireccionesOracle(); if (!DireccionesOracle.Any()) { Comun.LogText("No hay direcciones en origen, terminamos"); return; } sW_SoloCarga.Start(); foreach (var dirOra in DireccionesOracle) { try { ClaveIntegracionActual = dirOra.Key; bool ok = DireccionesCRM.TryGetValue(dirOra.Key, out Direccion dirCRM); if (ok && DireccionesIguales(dirOra.Value, dirCRM)) { Crm.Iguales++; continue; } var dir = GetEntity(dirOra.Value); if (ok) { dir["aen_direccionid"] = dirCRM.Aen_DireccionId; Crm.AnadirElementoEmr(new UpdateRequest { Target = dir }); } else { if (dirOra.Value.StateCode == "Inactivo") { dir["statecode"] = new OptionSetValue(0); dir["statuscode"] = new OptionSetValue(1); DireccionesDesactivar.Add(dirOra.Value.Aen_ClaveIntegracion); } Crm.AnadirElementoEmr(new CreateRequest { Target = dir }); } } catch (Exception e) { Comun.EscribirExcepcion(e, "Error al procesar Direccion: " + dirOra.Key); } } Crm.ProcesarUltimosEmr(); sW_SoloCarga.Stop(); comunGlobal.LogText(" -----> END; TIEMPO SOLO CARGA: " + sW_SoloCarga.Elapsed.ToString() + " <-----\n\n"); DesactivarRecienCreadasInactivas(); sW_Dir.Stop(); comunGlobal.LogText(" -----> END; TIEMPO TOTAL: " + sW_Dir.Elapsed.ToString() + " <-----\n\n"); Crm.MostrarEstadisticas("DIRECCIONES"); } catch (Exception ex) { //Aquí no podemos mandar clave al log de Oracle, puesto que no hay clave integración //Si hay error aquí es por motivo más genérico Comun.EscribirExcepcion(ex, "Error"); if (ClaveIntegracionActual != "") { Oracle.MandarErrorIntegracion(ClaveIntegracionActual, ex.Message, Oracle.TipoEntidadDireccion, Oracle.TipoAccionValidacion, null); } if (Oracle != null && Oracle.OraConnParaLog.State == ConnectionState.Open) { Oracle.OraConnParaLog.Dispose(); } } finally { if (Oracle != null && Oracle.OraConnParaLog.State == ConnectionState.Open) { Oracle.OraConnParaLog.Dispose(); } } }