public When_Qualification_Save_MissingQualification_Short_Title_Is_Too_Long() { var qualificationService = Substitute.For <IQualificationService>(); var providerVenueService = Substitute.For <IProviderVenueService>(); var providerQualificationService = Substitute.For <IProviderQualificationService>(); var routePathService = Substitute.For <IRoutePathService>(); var qualificationController = new QualificationController(providerVenueService, qualificationService, providerQualificationService, routePathService); var controllerWithClaims = new ClaimsBuilder <QualificationController>(qualificationController) .AddUserName("username") .AddEmail("*****@*****.**") .Build(); var viewModel = new MissingQualificationViewModel { ProviderVenueId = 1, LarId = "12345678", QualificationId = 1, Title = "Qualification title", ShortTitle = new string('X', 101), Routes = new List <RouteSummaryViewModel> { new RouteSummaryViewModel { Id = 1, Name = "Route 1", IsSelected = true } } }; _result = controllerWithClaims.SaveMissingQualificationAsync(viewModel).GetAwaiter().GetResult(); }
private async Task <int> CreateOrUpdateQualificationAsync(ProviderVenueQualificationDto providerVenueQualification, int providerVenueId) { var qualification = await _qualificationService.GetQualificationAsync(providerVenueQualification.LarId); int qualificationId; if (qualification == null) { var missingQualificationViewModel = new MissingQualificationViewModel { LarId = providerVenueQualification.LarId, ProviderVenueId = providerVenueId, Title = providerVenueQualification.QualificationTitle, ShortTitle = providerVenueQualification.QualificationShortTitle, Source = Source }; qualificationId = await _qualificationService.CreateQualificationEntityAsync(missingQualificationViewModel); Debug.WriteLine($">>>> Created Removing Qualification {qualificationId}"); } else { qualificationId = qualification.Id; } return(qualificationId); }
public async Task <int> CreateQualificationEntityAsync(MissingQualificationViewModel viewModel) { var qualification = _mapper.Map <Qualification>(viewModel); var qualificationId = await _qualificationRepository.CreateAsync(qualification); return(qualificationId); }
public When_QualificationService_Is_Called_To_CreateQualification() { var httpContextAccessor = Substitute.For <IHttpContextAccessor>(); var config = new MapperConfiguration(c => { c.AddMaps(typeof(QualificationMapper).Assembly); c.ConstructServicesUsing(type => type.Name.Contains("LoggedInUserEmailResolver") ? new LoggedInUserEmailResolver <MissingQualificationViewModel, Domain.Models.Qualification>(httpContextAccessor) : type.Name.Contains("LoggedInUserNameResolver") ? (object)new LoggedInUserNameResolver <MissingQualificationViewModel, Domain.Models.Qualification>(httpContextAccessor) : type.Name.Contains("UtcNowResolver") ? new UtcNowResolver <MissingQualificationViewModel, Domain.Models.Qualification>(new DateTimeProvider()) : null); }); var mapper = new Mapper(config); var learningAimReferenceRepository = Substitute.For <IRepository <LearningAimReference> >(); var qualificationRepository = Substitute.For <IRepository <Domain.Models.Qualification> >(); qualificationRepository .CreateAsync(Arg.Do <Domain.Models.Qualification>( q => q.Id = 1)) .Returns(1); qualificationRepository.GetSingleOrDefaultAsync(Arg.Any <Expression <Func <Domain.Models.Qualification, bool> > >()) .Returns(new Domain.Models.Qualification()); _qualificationRouteMappingRepository = Substitute.For <IRepository <QualificationRouteMapping> >(); _qualificationRouteMappingRepository .CreateManyAsync(Arg.Do <IList <QualificationRouteMapping> >( qrpm => qrpm.First().Qualification.Id = 1)) .Returns(1); var qualificationService = new QualificationService(mapper, qualificationRepository, _qualificationRouteMappingRepository, learningAimReferenceRepository); var viewModel = new MissingQualificationViewModel { ProviderVenueId = 1, LarId = "10042982", Title = "Title", ShortTitle = "Short Title", Source = "Test", Routes = new List <RouteSummaryViewModel> { new RouteSummaryViewModel { Id = 1, Name = "Route 1", IsSelected = true, Summary = "Route Summary" } } }; _result = qualificationService.CreateQualificationAsync(viewModel).GetAwaiter().GetResult(); }
private async Task <IList <RouteSummaryViewModel> > GetRoutesAsync(MissingQualificationViewModel viewModel = null) { var routes = await _routePathService.GetRouteSummaryAsync(); foreach (var route in routes) { if (viewModel?.Routes.Any(r => r.Id == route.Id && r.IsSelected) == true) { route.IsSelected = true; } } return(routes); }
public async Task <int> CreateQualificationAsync(MissingQualificationViewModel viewModel) { var qualification = _mapper.Map <Qualification>(viewModel); var qualificationRouteMappings = viewModel .Routes? .Where(r => r.IsSelected) .Select(route => new QualificationRouteMapping { RouteId = route.Id, Source = viewModel.Source, Qualification = qualification }).ToList(); if (qualificationRouteMappings?.Count > 0) { await _qualificationRouteMappingRepository.CreateManyAsync(qualificationRouteMappings); } return(qualification.Id); }
public async Task <IActionResult> SaveMissingQualificationAsync(MissingQualificationViewModel viewModel) { Validate(viewModel); if (!ModelState.IsValid) { viewModel.Routes = await GetRoutesAsync(viewModel); return(View("MissingQualification", viewModel)); } var qualificationId = await _qualificationService.CreateQualificationAsync(viewModel); await _providerQualificationService.CreateProviderQualificationAsync( new AddQualificationViewModel { ProviderVenueId = viewModel.ProviderVenueId, QualificationId = qualificationId, Source = viewModel.Source }); return(RedirectToRoute("GetProviderVenueDetail", new { providerVenueId = viewModel.ProviderVenueId })); }