private void WorkerOnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs runWorkerCompletedEventArgs) { AppSettings.RefreshSettings(); UsuarioActual.ResetearValoresCacheados(); if (_secuenciaDesfasada) { CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Reanudando sincronización en pocos segundos.."); } else { if (_huboError) { CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Sincronización finalizada con errores"); } else { CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), "Sincronización finalizada"); ActualizacionPantallasHelper.ActualizarPantallaVentas(); if (SyncExitosaEvent != null) { SyncExitosaEvent(); } } } if (SyncTimer != null) { SyncTimer.Stop(); } else { SyncTimer = new Timer(); SyncTimer.Tick += SyncTimerOnTick; } if (UsuarioActual.Cuenta.SincronizarAutomaticamente.GetValueOrDefault()) { var interval = _secuenciaDesfasada ? 10 * 1000 //10 segundos : (_huboError ? 5 * 60 * 1000 //5 minutos : UsuarioActual.Cuenta.IntervaloSincronizacion.GetValueOrDefault() * 360000); //confiuracion SyncTimer.Interval = interval; SyncTimer.Start(); } Timer = new Timer { Interval = 5000 }; Timer.Tick += TimerOnTick; Timer.Start(); }
private void TimerOnTick(object sender, EventArgs eventArgs) { Timer.Stop(); CurrentForm.Invoke(new ActualizarMensajeDelegate(ActualizarMensaje), ""); }
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(); } }