Esempio n. 1
0
        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();
                }
            }
        }
Esempio n. 2
0
        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();
                }
            }
        }