private IActionResult OfferCompaniesHouseAnswerAction(ChangeOrganisationSicCodesViewModel viewModel, Organisation organisation)
        {
            viewModel.ParseAndValidateParameters(Request, m => m.AcceptCompaniesHouseSicCodes);

            if (viewModel.HasAnyErrors())
            {
                PopulateViewModelFromCompaniesHouseSicCodes(viewModel, viewModel.SicCodeIdsFromCoHo, organisation);
                return(View("OfferNewCompaniesHouseSicCodes", viewModel));
            }

            if (viewModel.AcceptCompaniesHouseSicCodes == AcceptCompaniesHouseSicCodes.Reject)
            {
                return(SendToManualChangePage(organisation));
            }

            PopulateViewModelWithSicCodeData(viewModel, organisation);
            viewModel.ConfirmationType = ChangeOrganisationSicCodesConfirmationType.CoHo;
            return(View("ConfirmSicCodeChanges", viewModel));
        }
        private IActionResult ConfirmChangesAction(ChangeOrganisationSicCodesViewModel viewModel, Organisation organisation)
        {
            viewModel.ParseAndValidateParameters(Request, m => m.Reason);

            if (viewModel.HasAnyErrors())
            {
                PopulateViewModelWithSicCodeData(viewModel, organisation);
                viewModel.ConfirmationType = ChangeOrganisationSicCodesConfirmationType.Manual;
                return(View("ConfirmSicCodeChanges", viewModel));
            }

            if (viewModel.Action == ManuallyChangeOrganisationSicCodesActions.ConfirmManual)
            {
                OptOrganisationOutOfCompaniesHouseUpdates(organisation);
            }

            SaveChangesAndAuditAction(viewModel, organisation);

            return(View("SuccessfullyChangedOrganisationSicCodes", organisation));
        }
        private IActionResult AddNewSicCode(ChangeOrganisationSicCodesViewModel viewModel, Organisation organisation)
        {
            viewModel.ParseAndValidateParameters(Request, m => m.SicCodeIdToChange);

            if (viewModel.HasAnyErrors())
            {
                PopulateViewModelWithSicCodeData(viewModel, organisation);
                return(View("ManuallyChangeOrganisationSicCodes", viewModel));
            }

            SicCode newSicCode = dataRepository.Get <SicCode>(viewModel.SicCodeIdToChange.Value);

            if (newSicCode == null)
            {
                viewModel.AddErrorFor(
                    m => m.SicCodeIdToChange,
                    "This SIC code is not valid (it is not in our database of SIC codes)");
            }

            if (viewModel.HasAnyErrors())
            {
                PopulateViewModelWithSicCodeData(viewModel, organisation);
                return(View("ManuallyChangeOrganisationSicCodes", viewModel));
            }

            if (viewModel.SicCodeIdsToAdd == null)
            {
                viewModel.SicCodeIdsToAdd = new List <int>();
            }

            viewModel.SicCodeIdsToAdd.Add(newSicCode.SicCodeId);
            viewModel.SicCodeIdToChange = null;

            PopulateViewModelWithSicCodeData(viewModel, organisation);
            return(View("ManuallyChangeOrganisationSicCodes", viewModel));
        }