public async Task <bool> UpdateStatus([FromBody] IssueStateViewModel model) { var username = User.Identity.Name.ToUpper(); var user = await _userManager.Users.Where(x => username == x.NormalizedUserName) .FirstOrDefaultAsync(); var issue = await _issues.GetAll().Include(x => x.UserReported).Include(x => x.IssueCategory).FirstOrDefaultAsync(x => x.Id == model.IssueId); if (issue == null) { return(false); } issue.Status = model.Status; if (model.Status == IssueStatus.Resolved) { issue.ResovledDate = DateTime.UtcNow; } await _issues.SaveChangesAsync(); if (issue.Status == IssueStatus.Resolved) { var notificationModel = new NotificationOptions { RequestId = 0, DateTime = DateTime.Now, NotificationType = NotificationType.IssueResolved, RequestType = issue.RequestType, Recipient = !string.IsNullOrEmpty(issue.UserReported?.Email) ? issue.UserReported.Email : string.Empty, AdditionalInformation = $"{issue.Subject} | {issue.Description}", UserId = issue.UserReported.Id, // This is a resolved notification, so needs to go to the user who raised it }; AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserName ?? string.Empty, issue.UserReported.UserAlias); await _notification.Notify(notificationModel); } return(true); }
public async Task <bool> UpdateStatus([FromBody] IssueStateViewModel model) { var user = await _userManager.Users.Where(x => User.Identity.Name.Equals(x.UserName, StringComparison.InvariantCultureIgnoreCase)) .FirstOrDefaultAsync(); var issue = await _issues.GetAll().Include(x => x.UserReported).Include(x => x.IssueCategory).FirstOrDefaultAsync(x => x.Id == model.IssueId); if (issue == null) { return(false); } issue.Status = model.Status; if (model.Status == IssueStatus.Resolved) { issue.ResovledDate = DateTime.UtcNow; } await _issues.SaveChangesAsync(); if (issue.Status == IssueStatus.Resolved) { var notificationModel = new NotificationOptions { RequestId = 0, DateTime = DateTime.Now, NotificationType = NotificationType.IssueResolved, RequestType = issue.RequestType, Recipient = !string.IsNullOrEmpty(issue.UserReported?.Email) ? issue.UserReported.Email : string.Empty, AdditionalInformation = $"{issue.Subject} | {issue.Description}", UserId = user.Id, }; AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserAlias ?? string.Empty); await _notification.Notify(notificationModel); } return(true); }
public async Task <bool> UpdateStatus([FromBody] IssueStateViewModel model) { var user = await _userManager.Users.Where(x => User.Identity.Name == x.UserName) .FirstOrDefaultAsync(); var issue = await _issues.GetAll().Include(x => x.UserReported).FirstOrDefaultAsync(x => x.Id == model.IssueId); if (issue == null) { return(false); } issue.Status = model.Status; await _issues.SaveChangesAsync(); if (issue.Status == IssueStatus.Resolved) { var notificationModel = new NotificationOptions { RequestId = 0, DateTime = DateTime.Now, NotificationType = NotificationType.IssueResolved, RequestType = issue.RequestType, Recipient = !string.IsNullOrEmpty(issue.UserReported?.Email) ? issue.UserReported.Email : string.Empty, AdditionalInformation = $"{issue.Subject} | {issue.Description}", UserId = user.Id, }; AddIssueNotificationSubstitutes(notificationModel, issue, issue.UserReported?.UserAlias ?? string.Empty); BackgroundJob.Enqueue(() => _notification.Publish(notificationModel)); } return(true); }