Esempio n. 1
0
        /// <summary>
        /// Ejecutar una petición de sincronización
        /// </summary>
        private ResponseBussiness <int> EnviarPeticionSincronizacion()
        {
            return(tryCatch.SafeExecutor(() =>
            {
                // Leer la información que debe sincronizarse
                ResultadoSincronizacion resultadoSincronizacion = new ResultadoSincronizacion();
                SincronizacionRequest sincronizacionRequest = repository.ObtenerDatosSincronizacion();
                String webServicePath = sincronizacionRequest.ServidorDestino + "/PosServiciosMIlano/Sincronizacion/Sincronizacionservice.svc/ejecutarProcesoSincronizacion";

                if (!String.IsNullOrEmpty(sincronizacionRequest.ServidorDestino))
                {
                    // ******************************* WS REMOTO
                    var webRequest = (HttpWebRequest)WebRequest.Create(webServicePath);
                    webRequest.Method = WebRequestMethods.Http.Post;
                    // Timeout de 30 minutos
                    webRequest.Timeout = 1800000;
                    webRequest.ContentType = "application/json";
                    var json = JsonConvert.SerializeObject(sincronizacionRequest);
                    try
                    {
                        // Hacer la petición al WS Remoto
                        using (var requestStream = webRequest.GetRequestStream())
                        {
                            using (var writer = new StreamWriter(requestStream))
                            {
                                writer.Write(json);
                            }
                        }

                        // Obtener la respuesta del WS Remoto
                        using (var webResponse = (HttpWebResponse)webRequest.GetResponse())
                        {
                            using (var responseStream = webResponse.GetResponseStream())
                            {
                                using (var reader = new StreamReader(responseStream))
                                {
                                    var responseData = reader.ReadToEnd();
                                    dynamic resultadoSincronizacionWS = JsonConvert.DeserializeObject(responseData);
                                    resultadoSincronizacion.UltimoIdSincronizado = resultadoSincronizacionWS.data.ultimoIdSincronizado;
                                    resultadoSincronizacion.MensajeAsociado = resultadoSincronizacionWS.data.mensajeAsociado;
                                    resultadoSincronizacion.IdServidorDestino = resultadoSincronizacionWS.data.idServidorDestino;
                                    resultadoSincronizacion.ServidorDestino = resultadoSincronizacionWS.data.servidorDestino;
                                }
                            }
                        }
                    }
                    catch (Exception exception)
                    {
                        TryCatchBusinessExecutor tryCatch = new TryCatchBusinessExecutor();
                        tryCatch.AddErrorLog <OperationResponse>(exception.Message, exception.StackTrace, "Sincronización", exception.ToString(), "Error de sincronización");
                    }
                    // ******************************* WS REMOTO

                    // Actualizar la información de tabla AUDITORIA_DESTINOS
                    repository.ActualizarAuditoriaDestinos(resultadoSincronizacion);
                }

                return 0;
            }));
        }
Esempio n. 2
0
        /// <summary>
        /// Ejecutar proceso para obtener los datos que deben Sincronizarse
        /// </summary>
        public SincronizacionRequest ObtenerDatosSincronizacion()
        {
            SincronizacionRequest sincronizacionRequest = new SincronizacionRequest();
            List <SentenciaSQL>   listaSentenciasSQL    = new List <SentenciaSQL>();
            var parameters = new Dictionary <string, object>();

            foreach (var r in data.GetDataReader("[sync].[sp_vanti_SincronizadorObtenerSentenciasSQL]", parameters))
            {
                // Meta información
                sincronizacionRequest.CodigoTiendaOrigen             = Convert.ToInt32(r.GetValue(0));
                sincronizacionRequest.CodigoCajaOrigen               = Convert.ToInt32(r.GetValue(1));
                sincronizacionRequest.IdServidorDestino              = Convert.ToInt32(r.GetValue(2));
                sincronizacionRequest.ServidorDestino                = r.GetValue(3).ToString();
                sincronizacionRequest.DebeDetenerEnCasoNoEncontrados = Convert.ToInt32(r.GetValue(4));
                sincronizacionRequest.DebeIgnorarLlaveDuplicada      = Convert.ToInt32(r.GetValue(5));
                sincronizacionRequest.IdSincronizacionMinimoBloque   = Convert.ToInt32(r.GetValue(6));
                // Sentencias
                SentenciaSQL sentenciaSQL = new SentenciaSQL();
                sentenciaSQL.Id        = Convert.ToInt32(r.GetValue(7));
                sentenciaSQL.Sentencia = r.GetValue(8).ToString();
                listaSentenciasSQL.Add(sentenciaSQL);
            }
            sincronizacionRequest.SentenciasSQL = listaSentenciasSQL.ToArray();
            return(sincronizacionRequest);
        }
Esempio n. 3
0
        private ResultadoSincronizacion Sincronizar(SincronizacionRequest sincronizacionRequest, String comandosSQL, int ignorarSentenciaConId)
        {
            ResultadoSincronizacion resultadoSincronizacion = new ResultadoSincronizacion();

            resultadoSincronizacion.IdServidorDestino = sincronizacionRequest.IdServidorDestino;
            resultadoSincronizacion.ServidorDestino   = sincronizacionRequest.ServidorDestino;
            var parameters = new Dictionary <string, object>();
            List <System.Data.SqlClient.SqlParameter> parametersOut = new List <System.Data.SqlClient.SqlParameter>();

            parameters.Add("@DebeDetenerEnCasoNoEncontrados", sincronizacionRequest.DebeDetenerEnCasoNoEncontrados);
            parameters.Add("@CodigoTiendaOrigen", sincronizacionRequest.CodigoTiendaOrigen);
            parameters.Add("@CodigoCajaOrigen", sincronizacionRequest.CodigoCajaOrigen);
            parameters.Add("@IdSincronizacionMinimoBloque", sincronizacionRequest.IdSincronizacionMinimoBloque);
            parameters.Add("@ComandosSQL", comandosSQL);
            parameters.Add("@IgnorarSentenciaConId", ignorarSentenciaConId);
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@UltimoIdSincronizado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.Int
            });
            parametersOut.Add(new System.Data.SqlClient.SqlParameter()
            {
                ParameterName = "@MensajeAsociado", Direction = ParameterDirection.Output, SqlDbType = SqlDbType.NVarChar, Size = 4000
            });
            var result = data.ExecuteProcedure("[sync].[sp_vanti_SincronizarDatosLocal]", parameters, parametersOut);

            resultadoSincronizacion.UltimoIdSincronizado = Convert.ToInt32(result["@UltimoIdSincronizado"]);
            resultadoSincronizacion.MensajeAsociado      = result["@MensajeAsociado"].ToString();
            return(resultadoSincronizacion);
        }
Esempio n. 4
0
        /// <summary>
        /// Ejecutar el proceso para sincronizar los datos recibidos
        /// </summary>
        public ResultadoSincronizacion EjecutarSincronizacion(SincronizacionRequest sincronizacionRequest)
        {
            // Armar las sentencias
            String comandosSQL = "";
            int    idAnterior  = -1;

            for (int i = 0; i < sincronizacionRequest.SentenciasSQL.Length; i++)
            {
                if (sincronizacionRequest.SentenciasSQL[i].Id > idAnterior)
                {
                    comandosSQL += sincronizacionRequest.SentenciasSQL[i].Id + "|||SQLSYNCSENTENCE|||" + sincronizacionRequest.SentenciasSQL[i].Sentencia + "|||SQLSYNCID|||";
                    idAnterior   = sincronizacionRequest.SentenciasSQL[i].Id;
                }
                else
                {
                    // Se aborta el proceso, esto no debería suceder
                    return(new ResultadoSincronizacion());
                }
            }
            return(this.Sincronizar(sincronizacionRequest, comandosSQL, -1));
        }
Esempio n. 5
0
 public ResponseBussiness <ResultadoSincronizacion> EjecutarProcesoSincronizacion(SincronizacionRequest sincronizacionRequest)
 {
     return(new SincronizacionBusiness().ProcesarPeticionSincronizacion(sincronizacionRequest));
 }
Esempio n. 6
0
        /// <summary>
        /// Procesar una petición de sincronización
        /// </summary>
        public ResponseBussiness <ResultadoSincronizacion> ProcesarPeticionSincronizacion(SincronizacionRequest sincronizacionRequest)
        {
            ResultadoSincronizacion resultadoSincronizacion = new ResultadoSincronizacion();

            resultadoSincronizacion = this.repository.EjecutarSincronizacion(sincronizacionRequest);
            return(resultadoSincronizacion);
        }