Esempio n. 1
0
 private void Validate(ContinueOpportunityViewModel viewModel)
 {
     if (!viewModel.IsReferralSelected)
     {
         ModelState.AddModelError("ReferralItems[0].IsSelected", "You must select an opportunity to continue");
     }
 }
Esempio n. 2
0
        public async Task <IActionResult> SaveSelectedOpportunitiesAsync(ContinueOpportunityViewModel viewModel)
        {
            if (viewModel.SubmitAction == "SaveSelectedOpportunities")
            {
                Validate(viewModel);
                if (!ModelState.IsValid)
                {
                    var opportunityBasketViewModel = await _opportunityService.GetOpportunityBasketAsync(viewModel.OpportunityId);

                    return(View("OpportunityBasket", opportunityBasketViewModel));
                }
            }

            await _opportunityService.ContinueWithOpportunitiesAsync(viewModel);

            return(viewModel.SubmitAction == "CompleteProvisionGaps" ?
                   RedirectToRoute("Start") :
                   RedirectToRoute("GetEmployerConsent", new { viewModel.OpportunityId, viewModel.OpportunityItemId }));
        }
        public async Task ContinueWithOpportunitiesAsync(ContinueOpportunityViewModel viewModel)
        {
            var allProvisionGaps =
                viewModel.SelectedOpportunity.All(oi => oi.OpportunityType == OpportunityType.ProvisionGap.ToString());

            if (allProvisionGaps)
            {
                var ids = viewModel.SelectedOpportunity.Select(oi => oi.Id);

                await SetOpportunityItemsAsCompletedAsync(ids);

                return;
            }

            var referralIds = viewModel.SelectedOpportunity.Where(oi => oi.IsSelected && oi.OpportunityType == OpportunityType.Referral.ToString())
                              .Select(oi => oi.Id).ToList();

            if (referralIds.Any())
            {
                await SetOpportunityItemsAsReferralAsync(referralIds);
            }
        }
        public When_OpportunityService_Is_Called_To_Continue_Basket_ProvisionGapOnly()
        {
            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();

            httpContextAccessor.HttpContext.Returns(new DefaultHttpContext
            {
                User = new ClaimsPrincipal(new ClaimsIdentity(new[]
                {
                    new Claim(ClaimTypes.GivenName, "TestUser")
                }))
            });

            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            dateTimeProvider.UtcNow().Returns(new DateTime(2019, 1, 1));

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(OpportunityMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <OpportunityItemIsSelectedForCompleteDto, OpportunityItem>(dateTimeProvider) :
                                         null);
            });
            var mapper = new Mapper(config);

            _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();

            var opportunityRepository           = Substitute.For <IOpportunityRepository>();
            var provisionGapRepository          = Substitute.For <IRepository <ProvisionGap> >();
            var referralRepository              = Substitute.For <IRepository <Domain.Models.Referral> >();
            var googleMapApiClient              = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();

            var opportunityService = new OpportunityService(mapper, opportunityRepository, _opportunityItemRepository,
                                                            provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            var viewModel = new ContinueOpportunityViewModel
            {
                SelectedOpportunity = new List <SelectedOpportunityItemViewModel>
                {
                    new SelectedOpportunityItemViewModel
                    {
                        Id              = 1,
                        IsSelected      = true,
                        OpportunityType = OpportunityType.ProvisionGap.ToString()
                    },
                    new SelectedOpportunityItemViewModel
                    {
                        Id              = 2,
                        IsSelected      = true,
                        OpportunityType = OpportunityType.ProvisionGap.ToString()
                    }
                }
            };

            opportunityService.ContinueWithOpportunitiesAsync(viewModel).GetAwaiter().GetResult();
        }