Ejemplo n.º 1
0
        public void it_creates_and_updates_a_new_director_if_one_does_not_exist()
        {
            const int    licenceId    = 1;
            const int    paId         = 2;
            const int    dopId        = 3;
            const string expectedName = "Name";
            var          licence      = new Licence
            {
                Id = licenceId,
                DirectorOrPartners = new List <DirectorOrPartner>()
            };
            var model = new FullNameViewModel {
                FullName = expectedName
            };

            licenceRepository.GetById(licenceId).Returns(licence);
            repository.GetById <PrincipalAuthority>(paId).Returns(new PrincipalAuthority {
                Id = paId
            });
            repository.Create <DirectorOrPartner>().Returns(new DirectorOrPartner {
                Id = dopId
            });
            repository.Upsert(Arg.Any <DirectorOrPartner>()).Returns(dopId);

            var pdh    = new LicenceApplicationPostDataHandler(mapper, repository, licenceRepository, statusRepository, dateTimeProvider);
            var result = pdh.UpsertDirectorOrPartnerAndLinkToPrincipalAuthority(licenceId, paId, dopId, model);

            Assert.AreEqual(dopId, result);
            repository.Received(1).Upsert(Arg.Is <DirectorOrPartner>(p => p.FullName.Equals(expectedName) && p.PrincipalAuthority.Id == paId && p.Licence.Id == licenceId));
            repository.Received(1).Create <DirectorOrPartner>();
            repository.Received(1).GetById <PrincipalAuthority>(paId);
        }
        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));
        }