private void SetAvailableSessions(IOpenWindowViewModel openWindowViewModel, IReadOnlyCollection <SessionInfoDto> recentSessionInfos, IReadOnlyCollection <SessionInfoDto> archivedSessionInfoDtos, Func <SessionInfoDto, Task> openByDoubleClickCommand) { openWindowViewModel.ArchiveSessionsInfos = archivedSessionInfoDtos.OrderByDescending(x => x.SessionRunDateTime).Select(x => { IOpenWindowSessionInformationViewModel newViewModel = _viewModelFactory.Create <IOpenWindowSessionInformationViewModel>(); newViewModel.FromModel(x); newViewModel.IsArchiveIconVisible = false; newViewModel.SelectThisSessionCommand = new AsyncCommand(() => openByDoubleClickCommand(x)); newViewModel.OpenSessionFolderCommand = new AsyncCommand(() => OpenSessionFolder(x)); newViewModel.DeleteSessionCommand = new RelayCommand(() => DeleteSession(x, openWindowViewModel)); return(newViewModel); }).ToList(); openWindowViewModel.RecentSessionsInfos = recentSessionInfos.OrderByDescending(x => x.SessionRunDateTime).Select(x => { IOpenWindowSessionInformationViewModel newViewModel = _viewModelFactory.Create <IOpenWindowSessionInformationViewModel>(); newViewModel.FromModel(x); newViewModel.ArchiveCommand = new AsyncCommand(() => ArchiveSession(openWindowViewModel, x)); newViewModel.SelectThisSessionCommand = new AsyncCommand(() => openByDoubleClickCommand(x)); newViewModel.OpenSessionFolderCommand = new AsyncCommand(() => OpenSessionFolder(x)); newViewModel.DeleteSessionCommand = new RelayCommand(() => DeleteSession(x, openWindowViewModel)); newViewModel.IsArchiveIconVisible = archivedSessionInfoDtos.FirstOrDefault(y => x.Id == y.Id) == null; return(newViewModel); }).ToList(); }
private async Task RefreshAllAvailableSession(IOpenWindowViewModel openWindowViewModel) { openWindowViewModel.IsBusy = true; Task <IReadOnlyCollection <SessionInfoDto> > recentSessionsTask = _telemetryLoadController.GetAllRecentSessionInfoAsync(); Task <IReadOnlyCollection <SessionInfoDto> > archiveSessionsTask = _telemetryLoadController.GetAllArchivedSessionInfoAsync(); await Task.WhenAll(recentSessionsTask, archiveSessionsTask); SetAvailableSessions(openWindowViewModel, recentSessionsTask.Result, archiveSessionsTask.Result, OpenSession); openWindowViewModel.IsBusy = false; }
private void DeleteSession(SessionInfoDto sessionInfoDto, IOpenWindowViewModel openWindowViewModel) { if (_loadedSessions.FirstOrDefault(x => x.Id == sessionInfoDto.Id) != null) { MessageBox.Show("Sessions is currently opened. Unable to delete opened session.", "Session Opened", MessageBoxButton.OK, MessageBoxImage.Information); return; } _telemetryLoadController.DeleteSession(sessionInfoDto); openWindowViewModel.RefreshRecentCommand.Execute(null); }
public OpenWindowController(IMainWindowViewModel mainWindowViewModel, ITelemetryLoadController telemetryLoadController, IViewModelFactory viewModelFactory, ITelemetryViewsSynchronization telemetryViewsSynchronization) { _loadedSessions = new List <SessionInfoDto>(); _mainWindowViewModel = mainWindowViewModel; _telemetryLoadController = telemetryLoadController; _viewModelFactory = viewModelFactory; _telemetryViewsSynchronization = telemetryViewsSynchronization; _openWindowViewModel = viewModelFactory.Create <IOpenWindowViewModel>(); _addWindowViewModel = viewModelFactory.Create <IOpenWindowViewModel>(); _mainWindowViewModel.LapSelectionViewModel.OpenWindowViewModel = _openWindowViewModel; _mainWindowViewModel.LapSelectionViewModel.AddWindowViewModel = _addWindowViewModel; BindCommands(); }
private void AddButton_OnClick(object sender, RoutedEventArgs e) { IOpenWindowViewModel openWindowViewModel = ((ILapSelectionViewModel)DataContext).AddWindowViewModel; if (_addWindow == null) { openWindowViewModel.IsOpenWindowVisible = true; _addWindow = new OpenWindow { WindowStartupLocation = WindowStartupLocation.CenterScreen, Owner = Window.GetWindow(this), DataContext = openWindowViewModel }; _addWindow.Closed += AddWindowOnClosed; openWindowViewModel.RefreshRecentCommand.Execute(null); _addWindow.Show(); return; } openWindowViewModel.RefreshRecentCommand.Execute(null); openWindowViewModel.IsOpenWindowVisible = true; _openWindow.Focus(); }
private async Task RefreshAvailableSessionThatMatchTrack(IOpenWindowViewModel openWindowViewModel) { openWindowViewModel.IsBusy = true; Task <IReadOnlyCollection <SessionInfoDto> > recentSessionsTask = _telemetryLoadController.GetAllRecentSessionInfoAsync(); Task <IReadOnlyCollection <SessionInfoDto> > archiveSessionsTask = _telemetryLoadController.GetAllArchivedSessionInfoAsync(); await Task.WhenAll(recentSessionsTask, archiveSessionsTask); IReadOnlyCollection <SessionInfoDto> recentSessionInfos = recentSessionsTask.Result; IReadOnlyCollection <SessionInfoDto> archivedSessionsInfo = archiveSessionsTask.Result; if (_lastOpenedSession != null) { recentSessionInfos = recentSessionInfos.Where(x => x.TrackName == _lastOpenedSession.TrackName && x.LayoutName == _lastOpenedSession.LayoutName && x.Simulator == _lastOpenedSession.Simulator && _loadedSessions.FirstOrDefault(y => y.Id == x.Id) == null).ToList(); archivedSessionsInfo = archivedSessionsInfo.Where(x => x.TrackName == _lastOpenedSession.TrackName && x.LayoutName == _lastOpenedSession.LayoutName && x.Simulator == _lastOpenedSession.Simulator && _loadedSessions.FirstOrDefault(y => y.Id == x.Id) == null).ToList(); } SetAvailableSessions(openWindowViewModel, recentSessionInfos, archivedSessionsInfo, AddSession); openWindowViewModel.IsBusy = false; }
private async Task ArchiveSession(IOpenWindowViewModel openWindowViewModel, SessionInfoDto sessionInfoDto) { try { openWindowViewModel.IsBusy = true; await _telemetryLoadController.ArchiveSession(sessionInfoDto); openWindowViewModel.RefreshRecentCommand.Execute(null); MessageBox.Show("Session Archived", "Success", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception ex) { Logger.Error(ex, "Error while archiving session"); MessageBox.Show("Session Archivation failed", "Failure", MessageBoxButton.OK, MessageBoxImage.Warning); } finally { openWindowViewModel.IsBusy = false; } }
private void CancelAndCloseOpenWindow(IOpenWindowViewModel openWindowViewModel) { openWindowViewModel.IsOpenWindowVisible = false; }