コード例 #1
0
 public object SizeGte(string arrayProperty, int value)
 {
     return(InternalBuilder.SizeGte(arrayProperty, value));
 }
コード例 #2
0
        internal static void CorreccionGrupoUsuarios()
        {
            string path = ConfigurationManager.AppSettings["RutaArchivosExtractores"];

            try
            {
                bool IsExists = System.IO.Directory.Exists(path);
                if (!IsExists)
                {
                    System.IO.Directory.CreateDirectory(path);
                }
            }
            catch (Exception ex)
            {
                string           sNombreArchivoError = "ErrorBatch_Cargue_DWH";
                prcManejoErrores objError            = new prcManejoErrores();
                objError.ErroresGeneral(ex, sNombreArchivoError, ex.Message.ToString() + "Inconsistencia en la creacion y existencia de la carpeta contenedora del archivo generado");
            }

            //Conexion a DB
            MongoClient    client = new MongoClient(ConfigurationManager.ConnectionStrings["ConexionMongo"].ToString());
            IMongoDatabase db     = client.GetDatabase(ConfigurationManager.AppSettings["BaseDatosMongo"].ToString());

            StreamWriter Archivo_Grupo_Usu = null;

            int      Conteo_Usu = 0;
            int      conteo_registros_grupos = 0;
            string   sTextoDescarga          = "";
            string   id_mongo  = "";
            DateTime fechatemp = DateTime.Now.ToUniversalTime();
            bool     pruebas   = true;

            string archivo = path + "PS_Grupo_Usuarios_" + Convert.ToDateTime(fechatemp.ToLocalTime()).ToString("ddMMyyyy") + ".txt";

            try
            {
                // Se abren los archivos para poder escribirlos
                Archivo_Grupo_Usu = new StreamWriter(archivo, false, System.Text.Encoding.GetEncoding("iso-8859-1"));

                // FILTRO PARA LAS COLECCION
                IMongoCollection <BsonDocument>        Coleccion_PS_Usuarios = db.GetCollection <BsonDocument>("PS_USUARIO");
                IMongoCollection <BsonDocument>        Coleccion_PS_Grupo    = db.GetCollection <BsonDocument>("PS_GRUPO_ASIGNACION");
                FilterDefinitionBuilder <BsonDocument> builderPS_Usuarios    = Builders <BsonDocument> .Filter;
                FilterDefinition <BsonDocument>        filterPS_Usuarios     = builderPS_Usuarios.Empty;
                filterPS_Usuarios = builderPS_Usuarios.SizeGte("grupos_lider", 1);

                List <BsonDocument> consulta_PS_Usuarios = Coleccion_PS_Usuarios.Find(filterPS_Usuarios).ToList();

                FilterDefinitionBuilder <BsonDocument> builderPS_Grupo_Asignacion = Builders <BsonDocument> .Filter;
                FilterDefinition <BsonDocument>        filter_Grupo_Asignacion    = builderPS_Grupo_Asignacion.Empty;

                if (consulta_PS_Usuarios != null && consulta_PS_Usuarios.Count() > 0)
                {
                    try
                    {
                        // ESCRIBIR LOS DATOS OBTENIDOS DE LAS CONSULTAS POR REGISTRO DE USUARIOS A ACTUALIZAR
                        Console.WriteLine("Registros en la coleccion de PS_ALERTAS_NOTIFICACIONES encontrados " + consulta_PS_Usuarios.Count.ToString());
                        foreach (BsonDocument itemPS_Usuarios in consulta_PS_Usuarios)
                        {
                            id_mongo       = itemPS_Usuarios.GetValue("_id").ToString();
                            sTextoDescarga = "";

                            // SE BORRAN LOS REGISTROS ENCONTRADOS DENTRO DEL ARRAY DE GRUPOS LIDER

                            // SE CONSTRUYE LA CONSULTA DE LOS GRUPOS DE ASIGNACION A LOS CUALES PERTENECE
                            filter_Grupo_Asignacion = builderPS_Grupo_Asignacion.And(builderPS_Grupo_Asignacion.Eq(
                                                                                         "integrantes.id_usuario", MongoDB.Bson.ObjectId.Parse(itemPS_Usuarios.GetValue("_id").ToString())),
                                                                                     builderPS_Grupo_Asignacion.Eq("integrantes.es_lider", true));

                            //filter_Grupo_Asignacion = builderPS_Grupo_Asignacion.Eq("integrantes.id_usuario", ObjectId.Parse(id_mongo)); // NO FUNCIONA

                            // SE EJECUTA LA CONSULTA PARA ITERAR LOS IDENTIDICADORES DE LOS GRUPOS DE ASIGNACION
                            List <BsonDocument> consulta_PS_Grupo_Asignacion = Coleccion_PS_Grupo.Find(filter_Grupo_Asignacion).ToList();

                            if (consulta_PS_Grupo_Asignacion != null && consulta_PS_Grupo_Asignacion.Count() > 0)
                            {
                                List <string> lista = new List <string>();
                                foreach (var itemGrupoAsignacion in consulta_PS_Grupo_Asignacion)
                                {
                                    lista.Add(itemGrupoAsignacion.GetValue("_id").ToString());
                                    conteo_registros_grupos++;
                                }
                                sTextoDescarga = string.Format("el usuario: {0}, fue actualizado con {1} registros en grupos_lider", id_mongo, consulta_PS_Grupo_Asignacion.Count());
                                Console.WriteLine(sTextoDescarga);
                                Archivo_Grupo_Usu.WriteLine(sTextoDescarga);
                                if (pruebas == false)
                                {
                                    Coleccion_PS_Usuarios.UpdateOne(Builders <BsonDocument> .Filter.Eq("_id", MongoDB.Bson.ObjectId.Parse(itemPS_Usuarios.GetValue("_id").ToString())), Builders <BsonDocument> .Update.Set("grupos_lider", lista));
                                }
                            }

                            Conteo_Usu++;
                        }

                        if (Conteo_Usu > 0)
                        {
                            Archivo_Grupo_Usu.Close();
                            if (pruebas == false)
                            {
                                sTextoDescarga = string.Format("Se actualizaron {0}, usuarios con {1} registros de grupos de asignacion", Conteo_Usu, conteo_registros_grupos);
                                Console.WriteLine(sTextoDescarga);
                                Archivo_Grupo_Usu.WriteLine(sTextoDescarga);
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        string           sNombreArchivoError = "ErrorBatch_Cargue_DWH";
                        prcManejoErrores objError            = new prcManejoErrores();
                        objError.ErroresGeneral(ex, sNombreArchivoError, ex.Message.ToString() + "Inconsistencia en PS_Ususario ultimo id actualizado" + id_mongo);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message.ToString());
                Console.WriteLine(ex.StackTrace.ToString());
                //Enviar a Archivo de Log Errores
                string           sNombreArchivoError = "ErrorBatch_Cargue_DWH";
                prcManejoErrores objError            = new prcManejoErrores();
                objError.ErroresGeneral(ex, sNombreArchivoError, ex.Message.ToString());
                //throw ex;
            }
            finally
            {
                Archivo_Grupo_Usu.Close();
            }
        }