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