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); }
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); }