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 })); }
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); }
public async Task <int> CreateProviderAsync(CreateProviderDetailViewModel viewModel) { var provider = _mapper.Map <CreateProviderDetailViewModel, Provider>(viewModel); return(await _repository.CreateAsync(provider)); }