public Dictionary <string, Guid> Iniciar(Oracle ora, Comun com, Crm crm)
        {
            try
            {
                OracleGlobal = ora;
                ComunGlobal  = com;
                CrmGlobal    = crm;

                CrmGlobal.InicializarPFE(OracleGlobal);

                //1 Cargar Modalidades
                LeerModalidadesFromCRM();
                LeerModalidadesFromOracle();

                bool      ok;
                Modalidad modalidad;
                if (ModalidadesOracle.Any())
                {
                    #region Tratamiento Modalidades
                    ComunGlobal.LogText("----   Iniciando CARGA MODALIDADES  ------");
                    ComunGlobal.LogText("****   Registros a cotejar: " + ModalidadesOracle.Count);
                    foreach (var mod in ModalidadesOracle)
                    {
                        ok = ModalidadesCRM.TryGetValue(mod.Key, out modalidad);
                        if (!ok)
                        {
                            var ent = new Entity(AenModalidad.EntityName);
                            ent[AenModalidad.PrimaryName]        = modalidad.aen_name;
                            ent[AenModalidad.AenCodigomodalidad] = modalidad.aen_codigomodalidad;
                            CrmGlobal.AnadirElementoEmr(new CreateRequest {
                                Target = ent
                            });
                        }
                        else
                        {
                            bool sonIguales = ModalidadesIguales(mod.Value, modalidad);
                            if (sonIguales)
                            {
                                CrmGlobal.Iguales++;
                            }
                            else
                            {
                                var ent = new Entity(AenModalidad.EntityName, modalidad.aen_modalidadid);
                                ent[AenModalidad.PrimaryName]        = modalidad.aen_name;
                                ent[AenModalidad.AenCodigomodalidad] = modalidad.aen_codigomodalidad;
                                CrmGlobal.AnadirElementoEmr(new UpdateRequest {
                                    Target = ent
                                });
                            }
                        }
                    }
                    CrmGlobal.ProcesarUltimosEmr();

                    CrmGlobal.MostrarEstadisticas("MODALIDADES");
                    ComunGlobal.LogText("----   FINALIZADA CARGA MODALIDADES  ------");

                    #endregion Tratamiento Modalidades
                }
                else
                {
                    ComunGlobal.LogText("No hay MODALIDADES en origen, terminamos");
                }



                //2. Devolver Maestro de Modalidades
                #region Carga Maestro Modalidades
                MaestroModalidadesCRM = new Dictionary <string, Guid>();

                var q = new QueryExpression(AenModalidad.EntityName);
                q.Criteria.AddCondition(AenModalidad.AenCodigomodalidad, ConditionOperator.NotNull);
                q.ColumnSet = new ColumnSet(AenModalidad.AenCodigomodalidad, AenModalidad.PrimaryName);

                EntityCollection modColeccion = CrmGlobal.GetIOS().RetrieveMultiple(q);

                if (modColeccion.Entities.Count > 0)
                {
                    foreach (Entity modCRM in modColeccion.Entities)
                    {
                        MaestroModalidadesCRM.Add(modCRM.GetAttributeValue <string>(AenModalidad.AenCodigomodalidad), modCRM.Id);
                    }
                }
                #endregion Carga Maestro Modalidades


                //3. Limpiar Diccionarios para liberar memoria
                ModalidadesOracle.Clear();
                ModalidadesCRM.Clear();


                return(MaestroModalidadesCRM);
            }
            catch (Exception e)
            {
                ComunGlobal.LogText("ERROR en Lanzador de MODALIDADES ::: " + e.ToString());
                if (OracleGlobal != null && OracleGlobal.OraConnParaLog.State == ConnectionState.Open)
                {
                    OracleGlobal.OraConnParaLog.Dispose();
                }

                return(null);
            }
        }
Beispiel #2
0
        public Dictionary <string, Guid> Iniciar(Oracle ora, Comun com, Crm crm)
        {
            try
            {
                OracleGlobal = ora;
                ComunGlobal  = com;
                CrmGlobal    = crm;

                CrmGlobal.InicializarPFE(OracleGlobal);

                //1 Cargar AreasConocimiento
                LeerAreasConocimientoFromCRM();
                LeerAreasConocimientoFromOracle();

                bool ok;
                AreaDeConocimiento area;
                AreasADesactivar = new List <string>();
                if (AreasConocimientoOracle.Any())
                {
                    #region Tratamiento AreasConocimiento
                    ComunGlobal.LogText("----   Iniciando CARGA AREAS DE CONOCIMIENTO  ------");
                    ComunGlobal.LogText("****   Registros a cotejar: " + AreasConocimientoOracle.Count);
                    foreach (var a in AreasConocimientoOracle)
                    {
                        ok = AreasConocimientoCRM.TryGetValue(a.Key, out area);
                        if (!ok)
                        {
                            var ent = new Entity(AenAreadeconocimiento.EntityName);
                            ent[AenAreadeconocimiento.PrimaryName] = area.aen_name;
                            if (area.statecode == 1)
                            {
                                AreasADesactivar.Add(area.aen_name);
                            }
                            CrmGlobal.AnadirElementoEmr(new CreateRequest {
                                Target = ent
                            });
                        }
                        else
                        {
                            bool sonIguales = AreasConocimientoIguales(a.Value, area);
                            if (sonIguales)
                            {
                                CrmGlobal.Iguales++;
                            }
                            else
                            {
                                var ent = new Entity(AenAreadeconocimiento.EntityName, area.aen_areaconocimientoid);
                                ent[AenAreadeconocimiento.PrimaryName] = area.aen_name;
                                ent[AenAreadeconocimiento.StateCode]   = new OptionSetValue(area.statecode);
                                ent[AenAreadeconocimiento.StatusCode]  = new OptionSetValue(area.statuscode);
                                CrmGlobal.AnadirElementoEmr(new UpdateRequest {
                                    Target = ent
                                });
                            }
                        }
                    }
                    CrmGlobal.ProcesarUltimosEmr();

                    CrmGlobal.MostrarEstadisticas("Areas de Conocimiento");
                    ComunGlobal.LogText("----   FINALIZADA CARGA AREAS DE CONOCIMIENTO ------");

                    #endregion Tratamiento AreasConocimiento
                }
                else
                {
                    ComunGlobal.LogText("No hay Areas de Conocimiento en origen, terminamos");
                }



                //2. Devolver Maestro de AreasConocimiento
                #region Carga Maestro Areas de Conocimiento
                MaestroAreasConocimientoCRM = new Dictionary <string, Guid>();

                var q = new QueryExpression(AenAreadeconocimiento.EntityName);
                q.Criteria.AddCondition(AenAreadeconocimiento.PrimaryName, ConditionOperator.NotNull);
                q.ColumnSet = new ColumnSet(AenAreadeconocimiento.PrimaryName);

                EntityCollection modColeccion = CrmGlobal.GetIOS().RetrieveMultiple(q);

                if (modColeccion.Entities.Count > 0)
                {
                    foreach (Entity modCRM in modColeccion.Entities)
                    {
                        MaestroAreasConocimientoCRM.Add(modCRM.GetAttributeValue <string>(AenAreadeconocimiento.PrimaryName), modCRM.Id);
                    }
                }
                #endregion Carga Maestro AreasConocimiento


                //3. Desactivar las Áreas de conocimiento inactivas desde origen
                #region Desactivar areas
                if (AreasADesactivar.Any())
                {
                    Guid auxG = Guid.Empty;
                    foreach (string str in AreasADesactivar)
                    {
                        var okk = MaestroAreasConocimientoCRM.TryGetValue(str, out auxG);
                        if (okk)
                        {
                            Entity en = new Entity(AenAreadeconocimiento.EntityName, auxG);
                            en[AenAreadeconocimiento.StateCode]  = new OptionSetValue(1);
                            en[AenAreadeconocimiento.StatusCode] = new OptionSetValue(2);
                            CrmGlobal.AnadirElementoEmr(new UpdateRequest {
                                Target = en
                            });
                        }
                    }
                }
                #endregion Desactivar areas


                //4. Limpiar Diccionarios para liberar memoria
                AreasConocimientoOracle.Clear();
                AreasConocimientoCRM.Clear();
                AreasADesactivar.Clear();


                return(MaestroAreasConocimientoCRM);
            }
            catch (Exception e)
            {
                ComunGlobal.LogText("ERROR en Lanzador de AreasConocimiento ::: " + e.ToString());
                if (OracleGlobal != null && OracleGlobal.OraConnParaLog.State == ConnectionState.Open)
                {
                    OracleGlobal.OraConnParaLog.Dispose();
                }

                return(null);
            }
        }