Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }