示例#1
0
        public async Task <IActionResult> ChooseEmployer(ReservationsRouteModel routeModel)
        {
            if (!routeModel.UkPrn.HasValue)
            {
                throw new ArgumentException("UkPrn must be set", nameof(ReservationsRouteModel.UkPrn));
            }

            var getTrustedEmployersResponse = await _mediator.Send(new GetTrustedEmployersQuery { UkPrn = routeModel.UkPrn.Value });

            // eoi filter
            var eoiEmployers = new List <Domain.Employers.Employer>();

            foreach (var employer in getTrustedEmployersResponse.Employers)
            {
                var getLegalEntitiesResponse = await _mediator.Send(new GetLegalEntitiesQuery { AccountId = employer.AccountId });

                if (getLegalEntitiesResponse.AccountLegalEntities.All(entity =>
                                                                      !entity.IsLevy &&
                                                                      entity.AgreementType == AgreementType.NonLevyExpressionOfInterest))
                {
                    eoiEmployers.Add(employer);
                }
            }

            var viewModel = new ChooseEmployerViewModel
            {
                Employers = eoiEmployers
            };

            return(View(viewModel));
        }
        public async Task <IActionResult> ChooseEmployer(ReservationsRouteModel routeModel)
        {
            if (!routeModel.UkPrn.HasValue)
            {
                throw new ArgumentException("UkPrn must be set", nameof(ReservationsRouteModel.UkPrn));
            }

            var getTrustedEmployersResponse = await _mediator.Send(new GetTrustedEmployersQuery { UkPrn = routeModel.UkPrn.Value });


            var eoiEmployers = new List <AccountLegalEntity>();

            foreach (var employer in getTrustedEmployersResponse.Employers)
            {
                employer.AccountLegalEntityPublicHashedId = _encodingService.Encode(employer.AccountLegalEntityId,
                                                                                    EncodingType.PublicAccountLegalEntityId);
                eoiEmployers.Add(employer);
            }

            var viewModel = new ChooseEmployerViewModel
            {
                Employers = eoiEmployers
            };

            return(View(viewModel));
        }
        public void Arrange()
        {
            _permissionsResponse = new GetProviderRelationshipsWithPermissionQueryResponse
            {
                ProviderRelationships = new List <AccountProviderLegalEntityDto>()
            };

            _mediator = new Mock <IMediator>();
            _mediator.Setup(x => x.Send(It.IsAny <GetProviderRelationshipsWithPermissionQueryRequest>(),
                                        new CancellationToken()))
            .ReturnsAsync(_permissionsResponse);

            _chooseEmployerViewModel = new ChooseEmployerViewModel();
            _selectEmployerMapper    = new Mock <ISelectEmployerMapper>();
            _selectEmployerMapper.Setup(x =>
                                        x.Map(It.IsAny <IEnumerable <AccountProviderLegalEntityDto> >(), EmployerSelectionAction.CreateCohort))
            .Returns(_chooseEmployerViewModel);

            _orchestrator = new SelectEmployerOrchestrator(_mediator.Object,
                                                           _selectEmployerMapper.Object,
                                                           Mock.Of <IHashingService>(),
                                                           Mock.Of <IProviderCommitmentsLogger>());
        }
        public ChooseEmployerViewModel Map(IEnumerable <AccountProviderLegalEntityDto> source, EmployerSelectionAction action)
        {
            var result = new ChooseEmployerViewModel();

            var legalEntities = new List <LegalEntityViewModel>();

            foreach (var relationship in source)
            {
                legalEntities.Add(new LegalEntityViewModel
                {
                    EmployerAccountPublicHashedId            = relationship.AccountPublicHashedId,
                    EmployerAccountName                      = relationship.AccountName,
                    EmployerAccountLegalEntityPublicHashedId = relationship.AccountLegalEntityPublicHashedId,
                    EmployerAccountLegalEntityName           = relationship.AccountLegalEntityName
                });
            }

            result.LegalEntities           = legalEntities;
            result.EmployerSelectionAction = action;

            switch (action)
            {
            case EmployerSelectionAction.CreateCohort:
                result.ControllerName = "CreateCohort";
                result.Title          = "Create Cohort";
                result.Description    = "Choose an employer you want to create a new cohort on behalf of.";
                break;

            case EmployerSelectionAction.CreateReservation:
                result.ControllerName = "Reservation";
                result.Title          = "Reserve Funds";
                result.Description    = "Choose an employer you want to reserve funds on behalf of.";
                break;
            }

            return(result);
        }