/// <summary> /// Update the <see cref="File"/> rows /// </summary> private void UpdateFileRows() { var currentFiles = this.fileCache.Keys; var addedFiles = this.Thing.File.Except(currentFiles).ToList(); var removedFiles = currentFiles.Except(this.Thing.File); foreach (var removedFile in removedFiles) { FileRowViewModel row; if (this.fileCache.TryGetValue(removedFile, out row)) { row.Dispose(); this.fileCache.Remove(removedFile); ((IRowViewModelBase <Thing>)row.ContainerViewModel).ContainedRows.Remove(row); } } foreach (var addedFile in addedFiles) { var row = new FileRowViewModel(addedFile, this.Session, this); this.fileCache.Add(addedFile, row); var lastCreatedDate = addedFile.FileRevision.Select(x => x.CreatedOn).Max(); var lastRevision = addedFile.FileRevision.First(x => x.CreatedOn == lastCreatedDate); if (lastRevision.ContainingFolder == null) { this.ContainedRows.Add(row); } else { var containerViewModel = this.folderCache[lastRevision.ContainingFolder]; containerViewModel.ContainedRows.Add(row); row.UpdateContainerViewModel(containerViewModel); } } }
/// <summary> /// Executes the upload file command /// </summary> private void ExecuteUploadFile() { var result = this.fileDialogService.GetSaveFileDialog(string.Empty, string.Empty, string.Empty, string.Empty, 1); if (string.IsNullOrEmpty(result)) { return; } // TODO on Task T1250: Replace the following 3 lines with an actual call to the server to upload the file var uploadedFile = new File(); var participant = new Participant { Person = new Person() }; var fileRevision = new FileRevision { Creator = participant }; uploadedFile.FileRevision.Add(fileRevision); var uploadedRow = new FileRowViewModel(uploadedFile, this.Session, this.commonFileStoreRow); this.ContainedRows.Add(uploadedRow); }
/// <summary> /// Update the <see cref="File"/> rows /// </summary> public void UpdateFileRows() { this.UpdateFolderRows(); var currentFiles = this.fileCache.Keys; var addedFiles = this.Files.Except(currentFiles).ToList(); var removedFiles = currentFiles.Except(this.Files).ToList(); foreach (var removedFile in removedFiles) { if (this.fileCache.TryGetValue(removedFile, out var row)) { this.fileCache.Remove(removedFile); ((IHaveContainedRows)row.ContainerViewModel).ContainedRows.RemoveAndDispose(row); } } foreach (var addedFile in addedFiles) { var row = new FileRowViewModel(addedFile, this.fileStoreRow.Session, this.fileStoreRow, this); this.fileCache.Add(addedFile, row); var lastRevision = addedFile.FileRevision.OrderByDescending(x => x.CreatedOn).FirstOrDefault(); if (lastRevision?.ContainingFolder == null) { this.fileStoreRow.ContainedRows.Add(row); } else { var containerViewModel = this.folderCache[lastRevision.ContainingFolder]; containerViewModel.ContainedRows.Add(row); row.UpdateContainerViewModel(containerViewModel); } } }