private void SwitchScreen(IMenuInfo menuInfo) { IScreen screen; if (menuInfo == null) { return; } if (!_userSession.IsLoggedIn) { return; } //If screen already exists, activate it if (_screenDictionary.ContainsKey(menuInfo.ScreenGuid)) { screen = _screenDictionary[menuInfo.ScreenGuid]; if (screen.IsActive) { return; } if (screen is IDialogScreen) { ((IDialogScreen)screen).Open(); return; } var mainRegion = _regionManager.Regions[_appSettings.RegionNames.MainRegion]; RemoveActiveScreen(); var view = mainRegion.GetView(screen.Guid.ToString()); mainRegion.Activate(view); _screenDictionary[menuInfo.ScreenGuid].IsActive = true; } else { var factory = _factoryRegistry.GetFactory(menuInfo.ScreenGuid); var mainRegion = _regionManager.Regions[_appSettings.RegionNames.MainRegion]; screen = factory.CreateScreen(mainRegion, menuInfo.ScreenGuid); var screenAttribute = screen.GetScreenAttribute(); if (screen is IDialogScreen) { ((IDialogScreen)screen).Open(); _busyService.HideBusy("SwitchScreen"); _screenDictionary.Add(menuInfo.ScreenGuid, screen); return; } RemoveActiveScreen(); mainRegion.Activate(screen.MasterView); screen.IsActive = true; _screenDictionary.Add(menuInfo.ScreenGuid, screen); } //_busyService.HideBusy("SwitchScreen"); _transitionService.EnterViewAnimation(screen.MasterView); }
private void SaveCommandExecute(object item) { _busyService.ShowBusy(_reportscreenKey); var list = new List <TimeEntry>(); foreach (var gridRowItemViewModel in GridRows.Where(x => x.HasChanges)) { var timeEntry = gridRowItemViewModel.TimeEntry; timeEntry.IsSynced = false; timeEntry.Billable = gridRowItemViewModel.EditableBillable; timeEntry.TimeEntryType = gridRowItemViewModel.EditableType; list.Add(timeEntry); TaskCommands.SaveTaskCompleted.Execute(timeEntry); } _timeEntryRepository.AddOrUpdateRange(list); ApplicationCommands.StartSync.Execute(null); _busyService.HideBusy(_reportscreenKey); }
private async void LoadTimeEntries() { // Is being invoked twice when date is selected in bound datepicker if (IsBusy) { return; } IsBusy = true; _busyService.ShowBusy(_dayoverviewKey); IEnumerable <DataOverviewItemViewModel> timeEntries = new List <DataOverviewItemViewModel>(); try { //enddate tasks are also included var timeEntriesDtos = await _timeEntryService.GetTimeEntriesByDateIgnoreEmptyTimeEntries(StartDate, StartDate); timeEntries = timeEntriesDtos.Select(timeEntry => new DataOverviewItemViewModel(timeEntry)); } catch (Exception ex) { if (!_isShowingTextbox) { _isShowingTextbox = true; var result = MessageBox.Show("Error loading timeentries", "Error", MessageBoxButton.OK); _isShowingTextbox = result == MessageBoxResult.None; } Logger.Error(ex); } TimeEntries = timeEntries.OrderBy(x => x.TimeEntry.Guid).ToList(); await Task.Run(() => ThreadUtils.WaitForUIRendering()); IsBusy = false; _busyService.HideBusy(_dayoverviewKey); }
private async void DoSync() { if (!_connectivityService.IsOnline) { ApplicationCommands.SyncCompleted.Execute(null); return; } if (SyncInProgress || !_connectivityService.IsOnline) { return; } SyncInProgress = true; ApplicationCommands.SyncStarted.Execute(ShouldDisplayProgress); try { if (ForceResync) { _busyService.ShowBusy(_syncKey); await Task.Run(() => { SyncProgressChanged(20, "Synchronizing companies"); SynchronizeCompanies().Wait(); SyncProgressChanged(30, "Synchronizing projects"); SynchronizeProjects().Wait(); SyncProgressChanged(20, "Synchronizing tasks"); SynchronizeTasks().Wait(); SyncProgressChanged(5, "Synchronizing time entry types"); SynchronizeTimeEntryTypes().Wait(); SyncProgressChanged(10, "Synchronizing local time entries"); SynchronizeTimeEntries().Wait(); SyncProgressChanged(20, "Synchronizing user statistics"); UserSession.UserStatistics = UserService.GetPerformanceInfo(UserSession); AppSettings.MinTimeEntryDate = UserService.GetTimeEntryMinStartDate(UserSession); }); } else { SyncProgressChanged(20, "Synchronizing companies"); await SynchronizeCompanies(); SyncProgressChanged(30, "Synchronizing projects"); await SynchronizeProjects(); SyncProgressChanged(20, "Synchronizing tasks"); await SynchronizeTasks(); SyncProgressChanged(5, "Synchronizing time entry types"); await SynchronizeTimeEntryTypes(); SyncProgressChanged(10, "Synchronizing local time entries"); await SynchronizeTimeEntries(); SyncProgressChanged(20, "Synchronizing user statistics"); UserSession.UserStatistics = UserService.GetPerformanceInfo(UserSession); AppSettings.MinTimeEntryDate = UserService.GetTimeEntryMinStartDate(UserSession); } SyncProgressChanged(10, "Synchronizing history list"); var numOfDaysBack = UserSession.UserPreferences.StatisticsNumOfDaysBack; var startTime = DateTime.Now.Date.AddDays(-numOfDaysBack); var endTime = DateTime.Now; var lastXDaysTimeEntries = await TimeEntryService.GetTimeEntriesByDate(startTime, endTime); var unsyncedTimeEntries = _timeEntryRepository.GetUnsyncedTimeEntries(); lastXDaysTimeEntries.AddRange(unsyncedTimeEntries.Where(x => !x.HasSyncError)); UserSession.UserStatistics.LastXDaysTimeEntries = lastXDaysTimeEntries; AppSettings.LastSyncDate = DateTime.Now; AppSettings.Save(); SyncProgressChanged(0, "Synchronization complete"); SyncInProgress = false; ForceResync = false; ApplicationCommands.SyncCompleted.Execute(null); } catch (NotFoundByGuidException notFoundByGuidException) { Logger.Error(notFoundByGuidException); SyncInProgress = false; _resyncCommand.Execute(null); } catch (MissingHieracleDataException missingHieracleDataException) { Logger.Error(missingHieracleDataException); if (!ForceResync) { SyncInProgress = false; _resyncCommand.Execute(null); } else { OnSyncFailed("Unknown Synchronization failure. Contact support"); } } catch (Exception ex) { if (ex is AggregateException) { var aggregateException = ex as AggregateException; foreach (var e in aggregateException.Flatten().InnerExceptions) { HandleSyncError(e); } } else { HandleSyncError(ex); } OnSyncFailed("Synchronization failed due to a connectivity error. The application will retry in " + AppSettings.SyncInterval.Minutes + " minutes."); } _busyService.HideBusy(_syncKey); }
private void LoginSucceeded(object obj) { _busyService.HideBusy("Login"); ApplicationCommands.ChangeScreenCommand.Execute(_menuRegistry.GetStartPage); }