public async Task <IActionResult> UpdateOrganisationProviderType()
        {
            var searchModel = _sessionService.GetSearchResults();

            var model = new UpdateOrganisationProviderTypeViewModel
            {
                LegalName          = searchModel.SelectedResult.LegalName,
                OrganisationId     = searchModel.SelectedResult.Id,
                ProviderTypeId     = searchModel.SelectedResult.ProviderType.Id,
                OrganisationTypeId = searchModel.SelectedResult.OrganisationType.Id
            };

            var providerTypes = await _apiClient.GetProviderTypes();

            model.ProviderTypes = providerTypes;

            var organisationTypes = new Dictionary <int, IEnumerable <OrganisationType> >();

            foreach (var providerType in providerTypes)
            {
                var organisationTypesByProvider = await _apiClient.GetOrganisationTypes(providerType.Id);

                organisationTypes.Add(providerType.Id, organisationTypesByProvider);
            }

            model.OrganisationTypesByProviderType = organisationTypes;

            return(View("~/Views/Roatp/UpdateOrganisationProviderType.cshtml", model));
        }
        public async Task <IActionResult> UpdateProviderType(UpdateOrganisationProviderTypeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("~/Views/Roatp/UpdateOrganisationProviderType.cshtml", model));
            }

            model.UpdatedBy = HttpContext.User.UserDisplayName();

            var searchModel                = _sessionService.GetSearchResults();
            var previousProviderTypeId     = searchModel.SelectedResult.ProviderType.Id;
            var previousOrganisationTypeId = searchModel.SelectedResult.OrganisationType.Id;

            if (model.CanChangeOrganisationTypeForThisProvider(previousProviderTypeId))
            {
                switch (model.ProviderTypeId)
                {
                case 1:
                    model.OrganisationTypeId = model.OrganisationTypeIdMain;
                    break;

                case 2:
                    model.OrganisationTypeId = model.OrganisationTypeIdEmployer;
                    break;

                case 3:
                    model.OrganisationTypeId = model.OrganisationTypeIdSupporting;
                    break;
                }
            }
            else
            {
                model.OrganisationTypeId = previousOrganisationTypeId;
            }

            var request = Mapper.Map <UpdateOrganisationProviderTypeRequest>(model);
            var result  = await _apiClient.UpdateOrganisationProviderType(request);

            if (result)
            {
                return(await RefreshSearchResults());
            }

            return(View("~/Views/Roatp/UpdateOrganisationProviderType.cshtml", model));
        }