public async Task <IViewComponentResult> InvokeAsync(int requestId, User user, JobSet jobSet, CancellationToken cancellationToken, bool toPrint = false) { if (!jobSet.GroupAdminView()) { throw new Exception($"Unexpected JobSet: {jobSet}"); } var requestDetail = await _requestService.GetRequestDetailAsync(requestId, user.ID, cancellationToken); var jobDetails = await Task.WhenAll(requestDetail.RequestSummary.JobBasics.Select(async j => await _requestService.GetJobDetailsAsync(j.JobID, user.ID, jobSet.GroupAdminView(), cancellationToken))); var instructions = await _groupService.GetAllGroupSupportActivityInstructions(requestDetail.RequestSummary.ReferringGroupID, jobDetails.Select(j => j.JobSummary.SupportActivity).Distinct(), cancellationToken); RequestDetailViewModel requestDetailViewModel = new RequestDetailViewModel() { RequestDetail = requestDetail, JobDetails = jobDetails, GroupSupportActivityInstructions = instructions, }; if (requestDetail.RequestSummary.Shift != null) { requestDetailViewModel.LocationDetails = await _addressService.GetLocationDetails(requestDetail.RequestSummary.Shift.Location, cancellationToken); } return(View("RequestDetail", requestDetailViewModel)); }
public async Task <IViewComponentResult> InvokeAsync(int jobId, User user, JobSet jobSet, CancellationToken cancellationToken, bool toPrint = false) { JobDetail jobDetails = jobSet.PrivilegedView() switch { true => await _requestService.GetJobDetailsAsync(jobId, user.ID, jobSet.GroupAdminView(), cancellationToken), false => await _requestService.GetJobAndRequestSummaryAsync(jobId, cancellationToken) }; if (jobDetails == null) { throw new Exception($"Failed to retrieve job details for JobId {jobId}"); } JobDetailViewModel jobDetailViewModel = new JobDetailViewModel() { JobDetail = jobDetails, UserActingAsAdmin = jobSet == JobSet.GroupRequests, GroupSupportActivityInstructions = await _groupService.GetGroupSupportActivityInstructions(jobDetails.JobSummary.ReferringGroupID, jobDetails.JobSummary.SupportActivity, cancellationToken), ToPrint = toPrint }; if (jobDetails.RequestSummary.Shift != null) { var userLocationDetails = await _addressService.GetLocationDetailsForUser(user, cancellationToken); jobDetailViewModel.Location = userLocationDetails.FirstOrDefault(l => l.Location.Equals(jobDetails.RequestSummary.Shift.Location)); } return(View("JobDetail", jobDetailViewModel)); } }