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

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

            _repository = Substitute.For <IRepository <Domain.Models.Provider> >();
            var referenceRepository = Substitute.For <IRepository <ProviderReference> >();

            _repository.CreateAsync(Arg.Any <Domain.Models.Provider>())
            .Returns(ProviderId);

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

            var viewModel = new CreateProviderDetailViewModel
            {
                UkPrn       = 123,
                Name        = "ProviderName",
                DisplayName = "Display name"
            };

            _result = providerService.CreateProviderAsync(viewModel).GetAwaiter().GetResult();
        }
        public async Task <IActionResult> CreateProviderDetailAsync(CreateProviderDetailViewModel viewModel)
        {
            if (viewModel.IsSaveSection)
            {
                return(await PerformSaveSection(viewModel));
            }

            if (!ModelState.IsValid)
            {
                return(View("ProviderDetail", viewModel));
            }

            if (viewModel.IsSaveAndAddVenue)
            {
                var providerId = await _providerService.CreateProviderAsync(viewModel);

                return(RedirectToRoute("AddProviderVenue", new
                {
                    providerId
                }));
            }

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

            return(RedirectToAction(nameof(AddProviderDetail), new AddProviderViewModel
            {
                UkPrn = viewModel.UkPrn,
                Name = viewModel.Name
            }));
        }
コード例 #3
0
        private async Task <int> CreateOrUpdateProviderAsync(ProviderVenueQualificationDto providerVenueQualification)
        {
            int providerId;
            var provider = await _providerService.SearchAsync(providerVenueQualification.UkPrn);

            if (provider == null)
            {
                //Create the new provider
                var createProviderViewModel = new CreateProviderDetailViewModel
                {
                    UkPrn       = providerVenueQualification.UkPrn,
                    Name        = providerVenueQualification.Name,
                    DisplayName = !string.IsNullOrWhiteSpace(providerVenueQualification.DisplayName)
                        ? providerVenueQualification.DisplayName
                        : providerVenueQualification.Name,
                    PrimaryContact        = providerVenueQualification.PrimaryContact,
                    PrimaryContactEmail   = providerVenueQualification.PrimaryContactEmail,
                    PrimaryContactPhone   = providerVenueQualification.PrimaryContactPhone,
                    SecondaryContact      = providerVenueQualification.SecondaryContact,
                    SecondaryContactEmail = providerVenueQualification.SecondaryContactEmail,
                    SecondaryContactPhone = providerVenueQualification.SecondaryContactPhone,
                    IsEnabledForReferral  = providerVenueQualification.IsEnabledForReferral,
                    IsCdfProvider         = providerVenueQualification.IsCdfProvider,
                    //NOTE: IsTLevelProvider needs to be set manually
                    Source = Source
                };

                providerId = await _providerService.CreateProviderAsync(createProviderViewModel);

                Debug.WriteLine($"Created provider with id {providerId} for UKPRN {providerVenueQualification.UkPrn}");
            }
            else
            {
                //Update an existing provider
                providerId = provider.Id;

                var providerViewModel = await _providerService.GetProviderDetailByIdAsync(providerId);

                if (providerViewModel != null)
                {
                    var providerValidator =
                        ValidateProviderToUpdate(providerViewModel, providerVenueQualification);

                    if (providerValidator.IsUpdated)
                    {
                        await _providerService.UpdateProviderDetailAsync(providerValidator
                                                                         .ProviderDetailViewModel);
                    }
                }
            }

            return(providerId);
        }
コード例 #4
0
        public async Task <int> CreateProviderAsync(CreateProviderDetailViewModel viewModel)
        {
            var provider = _mapper.Map <CreateProviderDetailViewModel, Provider>(viewModel);

            return(await _repository.CreateAsync(provider));
        }