Пример #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;
            }));
        }
Пример #2
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);
        }
Пример #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);
        }
Пример #4
0
        /// <summary>
        /// Actualizar la información de la tabla AUDITORIA_DESTINOS
        /// </summary>
        public void ActualizarAuditoriaDestinos(ResultadoSincronizacion resultadoSincronizacion)
        {
            var parameters = new Dictionary <string, object>();

            parameters.Add("@IdServidorDestino", resultadoSincronizacion.IdServidorDestino);
            parameters.Add("@ServidorDestino", resultadoSincronizacion.ServidorDestino);
            parameters.Add("@UltimoIdSincronizado", resultadoSincronizacion.UltimoIdSincronizado);
            parameters.Add("@MensajeAsociado", resultadoSincronizacion.MensajeAsociado);
            data.ExecuteProcedure("[sync].[sp_vanti_SincronizadorActualizarAuditoriaDestinos]", parameters, null);
        }