public async Task <IActionResult> UpdateFolder(string id, FolderForCreationDto folderForCreationDto) { { try { Guid.TryParse(User.FindFirst(ClaimTypes.NameIdentifier).Value, out Guid userId); Guid folderForRepoId = new Guid(id); Folder folder = await _repo.GetFolder(folderForRepoId); if (userId != folder.UserId) { return(Unauthorized()); } folder.FolderName = folderForCreationDto.Name; folder.FolderDescription = folderForCreationDto.Description; if (await _repo.SaveAll()) { return(NoContent()); } return(BadRequest("There was a problem updating folder information")); } catch (Exception ex) { return(StatusCode(400, ex.Message)); } } }
public async Task <IActionResult> CreateFolder(FolderForCreationDto folderForCreationDto) { try { Guid.TryParse(User.FindFirst(ClaimTypes.NameIdentifier).Value, out Guid userId); string name = folderForCreationDto.Name; string description = folderForCreationDto.Description; if (await _repo.FolderExists(name, userId)) { return(BadRequest("There is already a folder named: " + name)); } if (name.IndexOfAny(Path.GetInvalidFileNameChars()) != -1) { return(StatusCode(400, "Folder name is not proper")); } User user = await _repo.GetUser(userId); Guid localFolderId = Guid.NewGuid(); string folderName = "App_Data/" + userId.ToString() + "/" + localFolderId.ToString(); string webRootPath = _hostingEnv.WebRootPath; string newPath = Path.Combine(webRootPath, folderName); if (!Directory.Exists(newPath)) { Folder folder = new Folder(); folder.Id = localFolderId; folder.UserId = userId; folder.FolderName = name; folder.FolderDescription = description; user.Folders.Add(folder); if (await _repo.SaveAll()) { Directory.CreateDirectory(newPath); return(StatusCode(200, "Folder Created.")); } return(BadRequest("There was an error creating the folder")); } else { return(BadRequest("There is already a folder named: " + folderName)); } } catch (Exception ex) { return(StatusCode(400, ex.Message)); } }