public async Task <ActionResult> UpdateFileNode(string content, Guid id) { if (id == null) { return(BadRequest()); } // 判断是否存在 var currentFileNode = _context.FileNodes.SingleOrDefault(f => f.Id == id); if (currentFileNode == null) { return(NotFound()); } // 更新github 文件内容 var updateFileDataModel = new NewFileDataModel { Content = string.IsNullOrEmpty(content) ? $"目录:{currentFileNode.FileName}" : content, Message = $"README更新", Path = currentFileNode.Path + "/README.md", Sha = currentFileNode.SHA }; // 更新内容 currentFileNode.ReadmeContent = content; updateFileDataModel.Path = WebUtility.UrlEncode(updateFileDataModel.Path); var createFileResult = await _github.CreateFile(updateFileDataModel); if (createFileResult != null) { currentFileNode.SHA = createFileResult.Sha; currentFileNode.GithubLink = createFileResult.Url; } _context.SaveChanges(); return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = currentFileNode.Id })); }
public async Task <ActionResult> AddFileNode(string name, string content, Guid?id) { if (string.IsNullOrEmpty(name)) { return(BadRequest()); } name = name.Trim(); // 判断是否存在 var exist = _context.FileNodes.SingleOrDefault(f => f.FileName.Equals(name)); if (exist == null) { var parentNode = new FileNode(); if (id != null) { parentNode = _context.FileNodes.SingleOrDefault(f => f.Id == id); } // 构造github 新文件内容 var newFileDataModel = new NewFileDataModel { Content = string.IsNullOrEmpty(content) ? $"目录:{name}" : content, Message = $"新建目录:{name}", Path = $"{name}/README.md" }; var newFileNode = new FileNode { FileName = name, IsFile = false, ReadmeContent = content }; // 有父节点时 if (parentNode.FileName != null) { newFileNode.ParentNode = parentNode; var paths = GetFilePath(parentNode.Id)?.Select(p => p.FileName)?.ToArray(); // 设置路径 newFileNode.Path = string.Join("/", paths) + "/" + name; newFileDataModel.Path = string.Join("/", paths) + "/" + name + "/readme.md"; } else { newFileNode.Path = name; } newFileDataModel.Path = WebUtility.UrlEncode(newFileDataModel.Path); var createFileResult = await _github.CreateFile(newFileDataModel); if (createFileResult != null) { newFileNode.SHA = createFileResult.Sha; newFileNode.GithubLink = createFileResult.Url; } _context.Add(newFileNode); _context.SaveChanges(); return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = newFileNode.Id })); } else { return(RedirectToAction(nameof(PractknowsController.FileNodes), new { id = exist.Id })); } }