示例#1
0
        public async Task <OutputFolderServiceModel> GetFolderByIdAsync(
            int folderId,
            int employeeId,
            int?companyDepartmentsId = null)
        {
            if (companyDepartmentsId.HasValue)
            {
                var selectedDataId = await this.employeeService.GetSelectedCompanyDepartmentId(employeeId);

                if (selectedDataId != companyDepartmentsId.Value)
                {
                    throw new FolderException {
                              Message = "The selected company/department is invalid."
                    };
                }
            }

            var folder = await this.folderDapper.GetFolderByIdAsync(folderId);

            Guard.AgainstNullObject <FolderException>(folder, nameof(folder));

            var rootId = folder.RootId;

            if (rootId is null)
            {
                rootId = folder.FolderId;
            }

            var folderToReturn = await this.GenerateFolderWithTreeAsync(rootId.Value, employeeId, folderId);

            folderToReturn.Files = (await fileDapper.GetFilesByFolderIdAsync(folderId)).ToArray();

            foreach (var file in folderToReturn.Files)
            {
                file.CreatorUsername = await this.employeeService.GetEmailByIdAsync(file.EmployeeId);
            }

            folder.CreatorUsername = await this.employeeService.GetEmailByIdAsync(folder.EmployeeId);

            // save and send message
            var messageData = new FolderOpenedMessage
            {
                FolderId = folder.FolderId,
                UserId   = await this.employeeService.GetUserIdByEmployeeAsync(employeeId)
            };

            var message = new Message(messageData);

            await this.messageService.SaveAsync(message);

            await this.publisher.Publish(messageData);

            await this.messageService.MarkMessageAsPublishedAsync(message.Id);

            return(folderToReturn);
        }
示例#2
0
        public async Task <OutputFolderServiceModel> GetRootFolderByCatalogIdAsync(
            int catalogId,
            int employeeId,
            bool includeSubfolders = true)
        {
            var root = await this.folderDapper.GetRootFolderByCatalogIdAsync(catalogId);

            if (root is null)
            {
                return(null);
            }

            OutputFolderServiceModel folder;

            if (includeSubfolders)
            {
                folder = await this.GenerateFolderWithTreeAsync(root.FolderId, employeeId, root.FolderId);
            }
            else
            {
                folder = root;
            }

            folder.Files = (await this.fileDapper.GetFilesByFolderIdAsync(folder.FolderId)).ToArray();

            foreach (var file in folder.Files)
            {
                file.CreatorUsername = await this.employeeService.GetEmailByIdAsync(file.EmployeeId);
            }

            folder.CreatorUsername = await this.employeeService.GetEmailByIdAsync(folder.EmployeeId);

            var messageData = new FolderOpenedMessage
            {
                FolderId = folder.FolderId,
                UserId   = await this.employeeService.GetUserIdByEmployeeAsync(employeeId)
            };

            var message = new Message(messageData);

            await this.messageService.SaveAsync(message);

            await this.publisher.Publish(messageData);

            await this.messageService.MarkMessageAsPublishedAsync(message.Id);

            return(folder);
        }