public async Task <bool> UpdateIssuePostAsync(IssuePost issuePostToUpdate) { _issuePostRepository.Update(issuePostToUpdate); var updated = await _issuePostRepository.SaveAsync().ConfigureAwait(false); return(updated > 0); }
public async Task <IActionResult> Post([FromRoute] uint id, CommentPostRequest req) { if (!ModelState.IsValid) { return(BadRequest()); } IssuePost post = (await Db.IssuePosts.AddAsync(new IssuePost() { AuthorId = HttpContext.User.IsAnonymous() ? null : new uint?((uint)HttpContext.User.GetUserId()), IssueId = id, ContainedText = req.Text, DateOfCreation = DateTime.UtcNow })).Entity; await Db.IssueActivities.AddIssueActivity(HttpContext, id, new PostActivity() { ContainedText = req.Text, Post = post }); await Db.SaveChangesAsync(); return(RedirectToAction("ViewTalk", "Issue", new { id = id }, post.Id.ToString())); }
public async Task <bool> DeleteIssuePostAsync(Guid issuePostId) { var issuePost = new IssuePost { Id = issuePostId }; _issuePostRepository.Delete(issuePost); var deleted = await _issuePostRepository.SaveAsync().ConfigureAwait(false); return(deleted > 0); }
public async Task <bool> CreateIssuePostAsync(IssuePost issuePost) { if (issuePost == null) { return(false); } issuePost.Number = _issuePostRepository.FindByCondition(i => i.IssueId == issuePost.IssueId).Count(); await _issuePostRepository.CreateAsync(issuePost).ConfigureAwait(false); var created = await _issuePostRepository.SaveAsync().ConfigureAwait(false); return(created > 0); }
public async Task <IActionResult> CreateByUser([FromRoute] string username, [FromRoute] string projectName, [FromRoute] int issueNumber, [FromBody] CreateIssuePostRequest issueRequest) { if (issueRequest == null) { return(new BadRequestResult()); } var project = await _projectService.GetProjectByUserAsync(username, projectName).ConfigureAwait(false); if (project == null) { return(new NotFoundResult()); } var issue = await _issueService.GetIssueByUserAsync(username, projectName, issueNumber).ConfigureAwait(false); if (issue == null) { return(new NotFoundResult()); } var newIssuePostId = Guid.NewGuid(); var issuePost = new IssuePost { Id = newIssuePostId, IssueId = issue.Id, AuthorId = HttpContext.GetUserId(), CreatedAt = DateTime.UtcNow, Content = issueRequest.Content }; var created = await _issuePostService.CreateIssuePostAsync(issuePost).ConfigureAwait(false); var locationUri = _uriService.GetUri(issuePost.Number.ToString()); if (created) { return(Created(locationUri, new Response <IssuePostResponse>(_mapper.Map <IssuePostResponse>(issuePost)))); } return(NotFound()); }
public async Task <IActionResult> EditPost([FromRoute] uint id) { IssuePost post = await Db.IssuePosts .Include(x => x.Author) .SingleAsync(x => x.Id == id); if (!HttpContext.UserCan("issue.editpost.all") && !(HttpContext.UserCan("issue.editpost.own") && ((int?)post.AuthorId ?? -1) == HttpContext.User.GetUserId())) { if (HttpContext.User.IsAnonymous()) { return(Challenge()); } else { return(Forbid()); } } return(View(post)); }
public async Task <IActionResult> EditPost([FromRoute] uint id, CommentPostRequest req) { if (!ModelState.IsValid) { return(BadRequest()); } IssuePost post = await Db.IssuePosts.FindAsync(id); if (!HttpContext.UserCan("issue.editpost.all") && !(HttpContext.UserCan("issue.editpost.own") && ((int?)post.AuthorId ?? -1) == HttpContext.User.GetUserId())) { if (HttpContext.User.IsAnonymous()) { return(Challenge()); } else { return(Forbid()); } } if (post.ContainedText != req.Text) { await Db.IssueActivities.AddIssueActivity(HttpContext, id, new EditPostActivity() { OldContainedText = post.ContainedText, NewContainedText = req.Text, PostId = id }); post.DateOfEdit = DateTime.UtcNow; post.ContainedText = req.Text; await Db.SaveChangesAsync(); } return(RedirectToAction("ViewTalk", "Issue", new { id = post.IssueId }, post.Id.ToString())); }