コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
        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));
            }
        }