public async Task <ProviderSearchConfirmationViewModel> GetTrainingProviderConfirmationViewModel(string encodedAccountId, long providerId) { var response = await _commitmentService.GetProvider(providerId); if (null == response) { return(null); } var model = new ProviderSearchConfirmationViewModel(); model.ProviderId = response.ProviderId; model.ProviderName = response.Name; return(model); }
public async Task <IActionResult> ProviderConfirmed(ProviderSearchConfirmationViewModel postedModel) { if (!postedModel.Confirmed.HasValue) { ModelState.AddModelError("Confirmation", "Please choose an option"); return(View("ConfirmProvider", postedModel)); } if (!postedModel.Confirmed.Value) { return(RedirectToAction("Index")); } var providerAttributes = await _employerEmailDetailsRepository.GetAllAttributes(); if (providerAttributes == null) { _logger.LogError($"Unable to load Provider Attributes from the database."); return(RedirectToAction("Error", "Error")); } var providerAttributesModel = providerAttributes.Select(s => new ProviderAttributeModel { Name = s.AttributeName }).ToList(); var idClaim = HttpContext.User.FindFirst(System.Security.Claims.ClaimTypes.NameIdentifier); if (null == idClaim) { _logger.LogError($"User id not found in user claims."); return(RedirectToAction("Error", "Error")); } var newSurveyModel = new SurveyModel { AccountId = _encodingService.Decode(postedModel.EncodedAccountId, EncodingType.AccountId), Ukprn = postedModel.ProviderId, UserRef = new Guid(idClaim?.Value), Submitted = false, //employerEmailDetail.CodeBurntDate != null, ProviderName = postedModel.ProviderName, Attributes = providerAttributesModel }; await _sessionService.Set(idClaim.Value, newSurveyModel); // Make sure the user exists. var emailAddressClaim = HttpContext.User.FindFirst(CLAIMTYPE_EMAILADDRESS); var firstNameClaim = HttpContext.User.FindFirst(CLAIMTYPE_FIRSTNAME); var user = new User() { UserRef = new Guid(idClaim?.Value), EmailAddress = emailAddressClaim?.Value, FirstName = firstNameClaim?.Value, }; await _employerEmailDetailsRepository.UpsertIntoUsers(user); // Make sure the provider exists and is active. await _trainingProviderService.UpsertTrainingProvider(newSurveyModel.Ukprn, newSurveyModel.ProviderName); return(RedirectToAction("Index", "Home")); }