public IActionResult CreateFile([FromForm] InsertFileRequest request) { if (request.File == null) { return(BadRequest("Отсутствует файл в запросе")); } var folder = _folderRepo.FirstOrDefault(f => f.Id == request.FolderId); if (folder == null) { return(BadRequest("Указанная папка не существует")); } if (_fileRepo.Any(f => f.FileName == request.File.FileName && f.Folder.Id == request.FolderId)) { return(BadRequest("В данной папке уже существует файл с таким именем")); } var newFile = new File { FileName = request.File.FileName, Folder = folder, FilePath = DiskHelper.SaveToPC(request.File, _folderService.GetFullPath(request.FolderId)) }; _fileRepo.Add(newFile); _db.SaveChanges(); return(CreatedAtAction(nameof(GetFile), routeValues: new { fileId = newFile.Id }, newFile.Id)); }
public IActionResult GetFolder(Guid folderId) { string folderName = "root"; if (folderId != Guid.Empty) { var currentFolder = _folderRepo.Where(f => f.Id == folderId).FirstOrDefault(); if (currentFolder == null) { return(BadRequest("Папка не найдена!")); } folderId = currentFolder.Id; folderName = currentFolder.FolderName; } if (folderId != Guid.Empty && !UserHasRole(folderId, AccessLevel.Read)) { return(BadRequest("Не достаточно уровня прав доступа!")); } var childFolders = _folderService.GetSubFolders(folderId, UserContext.Id); var response = new GetFoldersResponse { Folder = new FolderDescription { FolderId = folderId, FolderName = folderName, Folders = childFolders.Select(f => new ChildFolder { FolderName = f.FolderName, FolderId = f.Id }).ToList(), FullPath = _folderService.GetFullPath(folderId), Files = _folderService.GetFiles(folderId), Owners = _db.Set <UsersFolders>().Where(uf => uf.FolderId == folderId && uf.AccessLevel == AccessLevel.Owner).Select(uf => _db.Users.First(u => u.Id == uf.UserId).Username).ToList() } }; return(Ok(response)); }