private async Task <IActionResult> PerformSaveSection(ProviderDetailViewModel viewModel)
        {
            var isNew = viewModel.Id == 0;

            if (!isNew)
            {
                await _providerService.UpdateProviderDetailSectionAsync(viewModel);
            }

            if (!viewModel.IsCdfProvider)
            {
                return(RedirectToRoute("SearchProvider"));
            }

            if (isNew)
            {
                return(RedirectToAction(nameof(AddProviderDetail), new AddProviderViewModel
                {
                    UkPrn = viewModel.UkPrn,
                    Name = viewModel.Name
                }));
            }

            return(RedirectToRoute("GetProviderDetail", new
            {
                providerId = viewModel.Id
            }));
        }
Exemple #2
0
        public async Task UpdateProviderDetailAsync(ProviderDetailViewModel viewModel)
        {
            var trackedEntity = await _repository.GetSingleOrDefaultAsync(p => p.Id == viewModel.Id);

            trackedEntity = _mapper.Map(viewModel, trackedEntity);

            await _repository.UpdateAsync(trackedEntity);
        }
        public async Task <IActionResult> SaveProviderDetailAsync(ProviderDetailViewModel viewModel)
        {
            if (viewModel.IsSaveSection)
            {
                return(await PerformSaveSection(viewModel));
            }

            return(await SaveProvider(viewModel));
        }
Exemple #4
0
        public async Task UpdateProviderDetailSectionAsync(ProviderDetailViewModel viewModel)
        {
            var provider = _mapper.Map <ProviderDetailViewModel, Provider>(viewModel);

            await _repository.UpdateWithSpecifiedColumnsOnlyAsync(provider,
                                                                  x => x.IsCdfProvider,
                                                                  x => x.ModifiedOn,
                                                                  x => x.ModifiedBy);
        }
        public async Task <IActionResult> GetProviderDetailAsync(int providerId)
        {
            var viewModel = new ProviderDetailViewModel();

            if (providerId > 0)
            {
                viewModel = await _providerService.GetProviderDetailByIdAsync(providerId);
            }

            return(View("ProviderDetail", viewModel));
        }
        private async Task <IActionResult> PerformSaveAndFinish(ProviderDetailViewModel viewModel)
        {
            if (!viewModel.ProviderVenues.Any())
            {
                ModelState.AddModelError(nameof(ProviderVenue), "You must add a venue for this provider");
                return(View("ProviderDetail", viewModel));
            }

            await _providerService.UpdateProviderDetailAsync(viewModel);

            return(RedirectToAction("SearchProvider"));
        }
        public When_ProviderService_Is_Called_To_Update_Provider_Detail()
        {
            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(ProviderMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserEmailResolver") ?
                                         new LoggedInUserEmailResolver <ProviderDetailViewModel, Domain.Models.Provider>(httpContextAccessor) :
                                         type.Name.Contains("LoggedInUserNameResolver") ?
                                         (object)new LoggedInUserNameResolver <ProviderDetailViewModel, Domain.Models.Provider>(httpContextAccessor) :
                                         type.Name.Contains("UtcNowResolver") ?
                                         new UtcNowResolver <ProviderDetailViewModel, Domain.Models.Provider>(dateTimeProvider) :
                                         null);
            });
            var mapper = new Mapper(config);

            _repository = Substitute.For <IRepository <Domain.Models.Provider> >();
            _repository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Provider, bool> > >())
            .Returns(new ValidProviderBuilder().Build());

            var referenceRepository = Substitute.For <IRepository <ProviderReference> >();

            var providerService = new ProviderService(mapper, _repository, referenceRepository);

            var viewModel = new ProviderDetailViewModel
            {
                Id          = 1,
                UkPrn       = 123,
                Name        = "ProviderName",
                DisplayName = "display name"
            };

            providerService.UpdateProviderDetailAsync(viewModel).GetAwaiter().GetResult();
        }
Exemple #8
0
        public static ProviderDetailViewModel GetProviderDetailViewModel(Provider provider, ApprenticeshipTrainingSummary apprenticeshipTrainingSummary, IEnumerable <long> hideAboutThisProviderForUlns = null, string searchTerm = null)
        {
            hideAboutThisProviderForUlns = hideAboutThisProviderForUlns ?? new List <long>();

            var employerSatisfationMessage =
                (provider.EmployerSatisfaction > 0)
                    ? ProviderMappingHelper.GetPercentageText(provider.EmployerSatisfaction)
                    : ProviderMappingHelper.GetPercentageText(null);

            var learnerSatisfationMessage =
                (provider.LearnerSatisfaction > 0)
                    ? ProviderMappingHelper.GetPercentageText(provider.LearnerSatisfaction)
                    : ProviderMappingHelper.GetPercentageText(null);

            var viewModel = new ProviderDetailViewModel
            {
                DisplayAboutThisProvider = !hideAboutThisProviderForUlns.Contains(provider.Ukprn),
                Email = provider.Email,
                CurrentlyNotStartingNewApprentices = provider.CurrentlyNotStartingNewApprentices,
                IsEmployerProvider          = provider.IsEmployerProvider,
                EmployerSatisfaction        = provider.EmployerSatisfaction,
                EmployerSatisfactionMessage = employerSatisfationMessage,
                IsHigherEducationInstitute  = provider.IsHigherEducationInstitute,
                LearnerSatisfaction         = provider.LearnerSatisfaction,
                LearnerSatisfactionMessage  = learnerSatisfationMessage,
                NationalProvider            = provider.NationalProvider,
                Phone         = provider.Phone,
                UkPrn         = provider.Ukprn,
                ProviderName  = provider.ProviderName,
                Website       = provider.Website,
                MarketingInfo = provider.MarketingInfo,
                ApprenticeshipTrainingSummary = apprenticeshipTrainingSummary,
                HasParentCompanyGuarantee     = provider.HasParentCompanyGuarantee,
                IsNew            = provider.IsNew,
                IsLevyPayerOnly  = provider.IsLevyPayerOnly,
                SearchTerm       = searchTerm,
                ProviderFeedback = Is <ProviderFeedbackFeature> .Enabled && provider.ProviderFeedback != null ? new FeedbackViewModel(provider.ProviderFeedback) : (FeedbackViewModel)null
            };

            if (provider.Aliases != null && provider.Aliases.Any())
            {
                viewModel.TradingNames = provider.Aliases.Aggregate((aggregatingTradingNames, aliasToAdd) => aggregatingTradingNames + ", " + aliasToAdd);
            }

            return(viewModel);
        }
        public When_ProviderService_Is_Called_To_Get_Provider_Detail_By_Id()
        {
            var config = new MapperConfiguration(c => c.AddMaps(typeof(ProviderMapper).Assembly));
            var mapper = new Mapper(config);

            var logger = Substitute.For <ILogger <ProviderRepository> >();
            var providerReferenceRepository = Substitute.For <IRepository <ProviderReference> >();

            using var dbContext = InMemoryDbContext.Create();
            dbContext.Add(new ValidProviderBuilder()
                          .Build());
            dbContext.SaveChanges();

            var providerRepository = new ProviderRepository(logger, dbContext);

            var service = new ProviderService(mapper, providerRepository, providerReferenceRepository);

            _result = service.GetProviderDetailByIdAsync(1).GetAwaiter().GetResult();
        }
        private async Task <IActionResult> SaveProvider(ProviderDetailViewModel viewModel)
        {
            if (!ModelState.IsValid)
            {
                return(View("ProviderDetail", viewModel));
            }

            if (!viewModel.IsSaveAndAddVenue)
            {
                return(await PerformSaveAndFinish(viewModel));
            }

            var providerId = viewModel.Id;
            await _providerService.UpdateProviderDetailAsync(viewModel);

            return(RedirectToRoute("AddProviderVenue", new
            {
                providerId
            }));
        }
Exemple #11
0
        private static (bool IsUpdated, ProviderDetailViewModel ProviderDetailViewModel) ValidateProviderToUpdate(ProviderDetailViewModel providerDetailViewModel, ProviderVenueQualificationDto providerVenueQualification)
        {
            var isUpdated = false;

            if (ValidateToUpdate(providerDetailViewModel.Name, providerVenueQualification.Name))
            {
                providerDetailViewModel.Name = providerVenueQualification.Name;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.DisplayName, providerVenueQualification.DisplayName))
            {
                providerDetailViewModel.DisplayName = providerVenueQualification.DisplayName;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContact, providerVenueQualification.PrimaryContact))
            {
                providerDetailViewModel.PrimaryContact = providerVenueQualification.PrimaryContact;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContactEmail, providerVenueQualification.PrimaryContactEmail))
            {
                providerDetailViewModel.PrimaryContactEmail = providerVenueQualification.PrimaryContactEmail;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.PrimaryContactPhone, providerVenueQualification.PrimaryContactPhone))
            {
                providerDetailViewModel.PrimaryContactPhone = providerVenueQualification.PrimaryContactPhone;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContact, providerVenueQualification.SecondaryContact))
            {
                providerDetailViewModel.SecondaryContact = providerVenueQualification.SecondaryContact;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContactEmail, providerVenueQualification.SecondaryContactEmail))
            {
                providerDetailViewModel.SecondaryContactEmail = providerVenueQualification.SecondaryContactEmail;
                isUpdated = true;
            }

            if (ValidateToUpdate(providerDetailViewModel.SecondaryContactPhone, providerVenueQualification.SecondaryContactPhone))
            {
                providerDetailViewModel.SecondaryContactPhone = providerVenueQualification.SecondaryContactPhone;
                isUpdated = true;
            }

            if (!providerDetailViewModel.IsEnabledForReferral.HasValue ||
                providerDetailViewModel.IsEnabledForReferral.Value != providerVenueQualification.IsEnabledForReferral)
            {
                providerDetailViewModel.IsEnabledForReferral = providerVenueQualification.IsEnabledForReferral;
                isUpdated = true;
            }

            if (providerDetailViewModel.IsCdfProvider != providerVenueQualification.IsCdfProvider)
            {
                providerDetailViewModel.IsCdfProvider = providerVenueQualification.IsCdfProvider;
                isUpdated = true;
            }

            return(isUpdated, providerDetailViewModel);
        }
Exemple #12
0
        public async Task Then_Make_TLevel_Provider_Flag_To_True(
            MatchingDbContext dbContext,
            Domain.Models.Provider provider,
            List <ProviderVenueViewModel> venueViewModels,
            MatchingConfiguration config,
            ILogger <GenericRepository <Domain.Models.Provider> > providerLogger,
            ILogger <GenericRepository <ProviderReference> > providerReferenceLogger,
            IHttpContextAccessor httpContextAccessor,
            IDateTimeProvider dateTimeProvider
            )
        {
            //Arrange
            provider.IsTLevelProvider = false;

            await dbContext.AddAsync(provider);

            await dbContext.SaveChangesAsync();

            dbContext.Entry(provider).State = EntityState.Detached;

            var viewModel = new ProviderDetailViewModel
            {
                Id = provider.Id,
                IsTLevelProvider = true,
                ProviderVenues   = venueViewModels
            };

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

            var mapperConfig = new MapperConfiguration(c =>
            {
                c.AddMaps(typeof(ProviderMapper).Assembly);
                c.ConstructServicesUsing(type =>
                                         type.Name.Contains("LoggedInUserNameResolver")
                        ? (object)new LoggedInUserNameResolver <ProviderDetailViewModel, Domain.Models.Provider>(httpContextAccessor)
                        : type.Name.Contains("UtcNowResolver")
                                ? new UtcNowResolver <ProviderDetailViewModel, Domain.Models.Provider>(dateTimeProvider)
                                : null);
            });

            var mapper = new Mapper(mapperConfig);

            var providerReferenceRepo = new GenericRepository <ProviderReference>(providerReferenceLogger, dbContext);
            var repo            = new GenericRepository <Domain.Models.Provider>(providerLogger, dbContext);
            var providerService = new ProviderService(mapper, repo, providerReferenceRepo);

            var sut = new ProviderController(providerService, config);

            //Act
            await sut.SaveProviderDetailAsync(viewModel);

            //Assert
            var result = await repo.GetSingleOrDefaultAsync(x => x.Id == provider.Id);

            provider.IsTLevelProvider.Should().BeFalse();
            result.IsTLevelProvider.Should().BeTrue();
        }