Example #1
0
        private void pPostLocal(Int64 ID, DataTable datos, string strSpi, string strSpu)
        {
            clsParametros clsParametros          = new clsParametros();
            string        StringDeConexion       = clsParametros.StringDeConexion;
            string        StringDeConexionRemoto = clsParametros.StringDeConexionRemoto;

            Data.clsSincronizar objDal      = new Data.clsSincronizar(StringDeConexion);
            Data.clsSincronizar obDalRemoto = new Data.clsSincronizar(StringDeConexionRemoto);


            foreach (DataRow dr in datos.Rows)
            {
                List <OleDbParameter> Parametros = new List <OleDbParameter>();

                foreach (DataColumn dc in datos.Columns)
                {
                    //var field1 = dtRow[dc].ToString();
                    string tipoDato    = dc.DataType.Name.ToString().ToUpper();
                    string nombreParam = dc.ColumnName;

                    OleDbParameter item = new OleDbParameter();

                    if ((nombreParam.ToUpper() != "ID_SINC_PROC") && (nombreParam.ToUpper() != "ID_SINC"))
                    {
                        item.ParameterName = "@" + nombreParam;
                        switch (tipoDato)
                        {
                        case "DECIMAL":
                            item.OleDbType = OleDbType.Decimal;
                            break;

                        case "STRING":
                            item.OleDbType = OleDbType.VarChar;
                            break;

                        case "DATETIME":
                            item.OleDbType = OleDbType.DBTimeStamp;
                            break;

                        default:
                            break;
                        }

                        item.Value = dr[nombreParam];
                        Parametros.Add(item);
                    }
                }

                //graba datos genericos
                if (objDal.fnSetDatosGenericos(strSpi, Parametros))
                {
                    obDalRemoto.fnSet(strSpu, ID, Convert.ToInt64(dr["id_sinc_proc"]), Convert.ToInt64(dr["id_sinc"]));
                    funciones.Mensaje(" Sincronizado id remoto = " + Convert.ToInt64(dr["id_sinc"]).ToString());
                }
            }
        }
Example #2
0
        public void NonSqlToLocal()
        {
            //sincroniza de base de datos no relacional a base de datos local

            //se trae de la tabla de control las tablas que se tiene que leer de la non-sql
            funciones.Mensaje("SYNC_NONSQL_LOCAL Sincronizando de NON-SQL a LOCAL");

            try
            {
                //leer las tablas que necesitan actualizarse
                clsParametros clsParametros    = new clsParametros();
                string        StringDeConexion = clsParametros.StringDeConexion;

                DataTable           dtResultado = new DataTable();
                Data.clsSincronizar objDal      = new Data.clsSincronizar(StringDeConexion);

                dtResultado = objDal.fnGetTablasSincronizarNonSql();

                if (dtResultado != null && dtResultado.Rows.Count > 0)
                {
                    //recorre la tabla para llamar cada sp y enviar a sincronizar a firebase
                    foreach (DataRow row in dtResultado.Rows)
                    {
                        Int64  id                 = row["id"] != DBNull.Value ? Convert.ToInt64(row["id"]) : 0;
                        string strTbl             = row["objeto"] != DBNull.Value ? Convert.ToString(row["objeto"]) : "";
                        string strNodeSource      = row["node_origen"] != DBNull.Value ? Convert.ToString(row["node_origen"]) : "";
                        string strSpi             = row["nombre_spi"] != DBNull.Value ? Convert.ToString(row["nombre_spi"]) : "";
                        string strOrdenParametros = row["orden_sp_parametros"] != DBNull.Value ? Convert.ToString(row["orden_sp_parametros"]) : "";

                        if (strNodeSource == "" || strTbl == "" || strSpi == "" || strOrdenParametros == "")
                        {
                            funciones.Mensaje("No se especifico nombre de tabla, spi, orden parametros o Node verifique ");
                        }
                        else
                        {
                            funciones.Mensaje("Leyendo datos de: " + strTbl + ' ' + strNodeSource);

                            //se hace get para obtener todos los datos a sincronizar
                            pPostLocalFromNonSql(strNodeSource, strSpi, strOrdenParametros);
                        }
                    }
                }
                else
                {
                    funciones.Mensaje("Sin datos que sincronizar");
                }
            }
            catch (Exception ex)
            {
                string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
            }
        }
Example #3
0
        private DataTable OrdenarParametrosYGrabar(List <OleDbParameter> Parametros
                                                   , string LlaveNivel1
                                                   , string LlaveNivel2
                                                   , string strOrdenParametros
                                                   , Data.clsSincronizar objDal
                                                   , string strSpi
                                                   , string node)
        {
            DataTable dtResultado = new DataTable();

            //ordena los parametros que se insertaran y los graba a la base de datos

            //graba las llaves que siempre tienen que ir
            Parametros.Add(new OleDbParameter("@PARAM_LLAVE_NIVEL1", LlaveNivel1));
            Parametros.Add(new OleDbParameter("@PARAM_LLAVE_NIVEL2", LlaveNivel2));


            //Ordena los parametros para que sean enviados a la base de datos como los espera el sp
            string[] OrdenParametros = strOrdenParametros.Split(',');
            List <OleDbParameter> ParametrosOrdenados = new List <OleDbParameter>();

            foreach (string nombreparam in OrdenParametros)
            {
                //busca el parametro en los parametros ya armados
                foreach (OleDbParameter NoOrdenado in Parametros)
                {
                    if (nombreparam.ToString().ToUpper().Trim() == NoOrdenado.ParameterName.ToString().ToUpper().Trim().Replace("@", ""))
                    {
                        OleDbParameter itemParam = new OleDbParameter();
                        itemParam.ParameterName = NoOrdenado.ParameterName;
                        itemParam.OleDbType     = NoOrdenado.OleDbType;
                        itemParam.Value         = NoOrdenado.Value;

                        ParametrosOrdenados.Add(itemParam);
                    }
                }
            }

            //Manda a grabar a la base de datos
            dtResultado = objDal.fnGetDatosGenericos(strSpi, ParametrosOrdenados);

            return(dtResultado);
        }
Example #4
0
        private void pPostEndPoint(DataTable datos, string llave, string node, Data.clsSincronizar objDal, string strSpu, Int64 idTablaSincronizada)
        {
            string        JSon     = "";
            string        EndPoint = "";
            clsParametros param    = new clsParametros();

            try
            {
                //OBTIENE LOS DATOS DEL NODO
                EndPoint = param.FireBaseDb + "/" + param.FireBaseCoreData;
                FirebaseDB firebaseDBGet = new FirebaseDB(EndPoint);

                // se recorre
                foreach (DataRow row in datos.Rows)
                {
                    try
                    {
                        DataTable dtRow = datos.Clone();
                        dtRow.LoadDataRow(row.ItemArray, true);

                        FirebaseDB       firebaseDBGetNode = firebaseDBGet.NodePath(node + "/" + row[llave].ToString());
                        FirebaseResponse getResponse       = firebaseDBGetNode.Get();

                        if (getResponse.JSONContent != "null")
                        {
                            // el contenido trae datos del GET
                            // elimina el nodo
                            FirebaseResponse delResponse = firebaseDBGetNode.Delete();

                            if (delResponse.Success)
                            {
                                funciones.Mensaje("response delete existing :" + row[llave].ToString());
                            }
                        }

                        JSon = JsonConvert.SerializeObject(funciones.DatatableToDictionary(dtRow, llave), Newtonsoft.Json.Formatting.Indented);

                        ////post
                        FirebaseDB firebaseDB     = new FirebaseDB(EndPoint);
                        FirebaseDB firebaseDBNode = firebaseDB.NodePath(node);

                        FirebaseResponse patchResponse = firebaseDBNode.Patch(JSon);

                        if (patchResponse.Success)
                        {
                            funciones.Mensaje("datos grabados :" + row[llave].ToString());

                            //marcar la fila en la base de datos para no volver a sincronizar
                            //marca la tabla para no volverla a sincronizar
                            Boolean actulizado = objDal.fnSet(strSpu, idTablaSincronizada, Convert.ToInt64(row["id_sinc_proc"].ToString()));
                        }
                        else
                        {
                            funciones.Mensaje("response failed :" + patchResponse.ErrorMessage.ToString());
                        }
                    }
                    catch (Exception ex)
                    {
                        string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                        funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
                    }
                }
            }
            catch (Exception ex)
            {
                string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
            }
        }
Example #5
0
        // lee los datos de una ubicacion non-sql y la graba en el servidor local
        private void pPostLocalFromNonSql(string node, string strSpi, string strOrdenParametros)
        {
            string        EndPoint = "";
            clsParametros param    = new clsParametros();

            Data.clsSincronizar objDal = new Data.clsSincronizar(param.StringDeConexion);

            try
            {
                //OBTIENE LOS DATOS DEL NODO
                EndPoint = param.FireBaseDb + "/" + param.FireBaseAppData;
                FirebaseDB       firebaseDBGet     = new FirebaseDB(EndPoint);
                FirebaseDB       firebaseDBGetNode = firebaseDBGet.NodePath(node);
                FirebaseResponse getResponse       = firebaseDBGetNode.Get();
                if (getResponse.JSONContent != "null")
                {
                    //recpuera los valores del nodo
                    string  jsonstr = getResponse.JSONContent.ToString();
                    JObject Obj     = JObject.Parse(jsonstr);

                    //recorre los valores del nodo en arreglos
                    foreach (JToken arreglo in Obj.SelectToken("$"))
                    {
                        if (arreglo.HasValues)
                        {
                            //se recorren los cada uno de las llaves nivel 2
                            foreach (JObject tupla in arreglo.Children <JObject>())
                            {
                                try
                                {
                                    string LlaveNivel1 = tupla.Path.ToString();

                                    //recorre los valores
                                    foreach (JProperty prop in tupla.Properties())
                                    {
                                        string  LlaveNivel2 = prop.Name;
                                        JObject item        = JObject.Parse(prop.Value.ToString());

                                        List <OleDbParameter> Parametros = new List <OleDbParameter>();

                                        foreach (JProperty registro in item.Properties())
                                        {
                                            string campo    = registro.Name;
                                            string tipoDato = registro.Value.Type.ToString().ToUpper();

                                            OleDbParameter itemParam = new OleDbParameter();

                                            itemParam.ParameterName = "@" + campo;
                                            switch (tipoDato)
                                            {
                                            case "FLOAT":
                                                itemParam.OleDbType = OleDbType.Decimal;
                                                break;

                                            case "STRING":
                                                itemParam.OleDbType = OleDbType.VarChar;
                                                break;

                                            case "OBJECT":
                                                itemParam.OleDbType = OleDbType.VarChar;
                                                break;

                                            case "INTEGER":
                                                itemParam.OleDbType = OleDbType.Integer;
                                                break;

                                            default:
                                                break;
                                            }

                                            itemParam.Value = (tipoDato == "OBJECT") ? registro.Value.ToString() : registro.Value;

                                            Parametros.Add(itemParam);
                                        }

                                        if (Parametros.Count != 0)
                                        {
                                            DataTable dtResultado        = new DataTable();
                                            Int64     RegistroInsertados = 0;
                                            string    strCodAccion       = "";

                                            dtResultado = OrdenarParametrosYGrabar(Parametros, LlaveNivel1, LlaveNivel2, strOrdenParametros, objDal, strSpi, node);

                                            RegistroInsertados = Convert.ToInt64(dtResultado.Rows[0]["REGISTROS"].ToString());
                                            strCodAccion       = dtResultado.Rows[0]["COD_ACCION"].ToString();

                                            if (RegistroInsertados != 0)
                                            {
                                                funciones.Mensaje("Registros (" + RegistroInsertados.ToString() + ")  grabados de :" + node + " | " + LlaveNivel1.ToString() + " | " + LlaveNivel2.ToString());
                                            }

                                            // acciones a tomar con los nodos despues de insertados los datos
                                            switch (strCodAccion)
                                            {
                                            case "ELIMINAR_SI":
                                                //elimina el insertado
                                                FirebaseDB       firebaseDBNode = firebaseDBGet.NodePath(node + "/" + LlaveNivel1 + "/" + LlaveNivel2);
                                                FirebaseResponse delResponse    = firebaseDBNode.Delete();

                                                if (delResponse.Success)
                                                {
                                                    funciones.Mensaje("elimina datos en :" + node + "|" + LlaveNivel1.ToString() + "|" + LlaveNivel2.ToString());
                                                }

                                                break;

                                            default:
                                                break;
                                            }
                                        }
                                    }
                                } // try for each
                                catch (Exception ex)
                                {
                                    string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                                    funciones.Mensaje("ERR AL PROCESAR : " + arreglo.ToString() + " Exeption " + ex.ToString());
                                } // catch
                            }     // for each jobj tupla
                        }         // if arreglo has values
                    }             // for each arreglo in ojb
                }                 // if get response
                else
                {
                    funciones.Mensaje("Sin datos que actualizar :" + node);
                }
            }
            catch (Exception ex)
            {
                string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
            }
        }
Example #6
0
        public void CoreData()
        {
            try
            {
                funciones.Mensaje("SYNC_CORE_DATA Sincronizando a CORE_DATA");
                //leer las tablas que necesitan actualizarse
                clsParametros clsParametros    = new clsParametros();
                string        StringDeConexion = clsParametros.StringDeConexion;

                DataTable           dtResultado = new DataTable();
                Data.clsSincronizar objDal      = new Data.clsSincronizar(StringDeConexion);

                dtResultado = objDal.fnGetTablasSincronizar();

                if (dtResultado != null && dtResultado.Rows.Count > 0)
                {
                    //recorre la tabla para llamar cada sp y enviar a sincronizar a firebase
                    foreach (DataRow row in dtResultado.Rows)
                    {
                        Int64  id       = row["id"] != DBNull.Value ? Convert.ToInt64(row["id"]) : 0;
                        string strSpc   = row["nombre_spc"] != DBNull.Value ? Convert.ToString(row["nombre_spc"]) : "";
                        string strSpu   = row["nombre_spu"] != DBNull.Value ? Convert.ToString(row["nombre_spu"]) : "";
                        string strTbl   = row["objeto"] != DBNull.Value ? Convert.ToString(row["objeto"]) : "";
                        string strLlave = row["llave"] != DBNull.Value ? Convert.ToString(row["llave"]) : "";
                        string strNode  = row["node_destino"] != DBNull.Value ? Convert.ToString(row["node_destino"]) : "";

                        if (strSpc == "" || strTbl == "" || strLlave == "" || strNode == "" || strSpu == "")
                        {
                            funciones.Mensaje("No se especifico nombre de tabla, SPC, llave o Node verifique ");
                        }
                        else
                        {
                            funciones.Mensaje("Leyendo datos de: " + strTbl + ' ' + strSpc);

                            //se manda a llamar el spc
                            DataTable dtDatos = new DataTable();

                            dtDatos = objDal.fnGetDatosGenericos(strSpc);

                            if (dtDatos != null && dtDatos.Rows.Count > 0)
                            {
                                //tiene datos los manda a EndPoint
                                //dtDatos -- lleva en conjunto de datos pendiente de sincronizar, lo que devuelve el spc
                                //strLlave -- lo que usara para grabar los datos en firebase como llave, es lo mismo que esta en el Db2
                                //obDal -- servira para llamar el spu
                                //strSpu -- spu de actualizaciĆ³n de la tupla sincronizada
                                //id -- id del proceso o tabla que se esta sincronizando corresponde a app_tbl_tablas_sinc
                                pPostEndPoint(dtDatos, strLlave, strNode, objDal, strSpu, id);
                            }
                            else
                            {
                                funciones.Mensaje("Sin datos en  " + strSpc);
                            }
                        }
                    }
                }
                else
                {
                    funciones.Mensaje("Sin datos que sincronizar");
                }
            }
            catch (Exception ex)
            {
                string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
                //throw new Exception(lStrMethodName, ex);
            }

            //Console.ReadLine();
        }
Example #7
0
        public void RemoteToLocal()
        {
            try
            {
                funciones.Mensaje("SYNC_REMOTE_LOCAL Sincronizando de REMOTE a LOCAL");

                //leer las tablas que necesitan actualizarse
                clsParametros clsParametros          = new clsParametros();
                string        StringDeConexionRemoto = clsParametros.StringDeConexionRemoto;

                DataTable           dtResultado = new DataTable();
                Data.clsSincronizar objDal      = new Data.clsSincronizar(StringDeConexionRemoto);

                dtResultado = objDal.fnGetTablasSincronizar();

                if (dtResultado != null && dtResultado.Rows.Count > 0)
                {
                    //recorre la tabla para llamar cada sp y enviar a sincronizar a firebase
                    foreach (DataRow row in dtResultado.Rows)
                    {
                        Int64  id     = row["id"] != DBNull.Value ? Convert.ToInt64(row["id"]) : 0;
                        string strSpc = row["nombre_spc"] != DBNull.Value ? Convert.ToString(row["nombre_spc"]) : "";
                        string strSpu = row["nombre_spu"] != DBNull.Value ? Convert.ToString(row["nombre_spu"]) : "";
                        string strTbl = row["objeto"] != DBNull.Value ? Convert.ToString(row["objeto"]) : "";
                        string strSpi = row["nombre_spi_destino"] != DBNull.Value ? Convert.ToString(row["nombre_spi_destino"]) : "";

                        if (strSpc == "" || strTbl == "" || strSpi == "" || strSpu == "")
                        {
                            funciones.Mensaje("No se especifico nombre de tabla, SPC, spi, spu en tabla sincronizacion remota ");
                        }
                        else
                        {
                            funciones.Mensaje("Leyendo datos remotos de: " + strTbl + ' ' + strSpc);

                            //se manda a llamar el spc
                            DataTable dtDatos = new DataTable();

                            dtDatos = objDal.fnGetDatosGenericos(strSpc);

                            if (dtDatos != null && dtDatos.Rows.Count > 0)
                            {
                                //pega los datos en el servidor local
                                pPostLocal(id, dtDatos, strSpi, strSpu);
                            }
                            else
                            {
                                funciones.Mensaje("Sin datos en  " + strSpc);
                            }
                        }
                    }
                }
                else
                {
                    funciones.Mensaje("Sin datos que sincronizar");
                }
            }
            catch (Exception ex)
            {
                string lStrMethodName = System.Reflection.MethodBase.GetCurrentMethod().Name;
                funciones.Mensaje("ERR: " + lStrMethodName + ' ' + ex.ToString());
                //throw new Exception(lStrMethodName, ex);
            }

            funciones.Mensaje("Fin de la sincronizacion ");
            //Console.ReadLine();
        }