/// <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; })); }
/// <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); }
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); }
/// <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); }