public async Task <IActionResult> Details(DetailsViewModel viewModel) { switch (viewModel.Selection) { case CohortDetailsOptions.Send: { var request = await _modelMapper.Map <SendCohortRequest>(viewModel); await _commitmentsApiClient.SendCohort(viewModel.CohortId, request); return(RedirectToAction("Sent", new { viewModel.CohortReference, viewModel.AccountHashedId })); } case CohortDetailsOptions.Approve: { var request = await _modelMapper.Map <ApproveCohortRequest>(viewModel); await _commitmentsApiClient.ApproveCohort(viewModel.CohortId, request); return(RedirectToAction("Approved", new { viewModel.CohortReference, viewModel.AccountHashedId })); } case CohortDetailsOptions.ViewEmployerAgreement: { var request = await _modelMapper.Map <ViewEmployerAgreementRequest>(viewModel); if (request.AgreementHashedId == null) { return(Redirect(_linkGenerator.AccountsLink($"accounts/{request.AccountHashedId}/agreements/"))); } return(Redirect(_linkGenerator.AccountsLink( $"accounts/{request.AccountHashedId}/agreements/{request.AgreementHashedId}/about-your-agreement"))); } case CohortDetailsOptions.Homepage: { return(Redirect(_linkGenerator.AccountsLink($"accounts/{viewModel.AccountHashedId}/teams"))); } default: throw new ArgumentOutOfRangeException(nameof(viewModel.Selection)); } }
public async Task <IActionResult> Details([FromServices] IPolicyAuthorizationWrapper authorizationService, DetailsViewModel viewModel) { switch (viewModel.Selection) { case CohortDetailsOptions.Send: { await ValidateAuthorization(authorizationService); var request = await _modelMapper.Map <SendCohortRequest>(viewModel); await _commitmentApiClient.SendCohort(viewModel.CohortId, request); return(RedirectToAction(nameof(Acknowledgement), new { viewModel.CohortReference, viewModel.ProviderId, SaveStatus = SaveStatus.AmendAndSend })); } case CohortDetailsOptions.Approve: { await ValidateAuthorization(authorizationService); var request = await _modelMapper.Map <ApproveCohortRequest>(viewModel); await _commitmentApiClient.ApproveCohort(viewModel.CohortId, request); var saveStatus = viewModel.IsApprovedByEmployer && string.IsNullOrEmpty(viewModel.TransferSenderHashedId) ? SaveStatus.Approve : SaveStatus.ApproveAndSend; return(RedirectToAction(nameof(Acknowledgement), new { viewModel.CohortReference, viewModel.ProviderId, SaveStatus = saveStatus })); } case CohortDetailsOptions.ApprenticeRequest: { return(RedirectToAction("Review", new { viewModel.ProviderId })); } default: throw new ArgumentOutOfRangeException(nameof(viewModel.Selection)); } }