Beispiel #1
0
        // need for the breadcrumbs navigation
        private void AddParentFolderRecursively(
            IEnumerable <OutputFolderWithAccessServiceModel> folders,
            OutputFolderServiceModel folder)
        {
            if (folder.ParentId.HasValue)
            {
                folder.ParentFolder = this.MapToOutputFolderServiceModel(
                    folders.FirstOrDefault(x => x.FolderId == folder.ParentId.Value));

                this.AddParentFolderRecursively(folders, folder.ParentFolder);
            }
        }
Beispiel #2
0
        private void CalculateTotalFileCountAndFolderCountForTree(OutputFolderServiceModel folder)
        {
            if (folder.SubFolders.Any())
            {
                foreach (var subFolder in folder.SubFolders)
                {
                    CalculateTotalFileCountAndFolderCountForTree(subFolder);
                }

                folder.FileCount   += folder.SubFolders.Sum(f => f.FileCount);
                folder.FolderCount += folder.SubFolders.Sum(f => f.FolderCount);
            }
        }
Beispiel #3
0
        private async Task DeleteFilesAsync(int catalogId, int employeeId, OutputFolderServiceModel parentFolder)
        {
            if (parentFolder is null)
            {
                return;
            }

            await this.DeleteFilesForFolderAsync(parentFolder.FolderId);

            foreach (var subFolder in parentFolder.SubFolders)
            {
                await this.DeleteFilesForFolderAsync(subFolder.FolderId);

                await this.DeleteFilesAsync(catalogId, employeeId, subFolder);
            }
        }
Beispiel #4
0
        private OutputFolderServiceModel FindFolderWithId(OutputFolderServiceModel folder, int folderId)
        {
            if (folder.FolderId == folderId)
            {
                return(folder);
            }
            else if (!folder.SubFolders.Any())
            {
                return(null);
            }
            else
            {
                foreach (var subFolder in folder.SubFolders)
                {
                    var foundFolder = this.FindFolderWithId(subFolder, folderId);
                    if (foundFolder != null)
                    {
                        return(foundFolder);
                    }
                }

                return(null);
            }
        }
Beispiel #5
0
 private async Task AttachSubFoldersAsync(int catalogId, int employeeId, OutputFolderServiceModel folder)
 {
     folder.SubFolders = (await this.folderDapper.GetSubFoldersAsync(folder.FolderId)).ToArray();
     await this.AttachSubFoldersRecursivelyAsync(catalogId, employeeId, folder.SubFolders);
 }
Beispiel #6
0
        private async Task DeleteFolderAndSubFoldersRecursivelyAsync(int catalogId, int employeeId, OutputFolderServiceModel folder)
        {
            // Cant delete the root folder
            if (folder is null || !folder.RootId.HasValue)
            {
                return;
            }

            // folders must be empty at this point
            var(isDeleted, insertedMessageId) = await this.folderDapper.DeleteAsync(catalogId, folder.FolderId);

            if (!isDeleted)
            {
                return;
            }

            // TODO: refactor when move to EF
            var messageData = new FolderDeletedMessage
            {
                FolderId = folder.FolderId
            };

            await this.publisher.Publish(messageData);

            await this.messageService.MarkMessageAsPublishedAsync(insertedMessageId);


            foreach (var subFolder in folder.SubFolders)
            {
                await this.DeleteFolderAndSubFoldersRecursivelyAsync(catalogId, employeeId, subFolder);
            }
        }
Beispiel #7
0
        private async Task <bool> DeleteFolderOperationsAsync(int catalogId, int employeeId, OutputFolderServiceModel existingFolder)
        {
            try
            {
                await this.CheckFolderPermissionsAsync(catalogId, existingFolder?.FolderId ?? 0, employeeId);

                await this.AttachSubFoldersAsync(catalogId, employeeId, existingFolder);

                await this.DeleteFilesAsync(catalogId, employeeId, existingFolder);

                await this.DeleteFolderAndSubFoldersRecursivelyAsync(catalogId, employeeId, existingFolder);

                return(true);
            }
            catch (FolderException)
            {
                throw;
            }
            catch (PermissionException)
            {
                throw;
            }
            catch
            {
                return(false);
            }
        }