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); }
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); }