public ActionResult Set(ImpersonationStatus status) { if (status.Impersonating) { using (SwitchOrgScope(status.OrganisationId)) { var user = _getUserQuery.Invoke(new GetUserRequest { UserId = status.UserId, OrganisationId = status.OrganisationId }).User; if (user == null) { return(RedirectWithViewModel(status, "index", "Failed to find user with Id {0}".FormatWith(status.UserId))); } status.ExpiryUtc = DateTime.Now.AddMinutes(30); status.EmailAddress = user.Email; _impersonationManager.Impersonate(status); } } else { _impersonationManager.StopImpersonating(); } ConfirmationNotification("Success!"); return(RedirectToAction("Index")); }
public ActionResult Edit(string userId) { return(EditUser(_getUserQuery.Invoke(new GetUserRequest { OrganisationId = Core.AppContext.CurrentUser.OrganisationId, UserId = userId }).User, false)); }
public UpdateIssueDetailsResponse Invoke(UpdateIssueDetailsRequest request) { Trace("Starting..."); var issue = Load <Issue>(Issue.GetId(request.IssueId)); if (issue == null) { return(new UpdateIssueDetailsResponse { Status = UpdateIssueDetailsStatus.IssueNotFound }); } _authorisationManager.Authorise(issue, request.CurrentUser); //if we are assigning this issue to a new user, notify them if (issue.UserId != request.AssignedUserId && request.AssignedUserId != request.CurrentUser.Id) { var user = _getUserQuery.Invoke(new GetUserRequest { UserId = request.AssignedUserId, OrganisationId = issue.OrganisationId }).User; _sendNotificationCommand.Invoke(new SendNotificationRequest { EmailInfo = new IssueAssignedToUserEmailInfo { To = user.Email, IssueId = issue.Id, IssueName = request.Name }, OrganisationId = issue.OrganisationId, Organisation = request.CurrentUser.ActiveOrganisation }); } if (issue.Status != request.Status) { Store(new IssueHistory { DateAddedUtc = DateTime.UtcNow.ToDateTimeOffset(request.CurrentUser.ActiveOrganisation.TimezoneId), IssueId = issue.Id, NewStatus = request.Status, PreviousStatus = issue.Status, SystemMessage = true, UserId = request.CurrentUser.Id, Type = HistoryItemType.StatusUpdated, ApplicationId = issue.ApplicationId, }); } if (issue.UserId != request.AssignedUserId) { Store(new IssueHistory { DateAddedUtc = DateTime.UtcNow.ToDateTimeOffset(request.CurrentUser.ActiveOrganisation.TimezoneId), IssueId = issue.Id, SystemMessage = true, UserId = request.CurrentUser.Id, AssignedToUserId = request.AssignedUserId, Type = HistoryItemType.AssignedUserChanged, ApplicationId = issue.ApplicationId }); } issue.Status = request.Status; issue.UserId = request.AssignedUserId; issue.Name = request.Name; issue.NotifyFrequency = request.NotifyFrequency; issue.Reference = request.Reference; issue.LastModifiedUtc = DateTime.UtcNow; if (request.Comment.IsNotNullOrEmpty()) { Store(new IssueHistory { DateAddedUtc = DateTime.UtcNow.ToDateTimeOffset(request.CurrentUser.ActiveOrganisation.TimezoneId), IssueId = issue.Id, UserId = request.CurrentUser.Id, AssignedToUserId = request.AssignedUserId, Type = HistoryItemType.Comment, Comment = request.Comment, ApplicationId = issue.ApplicationId }); } Session.AddCommitAction(new RaiseIssueModifiedEvent(issue)); return(new UpdateIssueDetailsResponse { Status = UpdateIssueDetailsStatus.Ok }); }
public BatchStatusUpdateResponse Invoke(BatchStatusUpdateRequest request) { Trace("Starting..."); if (request.AssignToUserId != null) { var assignToUser = _getUserQuery.Invoke(new GetUserRequest { OrganisationId = request.CurrentUser.OrganisationId, UserId = request.AssignToUserId }).User; _authorisationManager.Authorise(assignToUser, request.CurrentUser); } var issuesToUpdate = new List <Issue>(); foreach (var issueId in request.IssueIds.Select(issueId => issueId.Split('|')[0])) { var issue = Load <Issue>(Issue.GetId(issueId)); if (issue != null) { _authorisationManager.Authorise(issue, request.CurrentUser); issuesToUpdate.Add(issue); if (request.AssignToUserId != null) { issue.UserId = request.AssignToUserId; Store(new IssueHistory { DateAddedUtc = DateTime.UtcNow.ToDateTimeOffset(request.CurrentUser.ActiveOrganisation.TimezoneId), UserId = request.CurrentUser.Id, AssignedToUserId = request.AssignToUserId, Type = HistoryItemType.AssignedUserChanged, IssueId = issue.Id, ApplicationId = issue.ApplicationId, SystemMessage = true }); } Store(new IssueHistory { DateAddedUtc = DateTime.UtcNow.ToDateTimeOffset(request.CurrentUser.ActiveOrganisation.TimezoneId), UserId = request.CurrentUser.Id, PreviousStatus = issue.Status, NewStatus = request.Status, Type = HistoryItemType.StatusUpdated, IssueId = issue.Id, ApplicationId = issue.ApplicationId, SystemMessage = true }); issue.Status = request.Status; } } if (issuesToUpdate.Count > 0) { Session.AddCommitAction(new RaiseIssueModifiedEvent(issuesToUpdate)); } return(new BatchStatusUpdateResponse { Status = BulkStatusUpdateStatus.Ok }); }