Ejemplo n.º 1
0
        public When_OpportunityService_Is_Called_To_Get_Opportunity_Basket_ReferralSingleOnly()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            _opportunityRepository = Substitute.For <IOpportunityRepository>();
            var opportunityItemRepository       = Substitute.For <IRepository <OpportunityItem> >();
            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 dateTimeProvider = Substitute.For <IDateTimeProvider>();

            var viewModel = new OpportunityBasketViewModelBuilder()
                            .AddReferralItem()
                            .Build();

            _opportunityRepository.GetOpportunityBasketAsync(1).Returns(viewModel);

            var opportunityService = new OpportunityService(mapper, _opportunityRepository, opportunityItemRepository,
                                                            provisionGapRepository, referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            _result = opportunityService.GetOpportunityBasketAsync(1)
                      .GetAwaiter().GetResult();
        }
        private static OpportunityBasketType GetOpportunityBasketType(OpportunityBasketViewModel viewModel)
        {
            if (viewModel.ReferralCount == 1 && viewModel.ProvisionGapCount == 0)
            {
                return(OpportunityBasketType.ReferralSingle);
            }
            if (viewModel.ReferralCount == 0 && viewModel.ProvisionGapCount > 0)
            {
                return(OpportunityBasketType.ProvisionGapSingle);
            }
            if (viewModel.ReferralCount > 0 && viewModel.ProvisionGapCount == 0)
            {
                return(OpportunityBasketType.ReferralMultiple);
            }
            if (viewModel.ReferralCount == 1 && viewModel.ProvisionGapCount > 0)
            {
                return(OpportunityBasketType.SingleReferralAndProvisionGap);
            }
            if (viewModel.ReferralCount > 1 && viewModel.ProvisionGapCount > 0)
            {
                return(OpportunityBasketType.MultipleReferralAndProvisionGap);
            }

            return(OpportunityBasketType.ReferralSingle);
        }
Ejemplo n.º 3
0
 public OpportunityBasketViewModelBuilder()
 {
     _viewModel = new OpportunityBasketViewModel
     {
         CompanyName       = "CompanyName",
         CompanyNameAka    = "AlsoKnownAs",
         ReferralItems     = new List <BasketReferralItemViewModel>(),
         ProvisionGapItems = new List <BasketProvisionGapItemViewModel>()
     };
 }
        public async Task <OpportunityBasketViewModel> GetOpportunityBasketAsync(int opportunityId)
        {
            var opportunityBasketItems = await GetOpportunityBasketDataAsync(opportunityId);

            var opportunity      = opportunityBasketItems.First();
            var opportunityTypes = opportunityBasketItems.GroupBy(grp => grp.OpportunityType).ToList();
            var result           = new OpportunityBasketViewModel
            {
                OpportunityId     = opportunity.OpportunityId,
                CompanyName       = opportunity.CompanyName,
                CompanyNameAka    = opportunity.CompanyNameAka,
                ProvisionGapItems = opportunityTypes.FirstOrDefault(grp => grp.Key == "ProvisionGap")
                                    ?.Select(oi => new BasketProvisionGapItemViewModel
                {
                    OpportunityItemId = oi.OpportunityItemId,
                    JobRole           = oi.JobRole,
                    Placements        = oi.Placements,
                    PlacementsKnown   = oi.PlacementsKnown,
                    Workplace         = oi.Workplace,
                    Reason            = GetReasons(oi.HadBadExperience, oi.NoSuitableStudent, oi.ProvidersTooFarAway),
                    OpportunityType   = oi.OpportunityType
                }).ToList(),
                ReferralItems = opportunityTypes.FirstOrDefault(grp => grp.Key == "Referral")
                                ?.GroupBy(oi => new
                {
                    oi.OpportunityItemId,
                    oi.JobRole,
                    oi.Workplace,
                    oi.PlacementsKnown,
                    oi.Placements,
                    oi.OpportunityType
                }).Select(grp => new BasketReferralItemViewModel
                {
                    Workplace         = grp.Key.Workplace,
                    OpportunityItemId = grp.Key.OpportunityItemId,
                    OpportunityType   = grp.Key.OpportunityType,
                    JobRole           = grp.Key.JobRole,
                    Placements        = grp.Key.Placements,
                    PlacementsKnown   = grp.Key.PlacementsKnown,
                    ProviderNames     = grp.Select(g => new ProviderNameViewModel
                    {
                        DisplayName = g.DisplayName,
                        Postcode    = g.Postcode,
                        VenueName   = g.VenueName
                    }).ToList()
                }).ToList()
            };

            return(result);
        }