コード例 #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();
        }
コード例 #2
0
        public When_OpportunityService_Is_Called_To_Delete_UnSaved_Opportunity()
        {
            var mapper = new Mapper(Substitute.For <IConfigurationProvider>());

            _opportunityRepository     = Substitute.For <IOpportunityRepository>();
            _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();
            _provisionGapRepository    = Substitute.For <IRepository <ProvisionGap> >();
            _referralRepository        = Substitute.For <IRepository <Domain.Models.Referral> >();

            _opportunityItemRepository
            .GetManyAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >())
            .Returns(SetOpportunityItem().AsQueryable());

            _referralRepository
            .GetManyAsync(Arg.Any <Expression <Func <Domain.Models.Referral, bool> > >())
            .Returns(SetReferrals().AsQueryable());

            _provisionGapRepository
            .GetManyAsync(Arg.Any <Expression <Func <ProvisionGap, bool> > >())
            .Returns(SetProvisionGaps().AsQueryable());

            var googleMapApiClient = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();
            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            var opportunityService = new OpportunityService(mapper, _opportunityRepository, _opportunityItemRepository,
                                                            _provisionGapRepository, _referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            opportunityService.DeleteOpportunityItemAsync(OpportunityId, OpportunityItemId).GetAwaiter().GetResult();
        }
コード例 #3
0
        public JsonResult CreateOpportunity(Opportunity opportunity)
        {
            //var newOpportunityId = OpportunityService.CreateOpporutnity(GetService(), opportunity);
            var newOpportunityId = OpportunityService.CreateOpporutnity(GetHttpClient(), opportunity);

            return(Json(newOpportunityId, JsonRequestBehavior.AllowGet));
        }
        public When_OpportunityService_Is_Called_To_Delete_Referral()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            var opportunityRepository     = Substitute.For <IOpportunityRepository>();
            var opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();
            var provisionGapRepository    = Substitute.For <IRepository <ProvisionGap> >();

            _referralRepository = Substitute.For <IRepository <Domain.Models.Referral> >();

            _referralRepository.GetFirstOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Referral, bool> > >())
            .Returns(new Domain.Models.Referral
            {
                Id = ReferralId,
                OpportunityItemId = OpportunityItemId
            });

            var googleMapApiClient = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();
            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            var opportunityService = new OpportunityService(mapper, opportunityRepository, opportunityItemRepository,
                                                            provisionGapRepository, _referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            opportunityService.DeleteReferralAsync(ReferralId).GetAwaiter().GetResult();
        }
コード例 #5
0
        public JsonResult GetOpportunitiesProductsByCustomerIdByInspectionId(Guid opportunityId)
        {
            var opportunities =
                OpportunityService.QueryOpportunityProductsByOpportunityId(GetHttpClient(), opportunityId);

            return(Json(opportunities, JsonRequestBehavior.AllowGet));
        }
コード例 #6
0
        public When_OpportunityService_Is_Called_To_Save_EmployerDetail()
        {
            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>();

            _opportunityRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Opportunity, bool> > >()).Returns(new Domain.Models.Opportunity {
                Id = OpportunityId
            });

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

            var dto = new EmployerDetailDto
            {
                OpportunityId  = OpportunityId,
                PrimaryContact = Contact,
                Email          = ContactEmail,
                Phone          = ContactPhone,
                ModifiedBy     = ModifiedBy
            };

            opportunityService.UpdateOpportunityAsync(dto).GetAwaiter().GetResult();
        }
コード例 #7
0
        public async void TestPut()
        {
            using (var client = server.CreateClient().AcceptJson())
            {
                var service = new OpportunityService();
                var item    = service.GetAll().FirstOrDefault();

                if (item == null)
                {
                    this.TestPost();
                    item = service.GetAll().FirstOrDefault();
                }

                var    itemId = item.Id;
                string unique = (Guid.NewGuid()).ToString();

                item.Name = unique;

                var response = await client.PutAsJsonAsync(string.Format("/api/Opportunitys/{0}", itemId), item);

                var result = await response.Content.ReadAsJsonAsync <Opportunity>();

                item = service.GetById(itemId);

                Assert.True(item.Name.Equals(unique, StringComparison.OrdinalIgnoreCase));
                Assert.Equal((int)response.StatusCode, 200);
            }
        }
コード例 #8
0
        public async void TestPost()
        {
            using (var client = server.CreateClient().AcceptJson())
            {
                var step        = 1;
                var service     = new OpportunityService();
                var countBefore = service.GetAll().Count();
                var item        = service.GetAll().FirstOrDefault();
                if (item == null)
                {
                    var newItem = new Opportunity()
                    {
                        Id   = 0,
                        Name = string.Format("Opportunity {0}", countBefore)
                    };

                    service.Add(item);
                    item = service.GetAll().FirstOrDefault();

                    step = 2;
                }

                var response = await client.PostAsJsonAsync("/api/Opportunitys", item);

                var result = await response.Content.ReadAsJsonAsync <Opportunity>();

                var countAfter = service.GetAll().Count();

                Assert.Equal(countBefore, countAfter - step);
                Assert.Equal((int)response.StatusCode, 201);
            }
        }
コード例 #9
0
        public JsonResult CreateOpportunityProduct(OpportunityProduct opportunityProduct)
        {
            var newOpportunityProductId =
                OpportunityService.CreateOpportunityProduct(GetHttpClient(), opportunityProduct);

            return(Json(newOpportunityProductId, JsonRequestBehavior.AllowGet));
        }
コード例 #10
0
        /// <summary>
        /// Create an opportunity
        /// </summary>
        /// <param name="ownerPartyId"></param>
        /// <param name="orgExternalRef"></param>
        /// <param name="contactExternalRef"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public long?CreateOpportunity(long?ownerPartyId, long?orgExternalRef, long?contactExternalRef, string name)
        {
            IOpportunityService service = OpportunityService.GetService();
            OpportunityModel    model   = new OpportunityModel();

            model.Name = name;

            if (orgExternalRef != null)
            {
                model.TargetPartyId          = (long)orgExternalRef;
                model.TargetPartyIdSpecified = true;
            }

            model.OwnerResourcePartyId          = (long)ownerPartyId;
            model.OwnerResourcePartyIdSpecified = true;
            model.KeyContactId          = contactExternalRef;
            model.KeyContactIdSpecified = true;

            OpportunityResourceModel resourceModel = new OpportunityResourceModel();

            resourceModel.OwnerFlag           = true;
            resourceModel.OwnerFlagSpecified  = true;
            resourceModel.ResourceId          = (long)ownerPartyId;
            resourceModel.ResourceIdSpecified = true;

            model.OpportunityResourceModel = resourceModel;

            OpportunityModel result = service.CreateOpportunity(model);

            if (result != null && result.OpportunityId != null)
            {
                return(result.OpportunityId);
            }
            return(null);
        }
        public When_OpportunityService_Is_Called_To_Save_PlacementInformation_With_Empty_Job_Title()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            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 dateTimeProvider = Substitute.For <IDateTimeProvider>();

            var opportunityItem = new OpportunityItem {
                Id = OpportunityItemId, Postcode = Postcode, SearchRadius = Distance, RouteId = RouteId
            };

            _opportunityItemRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >()).Returns(opportunityItem);

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

            var dto = new PlacementInformationSaveDto
            {
                OpportunityItemId = OpportunityItemId,
                JobRole           = JobRole,
                PlacementsKnown   = PlacementsKnown,
                Placements        = Placements
            };

            opportunityService.UpdateOpportunityItemAsync(dto).GetAwaiter().GetResult();
        }
        public async Task Then_Reasons_Should_Have_Only_Related_To_No_Suitable_Students(
            MatchingDbContext dbContext,
            OpportunityItem opportunityItem,
            IMapper mapper,
            [Frozen] ILogger <OpportunityRepository> logger,
            [Frozen] IRepository <OpportunityItem> opportunityItemRepository,
            [Frozen] IRepository <ProvisionGap> provisionGapRepository,
            [Frozen] IRepository <Domain.Models.Referral> referralRepository,
            [Frozen] IGoogleMapApiClient googleMapApiClient,
            [Frozen] IFileWriter <OpportunityReportDto> opportunityPipelineReportWriter,
            [Frozen] IDateTimeProvider dateTimeProvider
            )
        {
            await SetProvisionGapData(dbContext, opportunityItem, false, true, false);

            var opportunityRepository = new OpportunityRepository(logger, dbContext);

            var sut = new OpportunityService(mapper, opportunityRepository, opportunityItemRepository,
                                             provisionGapRepository, referralRepository, googleMapApiClient,
                                             opportunityPipelineReportWriter, dateTimeProvider);

            var result = await sut.GetOpportunityBasketAsync(opportunityItem.OpportunityId);

            result.ProvisionGapItems.Should().Contain(model => model.OpportunityType == "ProvisionGap").Which.Reason
            .Should().Contain("Providers do not have students doing the right course");

            result.ProvisionGapItems.Should().Contain(model => model.OpportunityType == "ProvisionGap").Which.Reason
            .Should().NotContain("Employer had a bad experience with them");
        }
        public When_OpportunityService_Is_Called_To_Get_Opportunity_Spreadsheet_Data()
        {
            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>();

            _opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();

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

            dateTimeProvider.UtcNow().Returns(new DateTime(2019, 03, 10));

            _opportunityRepository.GetPipelineOpportunitiesAsync(Arg.Any <int>())
            .Returns(new OpportunityReportDtoBuilder()
                     .AddReferralItem()
                     .AddProvisionGapItem()
                     .Build());

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

            _result = opportunityService.GetOpportunitySpreadsheetDataAsync(1)
                      .GetAwaiter().GetResult();
        }
コード例 #14
0
        public async Task Then_Do_Not_Delete_Opportunity(
            [Frozen] IOpportunityRepository opportunityRepo,
            [Frozen] IRepository <OpportunityItem> opportunityItemRepo,
            [Frozen] IRepository <Domain.Models.Referral> referralRepo,
            [Frozen] IRepository <ProvisionGap> provisionGapRepo,
            OpportunityItem opportunityItem,
            OpportunityService sut)
        {
            //Arrange
            opportunityItem.IsSaved = true;

            opportunityItemRepo.GetManyAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >()).Returns(new List <OpportunityItem>
            {
                opportunityItem
            }.AsQueryable());

            referralRepo.GetManyAsync(Arg.Any <Expression <Func <Domain.Models.Referral, bool> > >()).Returns(opportunityItem.Referral.AsQueryable());
            provisionGapRepo.GetManyAsync(Arg.Any <Expression <Func <ProvisionGap, bool> > >()).Returns(opportunityItem.ProvisionGap.AsQueryable());

            //Act
            await sut.DeleteOpportunityItemAsync(opportunityItem.OpportunityId, opportunityItem.OpportunityId);

            //Assert
            await opportunityRepo.DidNotReceive().DeleteAsync(Arg.Any <int>());
        }
        public When_OpportunityService_Is_Called_To_Get_Placement_Information_With_Provision_Gap()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            var opportunityRepository = Substitute.For <IOpportunityRepository>();

            _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 dto = new OpportunityItemBuilder()
                      .AddProvisionGap()
                      .AddEmployer()
                      .Build();

            _opportunityItemRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >(),
                                                               Arg.Any <Expression <Func <OpportunityItem, object> > >())
            .Returns(dto);

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

            _result = opportunityService.GetPlacementInformationAsync(1)
                      .GetAwaiter().GetResult();
        }
コード例 #16
0
        public void GetOpportunityByName_Ok()
        {
            var jsonOpportunity = @"
                    {
                        'OpportunityId': '1',
                        'OpportunityName': 'Squad Care',
                        'OpportunityRequirements': '.NET Core',
                        'DesirableRequirements': 'Conhecimento em Kafka',
                        'DateRegister': '2021-05-05T00:00:00',
                        'ClosingDate': '2021-05-05T00:00:00',
                        'CancellationDate': '2021-05-05T00:00:00',
                        'OpportunityStatus': false,
                        'CareerId': '1',
                        'ServiceId': '1',
                        'ProfessionalLevelId': '1',
                        'OpportunityTypeId': '1',
                    }";

            var opportunity = JsonConvert.DeserializeObject <Opportunity>(jsonOpportunity);

            var opportunityName = "Squad Care";

            _opportunityRepositoryMock.Setup(x => x.GetOpportunityByName(opportunityName)).Returns(opportunity);

            var service = new OpportunityService(_opportunityRepositoryMock.Object);

            var result = service.GetOpportunityByName(opportunityName);

            Assert.IsNotNull(result);
        }
コード例 #17
0
        public void InsertOpportunity_Ok()
        {
            var jsonOpportunity = @"{
                'opportunityId': 1,
                'opportunityName': 'Squad Care alterado',
                'opportunityRequirements': '.NET Core',
                'desirableRequirements': 'Conhecimento em Kafka',
                'dateRegister': '2021-05-05T00:00:00',
                'closingDate': '2021-05-05T00:00:00',
                'cancellationDate': '2021-05-05T00:00:00',
                'opportunityStatus': false,
                'career': {
                    'careerId': 1
                },
                'service': {
                    'serviceId': 1
                },
                'professionalLevel': {
                    'professionalLevelId': 1
                },
                'opportunityType': {
                    'opportunityTypeId': 1
                }
                }";

            var opportunity = JsonConvert.DeserializeObject <Opportunity>(jsonOpportunity);

            var service = new OpportunityService(_opportunityRepositoryMock.Object);

            service.InsertOpportunity(opportunity);

            Assert.IsTrue(true);
        }
        public When_OpportunityService_Is_Called_To_Get_Company_Name_With_Aka_And_Employer_Is_Null()
        {
            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 opportunity = new Domain.Models.Opportunity
            {
                Id       = 1,
                Employer = null
            };

            _opportunityRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Opportunity, bool> > >(),
                                                           Arg.Any <Expression <Func <Domain.Models.Opportunity, object> > >())
            .Returns(opportunity);

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

            _result = opportunityService.GetCompanyNameWithAkaAsync(1).GetAwaiter().GetResult();
        }
コード例 #19
0
        public When_OpportunityService_Is_Called_To_Update_Opportunity_Item()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(OpportunityMapper).Assembly));
            var mapper = new Mapper(config);

            var opportunityRepository = Substitute.For <IOpportunityRepository>();

            _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>();

            _opportunityItemRepository
            .GetSingleOrDefaultAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >())
            .Returns(new OpportunityItemBuilder().Build());

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

            var dto = new ProviderSearchDto
            {
                OpportunityId     = OpportunityId,
                OpportunityItemId = OpportunityItemId,
                RouteId           = 1,
                SearchRadius      = 10,
                Postcode          = "OX1 1AA"
            };

            opportunityService.UpdateOpportunityItemAsync(dto).GetAwaiter().GetResult();
        }
コード例 #20
0
        public void GetAllOpportunities_Ok()
        {
            var jsonDataTable = @"[
                    {
                        'OpportunityId': '1',
                        'OpportunityName': 'Squad Care',
                        'OpportunityRequirements': '.NET Core',
                        'DesirableRequirements': 'Conhecimento em Kafka',
                        'DateRegister': '2021-05-05T00:00:00',
                        'ClosingDate': '2021-05-05T00:00:00',
                        'CancellationDate': '2021-05-05T00:00:00',
                        'OpportunityStatus': true,
                        'CareerId': '1',
                        'ServiceId': '1',
                        'ProfessionalLevelId': '1',
                        'OpportunityTypeId': '1',
                    }
                ]";

            var listOpporunities = JsonConvert.DeserializeObject <List <Opportunity> >(jsonDataTable);

            _opportunityRepositoryMock.Setup(x => x.GetAllOpportunities()).Returns(listOpporunities);

            var service = new OpportunityService(_opportunityRepositoryMock.Object);

            var result = service.GetAllOpportunities();

            Assert.IsNotNull(result);
        }
コード例 #21
0
        public JsonResult GetOpportunity(Guid opportunityId)
        {
            var opportunity =
                OpportunityService.QueryOpportunity(GetHttpClient(), opportunityId);

            return(Json(opportunity, JsonRequestBehavior.AllowGet));
        }
コード例 #22
0
        public JsonResult ApplyDiscount(Opportunity opportunity, Guid voucherId)
        {
            var httpClient = GetHttpClient();
            var success    = OpportunityService.UpdateOpportunity(httpClient, opportunity);

            VoucherService.SetVoucherState(GetService(), voucherId);
            return(Json(success, JsonRequestBehavior.AllowGet));
        }
コード例 #23
0
        public When_OpportunityService_Is_Called_To_Update_Referrals()
        {
            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();

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

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(OpportunityMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <ReferralDto, Domain.Models.Referral>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <ReferralDto, Domain.Models.Referral>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <ReferralDto, Domain.Models.Referral>(new DateTimeProvider()) :
                                         null);
            });

            var mapper = new Mapper(config);

            var opportunityRepository           = Substitute.For <IOpportunityRepository>();
            var opportunityItemRepository       = Substitute.For <IRepository <OpportunityItem> >();
            var provisionGapRepository          = Substitute.For <IRepository <ProvisionGap> >();
            var googleMapApiClient              = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();
            var dateTimeProvider = Substitute.For <IDateTimeProvider>();

            _referralRepository = Substitute.For <IRepository <Domain.Models.Referral> >();

            var opportunityService = new OpportunityService(mapper, opportunityRepository, opportunityItemRepository,
                                                            provisionGapRepository, _referralRepository, googleMapApiClient,
                                                            opportunityPipelineReportWriter, dateTimeProvider);

            var dto = new OpportunityItemDto
            {
                Referral = new List <ReferralDto>
                {
                    new ReferralDto
                    {
                        ProviderVenueId      = 1,
                        DistanceFromEmployer = 3.5M
                    }
                }
            };

            opportunityService.UpdateReferralsAsync(dto).GetAwaiter().GetResult();
        }
コード例 #24
0
        public CreateOpportunityDialog(StateAccessors accessors, ILoggerFactory loggerFactory,
                                       BotServices botServices, IServiceProvider serviceProvider) : base(nameof(CreateOpportunityDialog))
        {
            _accessors       = accessors;
            _loggerFactory   = loggerFactory;
            _botServices     = botServices;
            _serviceProvider = serviceProvider;

            _leadService        = (LeadService)_serviceProvider.GetService(typeof(LeadService));
            _opportunityService = (OpportunityService)_serviceProvider.GetService(typeof(OpportunityService));
            _productService     = (ProductService)_serviceProvider.GetService(typeof(ProductService));

            var waterfallSteps = new WaterfallStep[]
            {
                //Start of dialog
                InitializeStateStepAsync,
                //Searching for lead
                AskForLeadFullNameStepAsync,
                SearchLeadStepAsync,
                LeadResultHandlerStepAsync,
                //Searching for product
                AskForProductNameStepAsync,
                SearchProductStepAsync,
                ProductResultHandlerStepAsync,
                //Checking the closing date
                AskForClosingDateStepAsync,
                SearchClosingDateStepAsync,
                ClosingDateResultHandlerStepAsync,
                //Checking for comment
                AskIfUserWantsToCommentStepAsync,
                AskToCommentStepAsync,
                FetchingCommentFromUserStepAsync,
                //End of Dialog
                EndSearchDialogStepAsync
            };

            var culture = CulturedBot.Culture?.Name;

            AddDialog(new WaterfallDialog(_createOpportunityDataWaterfall, waterfallSteps));
            //Searching for lead
            AddDialog(new TextPrompt(_leadFullNamePrompt));
            AddDialog(new TextPrompt(_retryFetchingLeadFromUserPrompt /*, defaultLocale: culture*/));
            //Searching for product
            AddDialog(new TextPrompt(_productNamePrompt));
            AddDialog(new TextPrompt(_retryFetchingProductFromUserPrompt /*, defaultLocale: culture*/));
            //Checking the closing date
            AddDialog(new TextPrompt(_closingDatePrompt));
            AddDialog(new TextPrompt(_retryFetchingClosingDateFromUserPrompt /*, defaultLocale: culture*/));
            //Checking for comment
            AddDialog(new TextPrompt(_commentPrompt /*, defaultLocale: culture*/));
            AddDialog(new TextPrompt(_fetchingCommentFromUserPrompt));
        }
コード例 #25
0
        public When_OpportunityService_Is_Called_To_Create_Opportunity()
        {
            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();

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

            var config = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(OpportunityMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <OpportunityDto, Domain.Models.Opportunity>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <OpportunityDto, Domain.Models.Opportunity>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <OpportunityDto, Domain.Models.Opportunity>(new DateTimeProvider()) :
                                         null);
            });
            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>();

            _opportunityRepository.CreateAsync(Arg.Any <Domain.Models.Opportunity>())
            .Returns(OpportunityId);

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

            var dto = new OpportunityDto
            {
                EmployerCrmId  = new Guid("11111111-1111-1111-1111-111111111111"),
                PrimaryContact = "Employer contact",
                Email          = "*****@*****.**",
                Phone          = "020 123 4567"
            };

            _result = opportunityService.CreateOpportunityAsync(dto).GetAwaiter().GetResult();
        }
コード例 #26
0
        public void DeleteOpportunity_Ok()
        {
            var jsonOpportunity = @"{      
                'OpportunityId': 0
                }";

            var opportunity = JsonConvert.DeserializeObject <Opportunity>(jsonOpportunity);

            var service = new OpportunityService(_opportunityRepositoryMock.Object);

            service.DeleteOpportunity(opportunity);

            Assert.IsTrue(true);
        }
コード例 #27
0
        public async void TestGetAll()
        {
            using (var client = server.CreateClient().AcceptJson())
            {
                var response = await client.GetAsync("/api/Opportunitys");

                var result = await response.Content.ReadAsJsonAsync <List <Opportunity> >();

                var service = new OpportunityService();
                var count   = service.GetAll().Count();

                Assert.Equal(result.Count, count);
            }
        }
コード例 #28
0
        public async void TestGetById()
        {
            using (var client = server.CreateClient().AcceptJson())
            {
                var service = new OpportunityService();
                var maxId   = service.GetAll().Max(i => i.Id);

                var response = await client.GetAsync(string.Format("/api/Opportunitys/{0}", maxId));

                var result = await response.Content.ReadAsJsonAsync <Opportunity>();

                Assert.Equal(result.Id, maxId);
                Assert.Equal((int)response.StatusCode, 200);
            }
        }
コード例 #29
0
        public async Task <ActionResult <Contact_OpportunityDTO> > GetOpportunity([FromBody] Contact_OpportunityDTO Contact_OpportunityDTO)
        {
            if (UnAuthorization)
            {
                return(Forbid());
            }
            if (!ModelState.IsValid)
            {
                throw new BindException(ModelState);
            }

            Opportunity Opportunity = await OpportunityService.Get(Contact_OpportunityDTO.Id);

            return(new Contact_OpportunityDTO(Opportunity));
        }
        public When_OpportunityService_Is_Called_To_Clear_Opportunity_Items_Selected_For_Referral()
        {
            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 <OpportunityItemIsSelectedForReferralDto, OpportunityItem>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <OpportunityItemIsSelectedForReferralDto, OpportunityItem>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <OpportunityItemIsSelectedForReferralDto, OpportunityItem>(dateTimeProvider) :
                                         null);
            });
            var mapper = new Mapper(config);

            var opportunityRepository  = Substitute.For <IOpportunityRepository>();
            var provisionGapRepository = Substitute.For <IRepository <ProvisionGap> >();
            var referralRepository     = Substitute.For <IRepository <Domain.Models.Referral> >();

            _opportunityItemRepository = Substitute.For <IRepository <OpportunityItem> >();
            _opportunityItemRepository
            .GetManyAsync(Arg.Any <Expression <Func <OpportunityItem, bool> > >())
            .Returns(new OpportunityItemListBuilder().Build().AsQueryable());

            var googleMapApiClient = Substitute.For <IGoogleMapApiClient>();
            var opportunityPipelineReportWriter = Substitute.For <IFileWriter <OpportunityReportDto> >();

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

            opportunityService.ClearOpportunityItemsSelectedForReferralAsync(OpportunityId).GetAwaiter().GetResult();
        }