public IActionResult SubmitApplication(LicenceApplicationViewModel model)
        {
            var licenceId = Session.GetCurrentLicenceId();

            if (!model.AgreedToTermsAndConditions)
            {
                ModelState.AddModelError("AgreedToTermsAndConditions", "You must agree to the terms and conditions in order to submit your application.");

                var dbModel = LicenceApplicationViewModelBuilder.Build(licenceId);
                model.OrganisationDetails = dbModel.OrganisationDetails;
                model.PrincipalAuthority  = dbModel.PrincipalAuthority;
                model.AlternativeBusinessRepresentatives = dbModel.AlternativeBusinessRepresentatives;
                model.DirectorOrPartner = dbModel.DirectorOrPartner;
                model.NamedIndividuals  = dbModel.NamedIndividuals;
                model.Organisation      = dbModel.Organisation;
                return(View("SubmitApplication", model));
            }

            model.NewLicenceStatus = new LicenceStatusViewModel
            {
                Id = ConstantService.ApplicationSubmittedOnlineStatusId
            };

            LicenceApplicationPostDataHandler.Update(licenceId, model);

            return(RedirectToAction("Portal"));
        }
        public void it_should_update_an_entity_in_a_collection_by_its_id()
        {
            const int    expectedId   = 1;
            const string expectedName = "Name";
            var          licence      = new Licence
            {
                Id = expectedId,
                NamedIndividuals = new List <NamedIndividual>
                {
                    new NamedIndividual
                    {
                        Id       = expectedId,
                        FullName = string.Empty
                    }
                }
            };
            var model = new FullNameViewModel
            {
                FullName = expectedName
            };

            licenceRepository.GetById(expectedId).Returns(licence);
            repository.Upsert(Arg.Any <NamedIndividual>()).Returns(expectedId);

            var pdh    = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);
            var result = pdh.Update(expectedId, l => l.NamedIndividuals, model, expectedId);

            Assert.AreEqual(expectedId, result);
            repository.Received(1).Upsert(Arg.Is <NamedIndividual>(a => a.Id == expectedId && a.FullName.Equals(expectedName)));
        }
        public void it_should_create_and_update_a_new_entity_if_one_does_not_exist_with_the_specified_id()
        {
            const int    expectedId   = 1;
            const string expectedName = "Name";
            var          licence      = new Licence
            {
                Id = expectedId,
                NamedIndividuals = new List <NamedIndividual>()
            };
            var model = new FullNameViewModel
            {
                FullName = expectedName
            };

            licenceRepository.GetById(expectedId).Returns(licence);
            repository.Create <NamedIndividual>().Returns(new NamedIndividual {
                Id = expectedId
            });
            repository.Upsert(Arg.Any <NamedIndividual>()).Returns(expectedId);

            var pdh    = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);
            var result = pdh.Update(expectedId, l => l.NamedIndividuals, model, expectedId);

            Assert.AreEqual(expectedId, result);
            repository.Received(1).Upsert(Arg.Is <NamedIndividual>(a => a.Id == expectedId && a.FullName.Equals(expectedName)));
        }
        public void it_should_create_and_update_a_new_entity_with_an_address_if_one_does_not_exist_with_the_specified_id_and_it_is_addressable()
        {
            const int    expectedId   = 1;
            const string expectedName = "Name";
            var          licence      = new Licence
            {
                Id = expectedId,
                DirectorOrPartners = new List <DirectorOrPartner>()
            };
            var model = new FullNameViewModel
            {
                FullName = expectedName
            };

            licenceRepository.GetById(expectedId).Returns(licence);
            repository.Create <DirectorOrPartner>().Returns(new DirectorOrPartner {
                Id = expectedId
            });
            repository.Create <Address>().Returns(new Address {
                Id = expectedId
            });
            repository.Upsert(Arg.Any <DirectorOrPartner>()).Returns(expectedId);

            var pdh    = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);
            var result = pdh.Update(expectedId, l => l.DirectorOrPartners, model, expectedId);

            Assert.AreEqual(expectedId, result);
            repository.Received(1).Create <Address>();
            repository.Received(1).Upsert(Arg.Is <DirectorOrPartner>(a => a.Id == expectedId && a.FullName.Equals(expectedName) && a.Address.Id == expectedId));
        }
        public IActionResult SaveIsPreviousPrincipalAuthority(IsPreviousPrincipalAuthorityViewModel model)
        {
            Session.SetSubmittedPage(FormSection.DirectorOrPartner, 1);

            if (!ModelState.IsValid || !model.IsPreviousPrincipalAuthority.HasValue)
            {
                return(View(GetViewPath(FormSection.DirectorOrPartner, 1), model));
            }

            var dopId = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.DirectorOrPartners, model,
                                                                 Session.GetCurrentDopId());

            Session.SetCurrentDopStatus(dopId, model.IsPreviousPrincipalAuthority.Value);

            if (model.IsPreviousPrincipalAuthority.Value)
            {
                var paId = LicenceApplicationPostDataHandler.UpsertPrincipalAuthorityAndLinkToDirectorOrPartner(
                    Session.GetCurrentLicenceId(), dopId, Session.GetCurrentPaId(), model);
                Session.SetCurrentPaStatus(paId, true);
            }
            else
            {
                LicenceApplicationPostDataHandler.UnlinkPrincipalAuthorityFromDirectorOrPartner(Session.GetCurrentDopId());
            }

            return(CheckParentValidityAndRedirect(FormSection.DirectorOrPartner, 1));
        }
        public IActionResult AddPreviousTradingName(PreviousTradingNameViewModel model, FormSection section, int id)
        {
            if (!ModelState.IsValid)
            {
                return(RedirectToAction("AddPreviousTradingName", new { section, id }));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.PreviousTradingNames, model, model.Id);

            var lastLoaded = Session.GetLoadedPage();

            return(RedirectToAction(section, lastLoaded));
        }
        public IActionResult SaveMultipleBranch(MultipleBranchViewModel model)
        {
            Session.SetSubmittedPage(FormSection.Organisation, 5);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.Organisation, 5), model));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x, model);
            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.SelectedMultiples, model.SelectedMultiples);

            return(CheckParentValidityAndRedirect(FormSection.Organisation, 5));
        }
        public IActionResult OperatingCountries(OperatingCountriesViewModel model)
        {
            Session.SetSubmittedPage(FormSection.OrganisationDetails, nameof(OperatingCountries));

            if (!ModelState.IsValid)
            {
                return(View(nameof(OperatingCountries), model));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.OperatingCountries,
                                                     model.OperatingCountries);

            return(CheckParentValidityAndRedirect(FormSection.OrganisationDetails, nameof(OperatingCountries)));
        }
        public IActionResult SaveOutsideSectors(OutsideSectorsViewModel model)
        {
            Session.SetSubmittedPage(FormSection.Organisation, 2);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.Organisation, 2), model));
            }

            // update the non collection part
            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x, model);
            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.SelectedSectors, model.SelectedSectors);

            return(CheckParentValidityAndRedirect(FormSection.Organisation, 2));
        }
        private IActionResult OrganisationPost <T>(T model, int submittedPageId)
        {
            Session.SetSubmittedPage(FormSection.Organisation, submittedPageId);

            model = RepopulateDropdowns(model);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.Organisation, submittedPageId), model));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x, model);

            return(CheckParentValidityAndRedirect(FormSection.Organisation, submittedPageId));
        }
예제 #11
0
        public IActionResult SaveAlternativeBusinessRepresentatives(AlternativeBusinessRepresentativeCollectionViewModel model)
        {
            Session.SetSubmittedPage(FormSection.AlternativeBusinessRepresentatives, 2);

            model = RepopulateDropdowns(model);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.AlternativeBusinessRepresentatives, 2), model));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x, model);

            return(RedirectToAction(FormSection.AlternativeBusinessRepresentatives, 3));
        }
        public IActionResult SaveNamedIndividuals(NamedIndividualCollectionViewModel model)
        {
            Session.SetSubmittedPage(FormSection.NamedIndividuals, 2);

            model = RepopulateDropdowns(model);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.NamedIndividuals, 2), model));
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x, model);

            return(RedirectToAction(FormSection.NamedIndividuals, 3));
        }
        public IActionResult BusinessCredentials(BusinessCredentialsViewModel model)
        {
            Session.SetSubmittedPage(FormSection.OrganisationDetails, nameof(BusinessCredentials));

            if (!ModelState.IsValid)
            {
                return(View(nameof(BusinessCredentials), model));
            }

            var licenceId = Session.GetCurrentLicenceId();

            LicenceApplicationPostDataHandler.Update(licenceId, x => x, model);
            LicenceApplicationPostDataHandler.UpdateAll(licenceId, x => x.PAYENumbers, model.PAYEStatusViewModel.PAYENumbers);

            return(CheckParentValidityAndRedirect(FormSection.OrganisationDetails, nameof(BusinessCredentials)));
        }
예제 #14
0
        private IActionResult NamedIndividualPost <T>(T model, int submittedPageId, Func <T, bool> modelIsInvalid)
        {
            Session.SetSubmittedPage(FormSection.NamedIndividual, submittedPageId);

            model = RepopulateDropdowns(model);

            if (modelIsInvalid(model))
            {
                return(View(GetViewPath(FormSection.NamedIndividual, submittedPageId), model));
            }

            var id = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.NamedIndividuals, model, Session.GetCurrentNamedIndividualId());

            Session.SetCurrentNamedIndividualId(id);

            return(CheckParentValidityAndRedirect(FormSection.NamedIndividual, submittedPageId));
        }
        public IActionResult SaveJobTitle(NamedJobTitleViewModel model)
        {
            Session.SetSubmittedPage(FormSection.JobTitle, 1);

            model = RepopulateDropdowns(model);

            if (!ModelState.IsValid)
            {
                return(View(GetViewPath(FormSection.JobTitle, 1), model));
            }

            var id = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.NamedJobTitles, model, Session.GetCurrentNamedIndividualId());

            Session.SetCurrentNamedIndividualId(id);

            return(RedirectToAction(FormSection.JobTitle, 2));
        }
        public void it_should_not_add_a_checked_item_to_the_entity_from_the_model_if_it_is_already_present()
        {
            const int    expectedId   = 1;
            const string expectedName = "Name";
            var          licence      = new Licence
            {
                Id = expectedId,
                OperatingIndustries = new List <LicenceIndustry>
                {
                    new LicenceIndustry
                    {
                        LicenceId  = expectedId,
                        IndustryId = expectedId,
                        Industry   = new Industry
                        {
                            Id   = expectedId,
                            Name = expectedName
                        }
                    }
                }
            };
            var model = new OperatingIndustriesViewModel
            {
                OperatingIndustries = new List <CheckboxListItem>
                {
                    new CheckboxListItem {
                        Id = expectedId, Name = expectedName, Checked = true
                    }
                }
            };

            licenceRepository.GetById(expectedId).Returns(licence);
            repository.GetById <Industry>(expectedId).Returns(new Industry {
                Id = expectedId, Name = expectedName
            });

            var pdh = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);

            pdh.Update(expectedId, l => l.OperatingIndustries, model.OperatingIndustries);

            repository.Received(1).Upsert(Arg.Is <Licence>(l =>
                                                           l.OperatingIndustries.Single().Id == expectedId &&
                                                           l.OperatingIndustries.Single().IndustryId == expectedId &&
                                                           l.OperatingIndustries.Single().Industry.Name.Equals(expectedName)));
        }
        public IActionResult BusinessName(BusinessNameViewModel model)
        {
            Session.SetSubmittedPage(FormSection.OrganisationDetails, nameof(BusinessName));

            model.Validate();

            if (!model.IsValid)
            {
                return(View(nameof(BusinessName), model));
            }

            var licenceId = Session.GetCurrentLicenceId();

            LicenceApplicationPostDataHandler.Update(licenceId, x => x, model);
            LicenceApplicationPostDataHandler.UpdateAll(licenceId, x => x.PreviousTradingNames, model.PreviousTradingNames);

            return(CheckParentValidityAndRedirect(FormSection.OrganisationDetails, nameof(BusinessName)));
        }
        public void it_should_update_the_licence_field_from_the_model()
        {
            const int    expectedId   = 1;
            const string expectedName = "Name";
            var          licence      = new Licence {
                Id = expectedId, BusinessName = string.Empty
            };
            var model = new BusinessNameViewModel {
                BusinessName = expectedName
            };

            licenceRepository.GetById(expectedId).Returns(licence);

            var pdh = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);

            pdh.Update(expectedId, l => l, model);

            repository.Received(1).Upsert(Arg.Is <Licence>(l => l.BusinessName == expectedName));
        }
        public IActionResult OperatingIndustries(OperatingIndustriesViewModel model)
        {
            Session.SetSubmittedPage(FormSection.OrganisationDetails, nameof(OperatingIndustries));

            if (!ModelState.IsValid)
            {
                return(View(nameof(OperatingIndustries), model));
            }

            var licenceId = Session.GetCurrentLicenceId();

            // TODO: This could be a mapping
            LicenceApplicationPostDataHandler.UpdateShellfishStatus(licenceId, model);

            LicenceApplicationPostDataHandler.Update(licenceId, x => x.OperatingIndustries,
                                                     model.OperatingIndustries);

            return(CheckParentValidityAndRedirect(FormSection.OrganisationDetails, nameof(OperatingIndustries)));
        }
예제 #20
0
        private IActionResult AlternativeBusinessRepresentativePost <T>(T model, int submittedPageId,
                                                                        Func <T, bool> modelIsInvalid)
        {
            Session.SetSubmittedPage(FormSection.AlternativeBusinessRepresentative, submittedPageId);

            model = RepopulateDropdowns(model);

            if (modelIsInvalid(model))
            {
                return(View(GetViewPath(FormSection.AlternativeBusinessRepresentative, submittedPageId), model));
            }

            var id = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.AlternativeBusinessRepresentatives,
                                                              model, Session.GetCurrentAbrId());

            Session.SetCurrentAbrId(id);

            return(CheckParentValidityAndRedirect(FormSection.AlternativeBusinessRepresentative, submittedPageId));
        }
        private IActionResult DirectorOrPartnerPost <T>(T model, int submittedPageId, bool doPaLinking, Func <T, bool> modelIsInvalid)
        {
            Session.SetSubmittedPage(FormSection.DirectorOrPartner, submittedPageId);

            model = RepopulateDropdowns(model);

            if (modelIsInvalid(model))
            {
                return(View(GetViewPath(FormSection.DirectorOrPartner, submittedPageId), model));
            }

            if (Session.GetCurrentDopIsPa() && doPaLinking)
            {
                LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.PrincipalAuthorities, model,
                                                         Session.GetCurrentPaId());
            }

            LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.DirectorOrPartners, model,
                                                     Session.GetCurrentDopId());

            return(CheckParentValidityAndRedirect(FormSection.DirectorOrPartner, submittedPageId));
        }
        private IActionResult OrganisationDetailsPost <T>(T model, string actionName)
        {
            Session.SetSubmittedPage(FormSection.OrganisationDetails, actionName);

            model = RepopulateDropdowns(model);

            if (!ModelState.IsValid)
            {
                return(View(actionName, model));
            }

            var licenceId = Session.GetCurrentLicenceId();

            if (model is AddressViewModel)
            {
                LicenceApplicationPostDataHandler.UpdateAddress(Session.GetCurrentLicenceId(), x => x, model as AddressViewModel);
            }
            else
            {
                LicenceApplicationPostDataHandler.Update(licenceId, x => x, model);
            }

            return(CheckParentValidityAndRedirect(FormSection.OrganisationDetails, actionName));
        }
        public IActionResult SaveIsDirector(IsDirectorViewModel model)
        {
            Session.SetSubmittedPage(FormSection.PrincipalAuthority, 2);

            if (!ModelState.IsValid || !model.IsDirector.HasValue)
            {
                return(View(GetViewPath(FormSection.PrincipalAuthority, 2), model));
            }

            var paId = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), x => x.PrincipalAuthorities,
                                                                model, Session.GetCurrentPaId());

            Session.SetCurrentPaStatus(paId, model.IsDirector.Value);

            if (model.IsDirector.Value)
            {
                var licenceModel = LicenceApplicationViewModelBuilder.Build(Session.GetCurrentLicenceId());

                var existingDirectorOrPartnerId = licenceModel.PrincipalAuthority.DirectorOrPartnerId ?? 0;

                var dopId = LicenceApplicationPostDataHandler.Update(Session.GetCurrentLicenceId(), l => l.DirectorOrPartners,
                                                                     model,
                                                                     existingDirectorOrPartnerId);

                Session.SetCurrentDopStatus(dopId, true);

                LicenceApplicationPostDataHandler.UpsertDirectorOrPartnerAndLinkToPrincipalAuthority(
                    Session.GetCurrentLicenceId(), paId, dopId, model);

                return(RedirectToAction(FormSection.PrincipalAuthority, 4));
            }

            LicenceApplicationPostDataHandler.UnlinkDirectorOrPartnerFromPrincipalAuthority(Session.GetCurrentPaId());

            return(CheckParentValidityAndRedirect(FormSection.PrincipalAuthority, 2));
        }