protected void showTable(Panel pnlName, TrainingProvider trainingProvider) { var id = objcryptoJS.AES_encrypt(trainingProvider.Id.ToString(), AppConstants.secretKey, AppConstants.initVec); StringBuilder strContent = new StringBuilder("<tr>"); strContent.Append("<td width='15%' nowrap><a style='text-decoration: underline;' href='MDE_TPAppView.aspx?tpApps=active&cgi=" + System.Web.HttpUtility.UrlEncode(id) + "' >"); strContent.Append(trainingProvider.TP_Name); strContent.Append("</a></td>"); strContent.Append("<td width='15%' nowrap>"); strContent.Append(trainingProvider.TPContactFirstName + " " + trainingProvider.TPContactLastName); strContent.Append("</td>"); strContent.Append("<td width='10%' nowrap>"); strContent.Append(trainingProvider.TP_Telephone); strContent.Append("</td>"); if (pnlName.ID.ToString() == "pnlMyContApps") { strContent.Append("<td width='10%' nowrap>"); strContent.Append(GlobalMethods.AppStatus(Convert.ToInt32(trainingProvider.IsActive))); strContent.Append("</td>"); } strContent.Append("<td width='10%'nowrap>"); strContent.Append(trainingProvider.CreatedDate.ToShortDateString()); strContent.Append("</td>"); //*************************************** strContent.Append("<td width='5%' nowrap>"); strContent.Append("<a class='btn btn-xs btn-success' href='MDE_TPAppView.aspx?tpApps=active&cgi=" + System.Web.HttpUtility.UrlEncode(id) + "'>View</a>"); strContent.Append("</td>"); pnlName.Controls.Add(new LiteralControl(strContent.ToString())); }
public async Task <OrchestratorResponse <PostSelectTrainingProviderResult> > PostSelectTrainingProviderAsync(SelectTrainingProviderEditModel m, VacancyUser user) { var vacancy = await Utility.GetAuthorisedVacancyForEditAsync(_client, _vacancyClient, m, RouteNames.TrainingProvider_Select_Post); if (m.IsTrainingProviderSelected == false) { if (vacancy.TrainingProvider != null) { vacancy.TrainingProvider = null; await _vacancyClient.UpdateDraftVacancyAsync(vacancy, user); } return(new OrchestratorResponse <PostSelectTrainingProviderResult>(new PostSelectTrainingProviderResult())); } var providerSummary = await GetProviderFromModelAsync(m); TrainingProvider provider = null; if (providerSummary != null) { provider = await _trainingProviderService.GetProviderAsync(providerSummary.Ukprn); } vacancy.TrainingProvider = provider; return(await ValidateAndExecute( vacancy, v => _vacancyClient.Validate(v, ValidationRules), v => Task.FromResult(new PostSelectTrainingProviderResult { FoundTrainingProviderUkprn = v.TrainingProvider?.Ukprn }) )); }
public async Task Then_If_Provider_Owned_And_Employer_Has_To_Review_Then_Review_Event_Is_Submitted( Vacancy vacancy, CreateVacancyCommand command, TrainingProvider provider, [Frozen] Mock <IEmployerVacancyClient> employerVacancyClient, [Frozen] Mock <IRecruitVacancyClient> recruitVacancyClient, [Frozen] Mock <IMessaging> messaging, [Frozen] Mock <ITrainingProviderService> trainingProviderService, [Frozen] Mock <IProviderRelationshipsService> providerRelationshipsService, CreateVacancyCommandHandler handler) { command.ValidateOnly = false; providerRelationshipsService.Setup(x => x.HasProviderGotEmployersPermissionAsync( provider.Ukprn.Value, command.Vacancy.EmployerAccountId, command.Vacancy.AccountLegalEntityPublicHashedId, OperationType.RecruitmentRequiresReview)) .ReturnsAsync(true); command.VacancyUserDetails.Email = string.Empty; trainingProviderService.Setup(x => x.GetProviderAsync(command.VacancyUserDetails.Ukprn.Value)) .ReturnsAsync(provider); recruitVacancyClient.Setup(x => x.Validate(It.IsAny <Vacancy>(), VacancyRuleSet.All)) .Returns(new EntityValidationResult()); recruitVacancyClient.Setup(x => x.GetVacancyAsync(command.Vacancy.Id)).ReturnsAsync(vacancy); await handler.Handle(command, CancellationToken.None); messaging.Verify(x => x.PublishEvent(It.Is <VacancyReviewedEvent>(c => c.VacancyId.Equals(command.Vacancy.Id) && c.VacancyReference.Equals(vacancy.VacancyReference) && c.Ukprn.Equals(provider.Ukprn) ))); }
// DELETE: api/Topic/5 public HttpResponseMessage Delete(string id) { var provider = new TrainingProvider(DbInfo); var deleted = provider.DeleteTraining(id); return(Request.CreateResponse(HttpStatusCode.OK, deleted)); }
/// <exception cref="ArgumentNullException"><paramref name="trainingProvider"/> is <see langword="null" />.</exception> public async Task <CallResult> ReassignCourseSpecializationsAsync(TrainingProvider trainingProvider, bool useArchiveData = false) { if (trainingProvider == null) { throw new ArgumentNullException("trainingProvider"); } if (!await _semaphore.WaitAsync(WaitTimeout)) { return(CallResult.Failed(Resources.UpdateService_CannotUpdateBecauseDatabaseIsInUpdateState)); } try { var pathsContainer = new ServerMediaPathsContainer(_serverImagesPath, new[] { trainingProvider }); using (var catalog = _activatorProxy.CreateInstance <ITrainingCatalog>(trainingProvider.AssemblyType)) { // ReSharper disable once ExceptionNotDocumented catalog.Initialize(trainingProvider.Name, trainingProvider.Id, trainingProvider.SiteUrl, trainingProvider.SourceUrl, trainingProvider.SourceLocation, pathsContainer, _archiveDirectoryPath); using (var context = _contextFactory.CreateDbContext()) { await catalog.ReassignCourseSpecializationsAsync(context, useArchiveData); } } } finally { _semaphore.Release(); } return(CallResult.Success); }
public async Task Then_If_The_Command_Is_Valid_And_The_RegisteredName_Is_Used_Then_Employer_Profile_Updated( Vacancy vacancy, CreateVacancyCommand command, TrainingProvider provider, EmployerProfile employerProfile, [Frozen] Mock <IEmployerVacancyClient> employerVacancyClient, [Frozen] Mock <IRecruitVacancyClient> recruitVacancyClient, [Frozen] Mock <IMessaging> messaging, [Frozen] Mock <ITrainingProviderService> trainingProviderService, CreateVacancyCommandHandler handler) { command.ValidateOnly = false; command.Vacancy.EmployerNameOption = EmployerNameOption.TradingName; trainingProviderService.Setup(x => x.GetProviderAsync(command.VacancyUserDetails.Ukprn.Value)) .ReturnsAsync(provider); recruitVacancyClient.Setup(x => x.Validate(It.IsAny <Vacancy>(), VacancyRuleSet.All)) .Returns(new EntityValidationResult()); recruitVacancyClient.Setup(x => x.GetVacancyAsync(command.Vacancy.Id)).ReturnsAsync(vacancy); recruitVacancyClient .Setup(x => x.GetEmployerProfileAsync(command.Vacancy.EmployerAccountId, command.Vacancy.AccountLegalEntityPublicHashedId)).ReturnsAsync(employerProfile); await handler.Handle(command, CancellationToken.None); recruitVacancyClient.Verify(x => x.UpdateEmployerProfileAsync(It.Is <EmployerProfile>(c => c.TradingName.Equals(command.Vacancy.EmployerName) ), It.IsAny <VacancyUser>()), Times.Once); }
public async Task And_ValidateOnly_True_And_Submitted_By_Employer_Then_Returns_After_Validation( CreateVacancyCommand command, TrainingProvider provider, Vacancy vacancy, DateTime timeNow, [Frozen] Mock <ITimeProvider> timeProvider, [Frozen] Mock <IProviderVacancyClient> providerVacancyClient, [Frozen] Mock <IEmployerVacancyClient> employerVacancyClient, [Frozen] Mock <IRecruitVacancyClient> recruitVacancyClient, [Frozen] Mock <IVacancyRepository> vacancyRepository, [Frozen] Mock <ITrainingProviderService> trainingProviderService, [Frozen] Mock <IProviderRelationshipsService> providerRelationshipsService, CreateVacancyCommandHandler handler) { command.ValidateOnly = true; vacancy.Id = command.Vacancy.Id; vacancy.ProgrammeId = command.Vacancy.ProgrammeId; trainingProviderService.Setup(x => x.GetProviderAsync(command.VacancyUserDetails.Ukprn.Value)) .ReturnsAsync(provider); recruitVacancyClient.Setup(x => x.Validate(It.IsAny <Vacancy>(), VacancyRuleSet.All)) .Returns(new EntityValidationResult()); var actual = await handler.Handle(command, CancellationToken.None); actual.ResultCode.Should().Be(ResponseCode.Created); actual.Data.Should().Be(1000000001); employerVacancyClient.Verify(x => x.CreateEmployerApiVacancy( It.IsAny <Guid>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <VacancyUser>(), It.IsAny <TrainingProvider>(), It.IsAny <string>()), Times.Never); vacancyRepository.Verify(x => x.UpdateAsync(It.IsAny <Vacancy>()), Times.Never); }
protected void showTable(Panel pnlName, TrainingProvider tp) { var id = objcryptoJS.AES_encrypt(tp.Id.ToString(), AppConstants.secretKey, AppConstants.initVec); StringBuilder strContent = new StringBuilder("<tr>"); strContent.Append("<td width='15%' nowrap><a style='text-decoration: underline;' href='MDE_TPAppView.aspx?TPApps=active&cgi=" + System.Web.HttpUtility.UrlEncode(id) + "' >"); //strContent.Append(tp.InspectorFirstName + " " + tp.InspectorLastName); strContent.Append("</a></td>"); strContent.Append("<td width='15%' nowrap>"); //strContent.Append(tp.ACRDCat.CatTitle); strContent.Append("</td>"); strContent.Append("<td width='10%'nowrap>"); //strContent.Append(tp.InspectorContactFirstName + " " + tp.InspectorContactLastName); strContent.Append("</td>"); strContent.Append("<td width='10%' nowrap>"); //strContent.Append(tp.InspectorContractor_Phone); strContent.Append("</td>"); strContent.Append("<td width='10%'nowrap>"); strContent.Append(tp.CreatedDate.ToShortDateString()); strContent.Append("</td>"); //*************************************** strContent.Append("<td width='5%' nowrap>"); strContent.Append("<a class='btn btn-xs btn-success' href='MDE_TPAppView.aspx?TPApps=active&cgi=" + System.Web.HttpUtility.UrlEncode(id) + "'>View</a>"); strContent.Append("</td>"); pnlName.Controls.Add(new LiteralControl(strContent.ToString())); }
private ConsentForProviderBlockingViewModel ConvertToConsentViewModel(TrainingProvider provider, int permissionCount) { return(new ConsentForProviderBlockingViewModel { Name = provider.Name, PermissionCount = permissionCount }); }
public HttpResponseMessage Get(string id) { var certification = new TrainingProvider(DbInfo).GetTraining(int.Parse(id)); var exists = certification != null; var status = exists ? HttpStatusCode.OK : HttpStatusCode.NotFound; return(Request.CreateResponse(status, certification)); }
private ConfirmTrainingProviderUnblockingEditModel ConvertToConfirmViewModel(TrainingProvider provider) { return(new ConfirmTrainingProviderUnblockingEditModel { Ukprn = provider.Ukprn.GetValueOrDefault(), ProviderName = provider.Name }); }
private ConfirmTrainingProviderBlockingViewModel ConvertToConfirmViewModel(TrainingProvider provider, int permissionCount) { return(new ConfirmTrainingProviderBlockingViewModel { Ukprn = provider.Ukprn.GetValueOrDefault(), Name = provider.Name, Address = provider.Address.ToAddressString(), PermissionCount = permissionCount }); }
internal async Task UpdateTrainingCatalogAsync(UpdateDbContext context, TrainingProvider trainingProvider, string description, ServerMediaPathsContainer pathsContainer, bool useArchiveData = false, bool logUpdateToDb = true) { var updateEvent = new UpdateEvent(trainingProvider.Id, description, _dateTimeProxy.UtcNow); context.UpdateEvents.Add(updateEvent); await context.SaveChangesAsync(); using (var catalog = _activatorProxy.CreateInstance <ITrainingCatalog>(trainingProvider.AssemblyType)) { catalog.Initialize(trainingProvider.Name, trainingProvider.Id, trainingProvider.SiteUrl, trainingProvider.SourceUrl, trainingProvider.SourceLocation, pathsContainer, _archiveDirectoryPath); try { await catalog.UpdateAsync(updateEvent, context, useArchiveData, logUpdateToDb); updateEvent.EndedOn = _dateTimeProxy.UtcNow; if (context.AuthorsResolves.Local.Any()) { updateEvent.UpdateResult = UpdateResult.NeedManualResolve; } else { updateEvent.UpdateResult = UpdateResult.Success; } await context.SaveChangesAsync(); } catch (Exception ex) { updateEvent.EndedOn = _dateTimeProxy.UtcNow; updateEvent.UpdateResult = UpdateResult.Error; var aggregateException = ex as AggregateException; var errorData = aggregateException != null ? aggregateException.Flatten().ToString() : ex.ToString(); updateEvent.ErrorData = errorData; updateEvent.AuthorsUpdates = null; updateEvent.CategoriesUpdates = null; updateEvent.CoursesUpdates = null; context.SetStateToDetached(updateEvent); using (var ctx = _contextFactory.CreateDbContext()) { ctx.SetStateToModified(updateEvent); ctx.SaveChanges(); } } } }
public async Task Then_If_The_Command_Is_Valid_The_Vacancy_Is_Created_And_Submitted_For_Provider( CreateVacancyCommand command, TrainingProvider provider, Vacancy vacancy, DateTime timeNow, [Frozen] Mock <ITimeProvider> timeProvider, [Frozen] Mock <IProviderVacancyClient> providerVacancyClient, [Frozen] Mock <IRecruitVacancyClient> recruitVacancyClient, [Frozen] Mock <IVacancyRepository> vacancyRepository, [Frozen] Mock <ITrainingProviderService> trainingProviderService, [Frozen] Mock <IProviderRelationshipsService> providerRelationshipsService, CreateVacancyCommandHandler handler) { command.ValidateOnly = false; command.VacancyUserDetails.Email = null; vacancy.Id = command.Vacancy.Id; vacancy.ProgrammeId = command.Vacancy.ProgrammeId; trainingProviderService.Setup(x => x.GetProviderAsync(command.VacancyUserDetails.Ukprn.Value)) .ReturnsAsync(provider); recruitVacancyClient.Setup(x => x.Validate(It.IsAny <Vacancy>(), VacancyRuleSet.All)) .Returns(new EntityValidationResult()); recruitVacancyClient.Setup(x => x.GetVacancyAsync(command.Vacancy.Id)).ReturnsAsync(vacancy); timeProvider.Setup(x => x.Now).Returns(timeNow); providerRelationshipsService.Setup(x => x.HasProviderGotEmployersPermissionAsync( provider.Ukprn.Value, command.Vacancy.EmployerAccountId, command.Vacancy.AccountLegalEntityPublicHashedId, OperationType.RecruitmentRequiresReview)) .ReturnsAsync(false); var actual = await handler.Handle(command, CancellationToken.None); actual.ResultCode.Should().Be(ResponseCode.Created); actual.Data.Should().Be(vacancy.VacancyReference); providerVacancyClient.Verify(x => x.CreateProviderApiVacancy(command.Vacancy.Id, command.Vacancy.Title, command.Vacancy.EmployerAccountId, command.VacancyUserDetails), Times.Once); vacancyRepository.Verify(x => x.UpdateAsync(It.Is <Vacancy>(c => c.Id.Equals(command.Vacancy.Id) && c.Status == VacancyStatus.Submitted && c.VacancyReference == vacancy.VacancyReference && c.CreatedByUser == vacancy.CreatedByUser && c.Title == command.Vacancy.Title && c.CreatedByUser == vacancy.CreatedByUser && c.CreatedDate == vacancy.CreatedDate && c.OwnerType == vacancy.OwnerType && c.SourceOrigin == vacancy.SourceOrigin && c.SourceType == vacancy.SourceType && c.ProgrammeId == command.Vacancy.ProgrammeId && c.SubmittedByUser == command.VacancyUserDetails && c.LastUpdatedByUser == command.VacancyUserDetails && c.SubmittedDate == timeNow && c.LastUpdatedDate == timeNow && c.TrainingProvider == provider )), Times.Once); }
public static async Task <CallResult> ReassignCourseSpecializations(TrainingProvider trainingProvider) { try { var updateService = new UpdateService(AppConstants.ServerPaths.MediaDirectory, AppConstants.ServerPaths.ArchiveDirectory); return(await updateService.ReassignCourseSpecializationsAsync(trainingProvider)); } catch (Exception ex) { return(ProcessError(ex)); } }
public HttpResponseMessage GetReports(string configuration_id) { try { var reports = new TrainingProvider(DbInfo).GetReports(configuration_id); return(Request.CreateResponse(HttpStatusCode.OK, reports)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.OK, ex.Message)); } }
public HttpResponseMessage GetTrainings(string id) { try { var trainings = new TrainingProvider(DbInfo).GetTrainings(int.Parse(id)); return(Request.CreateResponse(HttpStatusCode.OK, trainings)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.BadRequest, ex.StackTrace)); } }
public void TraineeshipProviderInfoSection() { //Arrange var viewModel = new VacancyViewModelBuilder().BuildValid(VacancyStatus.Draft, VacancyType.Traineeship); var details = new TrainingProvider(); //Act var view = details.RenderAsHtml(viewModel); //Assert view.GetElementbyId("provider-info").Should().BeNull(); }
private async Task CreateVacancy(CreateVacancyCommand request, TrainingProvider trainingProvider) { if (!string.IsNullOrEmpty(request.VacancyUserDetails.Email)) { request.VacancyUserDetails.Ukprn = null; await _employerVacancyClient.CreateEmployerApiVacancy(request.Vacancy.Id, request.Vacancy.Title, request.Vacancy.EmployerAccountId, request.VacancyUserDetails, trainingProvider, request.Vacancy.ProgrammeId); } else { await _providerVacancyClient.CreateProviderApiVacancy(request.Vacancy.Id, request.Vacancy.Title, request.Vacancy.EmployerAccountId, request.VacancyUserDetails); } }
public async Task GetProviderAsync_ShouldAttemptToFindTrainingProvider() { const long ukprn = 88888888; var loggerMock = new Mock <ILogger <TrainingProviderService> >(); var referenceDataReader = new Mock <IReferenceDataReader>(); var cache = new Mock <ICache>(); var timeProvider = new Mock <ITimeProvider>(); var trainingProvider = new TrainingProvider { Ukprn = ukprn, Name = "name", Address = new TrainingProviderAddress { AddressLine1 = "address line 1", AddressLine2 = "address line 2", AddressLine3 = "address line 3", AddressLine4 = "address line 4", Postcode = "post code" } }; var providers = new TrainingProviders { Data = new List <TrainingProvider> { trainingProvider } }; cache.Setup(x => x.CacheAsideAsync(CacheKeys.TrainingProviders, It.IsAny <DateTime>(), It.IsAny <Func <Task <TrainingProviders> > >())) .ReturnsAsync(providers); var sut = new TrainingProviderService(loggerMock.Object, referenceDataReader.Object, cache.Object, timeProvider.Object); var provider = await sut.GetProviderAsync(ukprn); provider.Name.Should().Be("name"); provider.Ukprn.Should().Be(ukprn); provider.Address.AddressLine1.Should().Be("address line 1"); provider.Address.AddressLine2.Should().Be("address line 2"); provider.Address.AddressLine3.Should().Be("address line 3"); provider.Address.AddressLine4.Should().Be("address line 4"); provider.Address.Postcode.Should().Be("post code"); }
public async Task <OrchestratorResponse <Guid> > PostTitleEditModelAsync(TitleEditModel m, VacancyUser user) { TrainingProvider provider = null; IApprenticeshipProgramme programme = null; if (!m.VacancyId.HasValue) // Create if it's a new vacancy { var newVacancy = new Vacancy { Title = m.Title }; return(await ValidateAndExecute( newVacancy, v => _vacancyClient.Validate(v, ValidationRules), async v => { if (m.ReferredFromSavedFavourites) { provider = await GetProvider(m.ReferredUkprn); programme = await GetProgramme(m.ReferredProgrammeId); } return await _client.CreateVacancyAsync(m.Title, m.EmployerAccountId, user, provider, programme?.Id); })); } var vacancy = await _utility.GetAuthorisedVacancyForEditAsync(new VacancyRouteModel { EmployerAccountId = m.EmployerAccountId, VacancyId = m.VacancyId.Value }, RouteNames.Title_Post); SetVacancyWithEmployerReviewFieldIndicators( vacancy.Title, FieldIdResolver.ToFieldId(v => v.Title), vacancy, (v) => { return(v.Title = m.Title); }); return(await ValidateAndExecute( vacancy, v => _vacancyClient.Validate(v, ValidationRules), async v => { await _vacancyClient.UpdateDraftVacancyAsync(vacancy, user); return v.Id; } )); }
public async Task Should_LogErrorToDb_When_UpdateTrainingCatalogThrowAggregateException() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of <UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()) == new UpdateEvent()); Mock.Get(updateDbContext).Setup(x => x.SetStateToDetached(It.IsAny <UpdateEvent>())); var mockContextFromFactory = new Mock <UpdateDbContext>(); mockContextFromFactory.Setup(x => x.SetStateToModified(It.IsAny <UpdateEvent>())); var dbContextFactory = Mock.Of <IDbContextFactory <UpdateDbContext> >(x => x.CreateDbContext() == mockContextFromFactory.Object); var mockTrainingCatalog = new Mock <ITrainingCatalog>(); mockTrainingCatalog.Setup(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>())).Throws <AggregateException>(); var mockActivator = new Mock <IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, dbContextFactory, DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(updateDbContext, trainingProvider, description, mediaPathsContainer); // Assert Mock.Get(updateDbContext).Verify(x => x.SaveChangesAsync(), Times.Once); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); Mock.Get(dbContextFactory).Verify(x => x.CreateDbContext(), Times.Once); mockContextFromFactory.Verify(x => x.SetStateToModified(It.IsAny <UpdateEvent>()), Times.Once()); mockContextFromFactory.Verify(x => x.SaveChanges(), Times.Once); }
// POST: api/Training public HttpResponseMessage Post(Training training) { try { var provider = new TrainingProvider(DbInfo); var isSaved = provider.Save(training); if (isSaved) { return(Request.CreateResponse(HttpStatusCode.OK, provider.LastEntry(training.Key))); } return(Request.CreateResponse(HttpStatusCode.OK, isSaved)); } catch (Exception ex) { return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message)); } }
public async Task CreateEmployerApiVacancy(Guid id, string title, string employerAccountId, VacancyUser user, TrainingProvider provider, string programmeId) { var command = new CreateEmployerOwnedVacancyCommand { VacancyId = id, User = user, UserType = UserType.Employer, Title = title, EmployerAccountId = employerAccountId, Origin = SourceOrigin.Api, ProgrammeId = programmeId, TrainingProvider = provider }; await _messaging.SendCommandAsync(command); await AssignVacancyNumber(id); }
public TrainingProviderOrchestratorTestsFixture() { MockClient = new Mock <IEmployerVacancyClient>(); MockRecruitVacancyClient = new Mock <IRecruitVacancyClient>(); MockTrainingProviderSummaryProvider = new Mock <ITrainingProviderSummaryProvider>(); MockTrainingProviderService = new Mock <ITrainingProviderService>(); User = VacancyOrchestratorTestData.GetVacancyUser(); TrainingProviderOne = new TrainingProvider { Ukprn = 88888888 }; TrainingProviderTwo = new TrainingProvider { Ukprn = 88888889 }; TrainingProviderSummaryOne = new TrainingProviderSummary { ProviderName = "First Training Provider", Ukprn = TrainingProviderOne.Ukprn.Value }; TrainingProviderSummaryTwo = new TrainingProviderSummary { ProviderName = "Second Training Provider", Ukprn = TrainingProviderTwo.Ukprn.Value }; }
public async Task Then_If_The_Command_Is_Valid_A_Vacancy_Created_Event_Is_Submitted( Vacancy vacancy, CreateVacancyCommand command, TrainingProvider provider, [Frozen] Mock <IEmployerVacancyClient> employerVacancyClient, [Frozen] Mock <IRecruitVacancyClient> recruitVacancyClient, [Frozen] Mock <IMessaging> messaging, [Frozen] Mock <ITrainingProviderService> trainingProviderService, CreateVacancyCommandHandler handler) { command.ValidateOnly = false; trainingProviderService.Setup(x => x.GetProviderAsync(command.VacancyUserDetails.Ukprn.Value)) .ReturnsAsync(provider); recruitVacancyClient.Setup(x => x.Validate(It.IsAny <Vacancy>(), VacancyRuleSet.All)) .Returns(new EntityValidationResult()); recruitVacancyClient.Setup(x => x.GetVacancyAsync(command.Vacancy.Id)).ReturnsAsync(vacancy); await handler.Handle(command, CancellationToken.None); messaging.Verify(x => x.PublishEvent(It.Is <VacancySubmittedEvent>(c => c.VacancyId.Equals(command.Vacancy.Id) && c.VacancyReference.Equals(vacancy.VacancyReference) ))); }
public async Task Should_UpdateTrainingCatalog() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of <UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()) == new UpdateEvent() && x.AuthorsResolves.Local == new ObservableCollection <AuthorResolve>()); var mockContext = Mock.Get(updateDbContext); var mockTrainingCatalog = new Mock <ITrainingCatalog>(); var mockActivator = new Mock <IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, new DbContextFactory <UpdateDbContext>(), DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(mockContext.Object, trainingProvider, description, mediaPathsContainer); // Assert mockContext.Verify(x => x.UpdateEvents.Add(It.IsAny <UpdateEvent>()), Times.Once); mockContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(2)); mockActivator.Verify(x => x.CreateInstance <ITrainingCatalog>(It.IsAny <string>()), Times.Once); mockTrainingCatalog.Verify(x => x.Initialize(It.IsAny <string>(), It.IsAny <int>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <LocationType>(), It.IsAny <IMediaPath>(), It.IsAny <string>()), Times.Once()); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny <UpdateEvent>(), It.IsAny <UpdateDbContext>(), It.IsAny <bool>(), It.IsAny <bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); }
public async Task Should_UpdateTrainingCatalog() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of<UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()) == new UpdateEvent() && x.AuthorsResolves.Local == new ObservableCollection<AuthorResolve>()); var mockContext = Mock.Get(updateDbContext); var mockTrainingCatalog = new Mock<ITrainingCatalog>(); var mockActivator = new Mock<IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, new DbContextFactory<UpdateDbContext>(), DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(mockContext.Object, trainingProvider, description, mediaPathsContainer); // Assert mockContext.Verify(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()), Times.Once); mockContext.Verify(x => x.SaveChangesAsync(), Times.Exactly(2)); mockActivator.Verify(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>()), Times.Once); mockTrainingCatalog.Verify(x => x.Initialize(It.IsAny<string>(), It.IsAny<int>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<LocationType>(),It.IsAny<IMediaPath>(), It.IsAny<string>()), Times.Once()); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); }
public async Task <Guid> CreateVacancyAsync(string title, string employerAccountId, VacancyUser user, TrainingProvider provider = null, string programmeId = null) { var vacancyId = GenerateVacancyId(); var command = new CreateEmployerOwnedVacancyCommand { VacancyId = vacancyId, User = user, UserType = UserType.Employer, Title = title, EmployerAccountId = employerAccountId, Origin = SourceOrigin.EmployerWeb }; if (provider != null) { command.TrainingProvider = provider; } if (programmeId != null) { command.ProgrammeId = programmeId; } await _messaging.SendCommandAsync(command); return(vacancyId); }
protected void AddTManual_Click(object sender, EventArgs e) { Security objSecurity = new Security(); var vtxtName = txtName.Text; var vtxtSDATNum = txtSDATNum.Text; var vtxtAddress_1 = txtAddress_1.Text; var vtxtCity_1 = txtCity_1.Text; var vtxtState_1 = txtState_1.Text; var vtxtZipCode_1 = txtZipCode_1.Text; var vtxtAddress_2 = txtAddress_2.Text; var vtxtCity_2 = txtCity_2.Text; var vtxtState_2 = txtState_2.Text; var vtxtZipcode_2 = txtZipcode_2.Text; var vtxtPhone = txtPhone.Text; var vtxtFax = txtFax.Text; var vtxtEmailAddress = txtEmailAddress.Text; var vtxtEIN = txtEIN.Text; var vtxtACCID = txtACCID.Text; DateTime vAccreditationExpirationDate = default(DateTime); if (!string.IsNullOrWhiteSpace(txtAccreditationExpirationDate.Text)) { DateTime.TryParse(txtAccreditationExpirationDate.Text, out vAccreditationExpirationDate); } var vchkChargeFee = chkChargeFee.Checked ? 1 : 0; var vchkTaxExempt = chkTaxExempt.Checked ? 1 : 0; var vtxtTaxExempt = txtTaxExempt.Text; var vchkTPwebsiteYES = chkTPwebsiteYES.Checked ? 1 : 0; var vtxtTPwebsiteURL = txtTPwebsiteURL.Text; var vchkTPwebsiteNO = chkTPwebsiteNO.Checked ? 1 : 0; var vtxtLocation_Address_1 = txtLocation_Address_1.Text; var vtxtLocation_City_1 = txtLocation_City_1.Text; var vtxtLocation_State_1 = txtLocation_State_1.Text; var vtxtLocation_ZipCode_1 = txtLocation_ZipCode_1.Text; var vtxtLocation_Address_2 = txtLocation_Address_2.Text; var vtxtLocation_City_2 = txtLocation_City_2.Text; var vtxtLocation_State_2 = txtLocation_State_2.Text; var vtxtLocation_ZipCode_2 = txtLocation_ZipCode_2.Text; var vtxtLocation_Address_3 = txtLocation_Address_3.Text; var vtxtLocation_City_3 = txtLocation_City_3.Text; var vtxtLocation_State_3 = txtLocation_State_3.Text; var vtxtLocation_ZipCode_3 = txtLocation_ZipCode_3.Text; var vtxtLocation_Address_4 = txtLocation_Address_4.Text; var vtxtLocation_City_4 = txtLocation_City_4.Text; var vtxtLocation_State_4 = txtLocation_State_4.Text; var vtxtLocation_ZipCode_4 = txtLocation_ZipCode_4.Text; var vtxtLocation_Address_5 = txtLocation_Address_5.Text; var vtxtLocation_City_5 = txtLocation_City_5.Text; var vtxtLocation_State_5 = txtLocation_State_5.Text; var vtxtLocation_ZipCode_5 = txtLocation_ZipCode_5.Text; var vtxtLocation_Address_6 = txtLocation_Address_6.Text; var vtxtLocation_City_6 = txtLocation_City_6.Text; var vtxtLocation_State_6 = txtLocation_State_6.Text; var vtxtLocation_ZipCode_6 = txtLocation_ZipCode_6.Text; var vchkCORiskAssessor = chkCORiskAssessor.Checked ? 1 : 0; var vchkCOProjectDesigner = chkCOProjectDesigner.Checked ? 1 : 0; var vchkCOInspectorTech = chkCOInspectorTech.Checked ? 1 : 0; var vchkCOAbatWorkEnglish = chkCOAbatWorkEnglish.Checked ? 1 : 0; var vchkCOVisualInspector = chkCOVisualInspector.Checked ? 1 : 0; var vchkCOAbatWorkSpanish = chkCOAbatWorkSpanish.Checked ? 1 : 0; var vchkCOMainRepaintSup = chkCOMainRepaintSup.Checked ? 1 : 0; var vchkCOStructSteelSup = chkCOStructSteelSup.Checked ? 1 : 0; var vchkCORemovalSup = chkCORemovalSup.Checked ? 1 : 0; var vchkStructSteelWork = chkStructSteelWork.Checked ? 1 : 0; var vtxtInstructorFN_1 = txtInstructorFN_1.Text; var vtxtInstructorLN_1 = txtInstructorLN_1.Text; var vtxtInstructorFN_2 = txtInstructorFN_2.Text; var vtxtInstructorLN_2 = txtInstructorLN_2.Text; var vtxtInstructorFN_3 = txtInstructorFN_3.Text; var vtxtInstructorLN_3 = txtInstructorLN_3.Text; var vtxtInstructorFN_4 = txtInstructorFN_4.Text; var vtxtInstructorLN_4 = txtInstructorLN_4.Text; var vtxtInstructorFN_5 = txtInstructorFN_5.Text; var vtxtInstructorLN_5 = txtInstructorLN_5.Text; var vtxtInstructorFN_6 = txtInstructorFN_6.Text; var vtxtInstructorLN_6 = txtInstructorLN_6.Text; var vtxtInstructorFN_7 = txtInstructorFN_7.Text; var vtxtInstructorLN_7 = txtInstructorLN_7.Text; var vtxtInstructorFN_8 = txtInstructorFN_8.Text; var vtxtInstructorLN_8 = txtInstructorLN_8.Text; var vtxtAuthRepContFName = txtAuthRepContFName.Text; var vtxtAuthRepContLName = txtAuthRepContLName.Text; var vtxtAuthRepContTitle = txtAuthRepContTitle.Text; var vchkIAgree = chkIAgree.Checked ? 1 : 0; var vdropPublicList = int.Parse(dropPublicList.SelectedItem.Value); var vdropIsRenewal = int.Parse(dropIsRenewal.SelectedItem.Value); var tp = TrainingProvider.Create(vtxtName, vtxtSDATNum, vtxtAddress_1, vtxtCity_1, vtxtState_1, vtxtZipCode_1, vtxtAddress_2, vtxtCity_2, vtxtState_2, vtxtZipcode_2, vdropPublicList, vtxtPhone, vtxtFax, vtxtEmailAddress, vtxtEIN, vdropIsRenewal, vtxtACCID, vAccreditationExpirationDate, vchkChargeFee, vchkTaxExempt, vtxtTaxExempt, vchkTPwebsiteYES, vtxtTPwebsiteURL, vchkTPwebsiteNO, vchkCORiskAssessor, vchkCOProjectDesigner, vchkCOInspectorTech, vchkCOAbatWorkEnglish, vchkCOVisualInspector, vchkCOAbatWorkSpanish, vchkCOMainRepaintSup, vchkCOStructSteelSup, vchkCORemovalSup, vchkStructSteelWork, vtxtAuthRepContFName, vtxtAuthRepContLName, vtxtAuthRepContTitle, vchkIAgree); _tPRepository.Add(tp); _uow.Commit(); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_1, vtxtLocation_City_1, vtxtLocation_State_1, vtxtLocation_ZipCode_1)); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_2, vtxtLocation_City_2, vtxtLocation_State_2, vtxtLocation_ZipCode_2)); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_3, vtxtLocation_City_3, vtxtLocation_State_3, vtxtLocation_ZipCode_3)); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_4, vtxtLocation_City_4, vtxtLocation_State_4, vtxtLocation_ZipCode_4)); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_5, vtxtLocation_City_5, vtxtLocation_State_5, vtxtLocation_ZipCode_5)); _tPRepository.AddLocation(TP_Location.Create(tp.Id, vtxtLocation_Address_6, vtxtLocation_City_6, vtxtLocation_State_6, vtxtLocation_ZipCode_6)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_1, vtxtInstructorLN_1)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_2, vtxtInstructorLN_2)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_3, vtxtInstructorLN_3)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_4, vtxtInstructorLN_4)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_5, vtxtInstructorLN_5)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_6, vtxtInstructorLN_6)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_7, vtxtInstructorLN_7)); _tPRepository.AddInstrutor(TP_Instructors.Create(tp.Id, vtxtInstructorFN_8, vtxtInstructorLN_8)); _uow.Commit(); string strBackToForms = objcryptoJS.AES_encrypt("10", AppConstants.secretKey, AppConstants.initVec).ToString(); ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "script", "CallNotify('Your Application has been submitted successfully!', '', 'success', 'RoleDesc.aspx?Dash=active&cgi=" + System.Web.HttpUtility.UrlEncode(strBackToForms) + "');", true); }
public async Task Should_LogErrorToDb_When_UpdateTrainingCatalogThrowAggregateException() { // Arrange var trainingProvider = new TrainingProvider(); var description = "test update"; var mediaPathsContainer = new UpdateService.ServerMediaPathsContainer(); var updateDbContext = Mock.Of<UpdateDbContext>(x => x.UpdateEvents.Add(It.IsAny<UpdateEvent>()) == new UpdateEvent()); Mock.Get(updateDbContext).Setup(x => x.SetStateToDetached(It.IsAny<UpdateEvent>())); var mockContextFromFactory = new Mock<UpdateDbContext>(); mockContextFromFactory.Setup(x => x.SetStateToModified(It.IsAny<UpdateEvent>())); var dbContextFactory = Mock.Of<IDbContextFactory<UpdateDbContext>>(x => x.CreateDbContext() == mockContextFromFactory.Object); var mockTrainingCatalog = new Mock<ITrainingCatalog>(); mockTrainingCatalog.Setup(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>())).Throws<AggregateException>(); var mockActivator = new Mock<IActivatorProxy>(); mockActivator.Setup(x => x.CreateInstance<ITrainingCatalog>(It.IsAny<string>())) .Returns(mockTrainingCatalog.Object); var sut = new UpdateService(string.Empty, ArchiveDirectoryPath, dbContextFactory, DateTimeProxy.Instance, mockActivator.Object); // Act await sut.UpdateTrainingCatalogAsync(updateDbContext, trainingProvider, description, mediaPathsContainer); // Assert Mock.Get(updateDbContext).Verify(x => x.SaveChangesAsync(), Times.Once); mockTrainingCatalog.Verify(x => x.UpdateAsync(It.IsAny<UpdateEvent>(), It.IsAny<UpdateDbContext>(), It.IsAny<bool>(), It.IsAny<bool>()), Times.Once); mockTrainingCatalog.Verify(x => x.Dispose(), Times.Once); Mock.Get(dbContextFactory).Verify(x => x.CreateDbContext(), Times.Once); mockContextFromFactory.Verify(x => x.SetStateToModified(It.IsAny<UpdateEvent>()), Times.Once()); mockContextFromFactory.Verify(x => x.SaveChanges(), Times.Once); }
void ITPRepository.Update(TrainingProvider trainingProvider) { _context.Update(trainingProvider); }
/// <exception cref="ArgumentNullException"><paramref name="trainingProvider"/> is <see langword="null" />.</exception> public async Task<CallResult> ReassignCourseSpecializationsAsync(TrainingProvider trainingProvider, bool useArchiveData = false) { if (trainingProvider == null) throw new ArgumentNullException("trainingProvider"); if (!await _semaphore.WaitAsync(WaitTimeout)) { return CallResult.Failed(Resources.UpdateService_CannotUpdateBecauseDatabaseIsInUpdateState); } try { var pathsContainer = new ServerMediaPathsContainer(_serverImagesPath, new[] { trainingProvider }); using (var catalog = _activatorProxy.CreateInstance<ITrainingCatalog>(trainingProvider.AssemblyType)) { // ReSharper disable once ExceptionNotDocumented catalog.Initialize(trainingProvider.Name, trainingProvider.Id, trainingProvider.SiteUrl, trainingProvider.SourceUrl, trainingProvider.SourceLocation, pathsContainer, _archiveDirectoryPath); using (var context = _contextFactory.CreateDbContext()) { await catalog.ReassignCourseSpecializationsAsync(context, useArchiveData); } } } finally { _semaphore.Release(); } return CallResult.Success; }
internal async Task UpdateTrainingCatalogAsync(UpdateDbContext context, TrainingProvider trainingProvider, string description, ServerMediaPathsContainer pathsContainer, bool useArchiveData = false, bool logUpdateToDb = true) { var updateEvent = new UpdateEvent(trainingProvider.Id, description, _dateTimeProxy.UtcNow); context.UpdateEvents.Add(updateEvent); await context.SaveChangesAsync(); using (var catalog = _activatorProxy.CreateInstance<ITrainingCatalog>(trainingProvider.AssemblyType)) { catalog.Initialize(trainingProvider.Name, trainingProvider.Id, trainingProvider.SiteUrl, trainingProvider.SourceUrl, trainingProvider.SourceLocation, pathsContainer,_archiveDirectoryPath); try { await catalog.UpdateAsync(updateEvent, context, useArchiveData, logUpdateToDb); updateEvent.EndedOn = _dateTimeProxy.UtcNow; if (context.AuthorsResolves.Local.Any()) { updateEvent.UpdateResult = UpdateResult.NeedManualResolve; } else { updateEvent.UpdateResult = UpdateResult.Success; } await context.SaveChangesAsync(); } catch (Exception ex) { updateEvent.EndedOn = _dateTimeProxy.UtcNow; updateEvent.UpdateResult = UpdateResult.Error; var aggregateException = ex as AggregateException; var errorData = aggregateException != null ? aggregateException.Flatten().ToString() : ex.ToString(); updateEvent.ErrorData = errorData; updateEvent.AuthorsUpdates = null; updateEvent.CategoriesUpdates = null; updateEvent.CoursesUpdates = null; context.SetStateToDetached(updateEvent); using (var ctx = _contextFactory.CreateDbContext()) { ctx.SetStateToModified(updateEvent); ctx.SaveChanges(); } } } }