public When_Opportunity_Controller_Save_ProvisionGap_Update_Opportunity()
        {
            const int opportunityId = 1;

            _opportunityService = Substitute.For <IOpportunityService>();
            _opportunityService.IsNewProvisionGapAsync(opportunityId).Returns(false);

            var httpContextAccessor = Substitute.For <IHttpContextAccessor>();

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

            var opportunityController = new OpportunityController(_opportunityService, mapper);
            var controllerWithClaims  = new ClaimsBuilder <OpportunityController>(opportunityController)
                                        .AddUserName(UserName)
                                        .AddEmail(Email)
                                        .Build();

            httpContextAccessor.HttpContext.Returns(controllerWithClaims.HttpContext);

            _result = controllerWithClaims.SaveProvisionGapAsync(new SaveProvisionGapViewModel {
                SearchResultProviderCount = 0, SelectedRouteId = 1, Postcode = "cv12wt", SearchRadius = 10
            }).GetAwaiter().GetResult();
        }
Beispiel #2
0
        public async Task <IActionResult> SaveProvisionGapAsync(SaveProvisionGapViewModel viewModel)
        {
            var opportunityDto     = _mapper.Map <OpportunityDto>(viewModel);
            var opportunityItemDto = _mapper.Map <OpportunityItemDto>(viewModel);

            if (await _opportunityService.IsNewProvisionGapAsync(viewModel.OpportunityItemId))
            {
                opportunityItemDto.OpportunityId = viewModel.OpportunityId;

                if (opportunityItemDto.OpportunityId == 0)
                {
                    opportunityItemDto.OpportunityId = await CreateOpportunityAsync(opportunityDto);
                }

                opportunityItemDto.ProvisionGap = new List <ProvisionGapDto>
                {
                    new ProvisionGapDto()
                };

                var opportunityItemId = await _opportunityService.CreateOpportunityItemAsync(opportunityItemDto);

                return(RedirectToRoute("GetPlacementInformation", new { opportunityItemId }));
            }

            var providerSearchDto = new ProviderSearchDto
            {
                OpportunityId             = opportunityItemDto.OpportunityId,
                OpportunityItemId         = opportunityItemDto.OpportunityItemId,
                SearchRadius              = viewModel.SearchRadius,
                Postcode                  = viewModel.Postcode,
                RouteId                   = viewModel.SelectedRouteId ?? 0,
                SearchResultProviderCount = viewModel.SearchResultProviderCount
            };
            await _opportunityService.UpdateOpportunityItemAsync(providerSearchDto);

            return(RedirectToRoute("GetPlacementInformation", new { opportunityItemDto.OpportunityItemId }));
        }