public async Task <IViewComponentResult> InvokeAsync(FeedbackCaptureViewComponentParameters parameters, CancellationToken cancellationToken) { var user = await _authService.GetCurrentUser(HttpContext, cancellationToken); int authorisingUserId = parameters.RequestRole == RequestRoles.Volunteer || parameters.RequestRole == RequestRoles.GroupAdmin ? user.ID : -1; var jobDetails = await _requestService.GetJobDetailsAsync(parameters.JobId, authorisingUserId, parameters.RequestRole == RequestRoles.GroupAdmin, cancellationToken); await EnsureFeedbackCanBeGiven(jobDetails.JobSummary, parameters.RequestRole, user?.ID); FeedbackCaptureEditModel viewModel = new FeedbackCaptureEditModel { RoleSubmittingFeedback = parameters.RequestRole, FeedbackRating = parameters.FeedbackRating, VolunteerName = jobDetails.CurrentVolunteer?.UserPersonalDetails.DisplayName, RecipientName = string.IsNullOrEmpty(jobDetails.JobSummary.RecipientOrganisation) ? jobDetails.Recipient?.FirstName : jobDetails.JobSummary.RecipientOrganisation, RequestorName = jobDetails.Requestor?.FirstName, ShowVolunteerMessage = parameters.RequestRole != RequestRoles.Volunteer && jobDetails.CurrentVolunteer != null, ShowRecipientMessage = parameters.RequestRole != RequestRoles.Recipient && !string.IsNullOrEmpty(jobDetails.Recipient?.EmailAddress), ShowRequestorMessage = parameters.RequestRole != RequestRoles.Requestor && !string.IsNullOrEmpty(jobDetails.Requestor?.EmailAddress) && jobDetails.JobSummary.RequestorType != RequestorType.Myself, ShowHMSMessage = true }; if (jobDetails.JobSummary.ReferringGroupID != (int)Groups.Generic) { var groupDetails = await _groupService.GetGroupById(jobDetails.JobSummary.ReferringGroupID, cancellationToken); viewModel.GroupName = groupDetails.GroupName; viewModel.ShowGroupMessage = (parameters.RequestRole != RequestRoles.GroupAdmin); // TODO: Replace with RequestorDefinedByGroup if (jobDetails.JobSummary.ReferringGroupID == (int)Groups.AgeUKWirral) { viewModel.ShowRequestorMessage = false; } } else { viewModel.ShowGroupMessage = false; } return(View(parameters.RenderAsPopup ? "FeedbackCapturePopup" : "FeedbackCapture", viewModel)); }
public async Task <IActionResult> PostTaskFeedbackCapture(string j, string r, FeedbackCaptureEditModel model, CancellationToken cancellationToken) { int jobId = Base64Utils.Base64DecodeToInt(j); RequestRoles requestRole = (RequestRoles)Base64Utils.Base64DecodeToInt(r); if (!_authService.GetUrlIsSessionAuthorised(HttpContext)) { return(Redirect("/Error/401")); } if (!ModelState.IsValid) { throw new Exception($"Invalid model state in PostTaskFeedbackCapture for job {jobId}"); } model.JobId = jobId; model.RoleSubmittingFeedback = requestRole; var user = await _authService.GetCurrentUser(HttpContext, cancellationToken); var job = await _requestService.GetJobSummaryAsync(jobId, cancellationToken); var result = await _feedbackService.PostRecordFeedback(user, model); return(ShowMessage(result, job.ReferringGroupID, model)); }