private void WorkActualizacionSecuencial() { try { _huboError = false; _secuenciaDesfasada = false; CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando base de datos principal..."); var secuencias = _sincronizacionService.ObtenerSecuencias(AppSettings.MaxiKioscoIdentifier.ToString()); var exportacionesLocales = SincronizacionHelper.ObtenerDatosSinExportar(AppSettings.MaxiKioscoIdentifier, UsuarioActual.UsuarioId, secuencias.UltimaSecuenciaAcusada); var count = 1; var orderedList = exportacionesLocales.OrderBy(x => x.Secuencia).ToList(); foreach (var exportacion in orderedList) { CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), String.Format("Actualizando Servidor ({0} de {1} archivos)", count, orderedList.Count)); var actualizarDatosRequest = new ActualizarDatosRequest { Exportacion = new ExportacionData { Archivo = exportacion.ExportacionArchivo.Archivo, Secuencia = exportacion.Secuencia }, MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier }; var actualizarResponse = _sincronizacionService.ActualizarDatos(actualizarDatosRequest); if (!actualizarResponse.Exito) { AppSettings.RefreshSettings(); _huboError = true; if (actualizarResponse.MensageError == "SECUENCIA DESFASADA") { _secuenciaDesfasada = true; } else { MessageBox.Show(actualizarResponse.MensageError); } break; } count++; } if (!_huboError) { int ultimaSecuencia = 0; CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Obteniendo datos de servidor..."); var request = new ObtenerDatosRequest { MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier, UsuarioIdentifier = UsuarioActual.Usuario.Identifier, UltimaSecuenciaExportacion = secuencias.UltimaSecuenciaExportacion }; //Esperar respuesta del server. CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando datos de kiosco..."); var faltan = 10; //no importa este valor (tiene que ser mayor a cero nomas) _sincronizacionService.ForzarArmadoDeArchivoExportacion(UsuarioActual.Usuario.Identifier); var vinoAlgoDeWeb = false; while (faltan > 0) { var response = _sincronizacionService.ObtenerDatosSecuencial(request); faltan = response.ArchivosRestantes; if (response.Exportacion != null) { vinoAlgoDeWeb = true; ultimaSecuencia = response.Exportacion.Secuencia; CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), String.Format("Actualizando datos de kiosco [Archivos restantes: {0}]", response.ArchivosRestantes)); var result = Uow.Exportaciones.ActualizarKiosco(response.Exportacion.Archivo, AppSettings.MaxiKioscoIdentifier, response.Exportacion.Secuencia); request.UltimaSecuenciaExportacion++; if (!result) { _huboError = true; AppSettings.RefreshSettings(); return; } } } if (vinoAlgoDeWeb) { CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Informando al servidor..."); var acuseRequest = new AcusarExportacionRequest() { MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier, UltimaSecuenciaExportacion = ultimaSecuencia, HoraLocalISO = DateHelper.DateAndTimeToISO(DateTime.Now) }; _sincronizacionService.AcusarExportacion(acuseRequest); } CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando stock..."); Uow.Stocks.Actualizar(); } } catch (Exception ex) { MessageBox.Show(Maxikioscos.Comun.Helpers.ExceptionHelper.GetInnerException(ex).Message); _huboError = true; AppSettings.RefreshSettings(); } }
private void SincronizacionSecuencial() { try { //Obtener datos a actualizar desde la base de datos local this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando base de datos principal..."); var secuencias = _sincronizacionService.ObtenerSecuencias(AppSettings.MaxiKioscoIdentifier.ToString()); var exportacionesLocales = SincronizacionHelper.ObtenerDatosSinExportar(AppSettings.MaxiKioscoIdentifier, UsuarioActual.UsuarioId, secuencias.UltimaSecuenciaAcusada); var count = 1; foreach (var exportacion in exportacionesLocales) { this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), String.Format("Actualizando Servidor ({0} de {1} archivos)", count, exportacionesLocales.Count)); var actualizarDatosRequest = new ActualizarDatosRequest { Exportacion = new ExportacionData { Archivo = exportacion.ExportacionArchivo.Archivo, Secuencia = exportacion.Secuencia }, MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier }; var actualizarResponse = _sincronizacionService.ActualizarDatos(actualizarDatosRequest); if (!actualizarResponse.Exito) { AppSettings.RefreshSettings(); _huboError = true; MessageBox.Show(actualizarResponse.MensageError); break; } count++; } if (!_huboError) { var hubieronNuevosDatos = false; int ultimaSecuencia = 0; this.Invoke(new RefrescarProgresoDelegate(RefrescarProgreso), 25); this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Obteniendo datos de servidor..."); var request = new ObtenerDatosRequest { MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier, UsuarioIdentifier = UsuarioActual.Usuario.Identifier, UltimaSecuenciaExportacion = secuencias.UltimaSecuenciaExportacion }; //Esperar respuesta del server. this.Invoke(new RefrescarProgresoDelegate(RefrescarProgreso), 50); this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando datos de kiosco..."); var faltan = 10; //no importa este valor (tiene que ser mayor a cero nomas) while (faltan > 0) { var response = _sincronizacionService.ObtenerDatosSecuencial(request); faltan = response.ArchivosRestantes; if (response.Exportacion != null) { ultimaSecuencia = response.Exportacion.Secuencia; this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), String.Format("Actualizando datos de kiosco [Archivos restantes: {0}]", response.ArchivosRestantes)); var result = Uow.Exportaciones.ActualizarKiosco(response.Exportacion.Archivo, AppSettings.MaxiKioscoIdentifier, response.Exportacion.Secuencia); request.UltimaSecuenciaExportacion++; hubieronNuevosDatos = true; if (!result) { _huboError = true; AppSettings.RefreshSettings(); return; } } } if (hubieronNuevosDatos) { this.Invoke(new RefrescarProgresoDelegate(RefrescarProgreso), 70); this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Informando al servidor..."); var acuseRequest = new AcusarExportacionRequest() { MaxiKioscoIdentifier = AppSettings.MaxiKioscoIdentifier, UltimaSecuenciaExportacion = ultimaSecuencia, HoraLocalISO = DateHelper.DateAndTimeToISO(DateTime.Now) }; _sincronizacionService.AcusarExportacion(acuseRequest); } this.Invoke(new RefrescarProgresoDelegate(RefrescarProgreso), 85); this.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Actualizando stock..."); Uow.Stocks.Actualizar(); } } catch (Exception ex) { MessageBox.Show(Maxikioscos.Comun.Helpers.ExceptionHelper.GetInnerException(ex).Message); _huboError = true; AppSettings.RefreshSettings(); } }