private IActionResult FoundPostWithCompanyNumber(AddOrganisationFoundViewModel viewModel) { // IsUkAddress can be set by a hidden input (in which case it will be bound automatically) // Or it can be set by a GovUk_Radio button (in which case we need to use ParseAndValidate to get the value) // So, if the value hasn't already been bound, ParseAndValidate it if (!viewModel.IsUkAddress.HasValue) { viewModel.ParseAndValidateParameters(Request, m => m.IsUkAddress); } // If IsUkAddress still doesn't has a value on, then show an error if (!viewModel.IsUkAddress.HasValue) { PopulateViewModelBasedOnCompanyNumber(viewModel); return(View("Found", viewModel)); } Organisation existingOrganisation = dataRepository.GetAll <Organisation>() .Where(o => o.CompanyNumber == viewModel.CompanyNumber) .Where(o => o.Status == OrganisationStatuses.Active) // Only redirect the user to an Active organisation (i.e. don't do this for Retired or Deleted organisations) .FirstOrDefault(); // We expect an ID for organisations that are in our database // We expect a Company Number for organisations that are not in our database (but are in the Companies House API) // If we've been given a Company Number, but the organisation IS in our database, // then redirect to this same page, but using the correct ID if (existingOrganisation != null) { return(RedirectToAction( "FoundGet", "AddOrganisationFound", new { id = existingOrganisation.GetEncryptedId(), query = viewModel.Query, sector = viewModel.Sector })); } User user = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); Organisation organisation = organisationService.ImportOrganisationFromCompaniesHouse(viewModel.CompanyNumber, user); organisationService.UpdateIsUkAddressIfItIsNotAlreadySet(organisation.OrganisationId, viewModel.GetIsUkAddressAsBoolean()); UserOrganisation userOrganisation = registrationRepository.CreateRegistration(organisation, user, Url); return(RedirectToConfirmationPage(userOrganisation)); }
private IActionResult FoundPostWithId(AddOrganisationFoundViewModel viewModel) { Organisation organisation = dataRepository.Get <Organisation>(viewModel.DeObfuscatedId); // IsUkAddress can be set by a hidden input (in which case it will be bound automatically) // Or it can be set by a GovUk_Radio button (in which case we need to use ParseAndValidate to get the value) // So, if the value hasn't already been bound, ParseAndValidate it if (!viewModel.IsUkAddress.HasValue) { viewModel.ParseAndValidateParameters(Request, m => m.IsUkAddress); } // If IsUkAddress still doesn't has a value on, then show an error if (!viewModel.IsUkAddress.HasValue) { PopulateViewModelBasedOnOrganisation(viewModel, organisation); return(View("Found", viewModel)); } organisationService.UpdateIsUkAddressIfItIsNotAlreadySet(organisation.OrganisationId, viewModel.GetIsUkAddressAsBoolean()); User user = ControllerHelper.GetGpgUserFromAspNetUser(User, dataRepository); UserOrganisation existingUserOrganisation = organisation.UserOrganisations .Where(uo => uo.UserId == user.UserId) .FirstOrDefault(); if (existingUserOrganisation != null) { AddOrganisationAlreadyRegisteringViewModel alreadyRegisteringViewModel = CreateAlreadyRegisteringViewModel(viewModel, existingUserOrganisation); return(View("AlreadyRegistering", alreadyRegisteringViewModel)); } UserOrganisation userOrganisation = registrationRepository.CreateRegistration(organisation, user, Url); return(RedirectToConfirmationPage(userOrganisation)); }