protected ResultDownloadFileRequest InternalGetReport(RequestsCounterData requestsCounter) { //var jobs = BulkDataService.GetJobs(); //BulkDataService.DeleteRecurringJob( ReportType ); ResultInfoJobRequest jobRez = BulkDataService.DownloadJob(ReportType); var reportTypeString = ReportType.ToString(); requestsCounter.IncrementRequests("DownloadJob", reportTypeString); if (jobRez.HasError) { return(new ResultDownloadFileRequest(jobRez.Errors, jobRez.SubmittedDate)); } var fileReferenceId = jobRez.FileReferenceId; var jobId = jobRez.JobId; if (string.IsNullOrEmpty(fileReferenceId)) { JobProfile job = BulkDataService.GetJob(jobId); requestsCounter.IncrementRequests("GetJob", reportTypeString); fileReferenceId = job.fileReferenceId; } var rez = FileTransferService.DownloadFile(jobId, fileReferenceId); requestsCounter.IncrementRequests("DownloadFile", reportTypeString); return(new ResultDownloadFileRequest(rez)); }
public async Task UpdateJobProfileAsync(JobProfile jobProfile) { await jobprofileCollection.ReplaceOneAsync(doc => doc.UrlName.Equals(jobProfile.UrlName), jobProfile, new UpdateOptions { IsUpsert = true }); //var result = await jobprofileCollection.FindAsync(doc => doc.UrlName.Equals(jobProfile.UrlName)).Result.FirstOrDefaultAsync(); //if (result != null) //{ // //var filter = Builders<JobProfile>.Filter.Where(jp => jp.UrlName.Equals(jobProfile.UrlName)); // //var updateAltTitle = Builders<JobProfile>.Update.Set(jp => jp.AlternativeTitles, jobProfile.AlternativeTitles); // //var updateTitle = Builders<JobProfile>.Update.Set(jp => jp.Title, jobProfile.Title); // //var careerDefinition = Builders<JobProfile>.Update.Set(jp => jp.CareerPathAndProgression, jobProfile.CareerPathAndProgression); // //var entryDefinition = Builders<JobProfile>.Update.Set(jp => jp.EntryRequirements, jobProfile.EntryRequirements); // //var howDefinition = Builders<JobProfile>.Update.Set(jp => jp.HowToBecome, jobProfile.HowToBecome); // //var overviewDefinition = Builders<JobProfile>.Update.Set(jp => jp.Overview, jobProfile.Overview); // //var skillsdDefinition = Builders<JobProfile>.Update.Set(jp => jp.Skills, jobProfile.Skills); // //var whatyoulldoDefinition = Builders<JobProfile>.Update.Set(jp => jp.WhatYoullDo, jobProfile.WhatYoullDo); // //var workingDefinition = Builders<JobProfile>.Update.Set(jp => jp.WorkingHoursPatternsAndEnvironment, jobProfile.WorkingHoursPatternsAndEnvironment); // //var combinedDefinitions = // // Builders<JobProfile>.Update.Combine(updateAltTitle, updateTitle, careerDefinition, entryDefinition, howDefinition, overviewDefinition, skillsdDefinition, whatyoulldoDefinition, workingDefinition); // //await jobprofileCollection.UpdateOneAsync(filter, combinedDefinitions); //} //else //{ // await jobprofileCollection.InsertOneAsync(jobProfile); //} }
public async Task SaveJobProfileAsync(JobProfile jobProfile) { var result = await jobprofileCollection.FindAsync(doc => doc.UrlName.Equals(jobProfile.UrlName)).Result.FirstOrDefaultAsync(); if (result == null) { await jobprofileCollection.InsertOneAsync(jobProfile); } }
public async Task <bool> PostJobProfile([FromBody] JobProfile jobProfile) { if (jobProfile != null) { await repository.UpdateJobProfileAsync(jobProfile); } return(true); }
private void SetUpDependeciesAndCall(bool validJobProfile, bool isContentPreviewMode) { ////Set up comman call mapperCfg = new MapperConfiguration(cfg => { cfg.AddProfile <JobProfilesAutoMapperProfile>(); }); dummyJobProfile = validJobProfile ? new JobProfile { AlternativeTitle = nameof(JobProfile.AlternativeTitle), SalaryRange = nameof(JobProfile.SalaryRange), Overview = nameof(JobProfile.Overview), Title = nameof(JobProfile.Title), MaximumHours = 40, MinimumHours = 10, UrlName = nameof(JobProfile.UrlName), WorkingHoursDetails = nameof(JobProfile.WorkingHoursDetails), WorkingPattern = nameof(JobProfile.WorkingPattern), WorkingPatternDetails = nameof(JobProfile.WorkingPatternDetails) } : null; var dummyIndex = new JobProfileIndex { Title = nameof(JobProfileIndex.Title), AlternativeTitle = new[] { "alt" }, SalaryStarter = starterSalary, SalaryExperienced = experiencedSalary, Overview = "overview", UrlName = "dummy-url", JobProfileCategoriesWithUrl = new[] { "CatOneURL|Cat One", "CatTwoURL|Cat Two" } }; var resultsCount = 1; var dummySearchResult = A.Dummy <SearchResult <JobProfileIndex> >(); dummySearchResult.Count = resultsCount; dummySearchResult.Results = A.CollectionOfDummy <SearchResultItem <JobProfileIndex> >(resultsCount); var rawResultItems = new List <SearchResultItem <JobProfileIndex> > { new SearchResultItem <JobProfileIndex> { ResultItem = dummyIndex } }; dummySearchResult.Results = rawResultItems; // Set up calls A.CallTo(() => searchQueryService.SearchAsync(A <string> ._, A <SearchProperties> ._)).Returns(dummySearchResult); A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => webAppContextFake.IsContentPreviewMode).Returns(isContentPreviewMode); A.CallTo(() => sitefinityPage.GetDefaultJobProfileToUse(A <string> ._)) .ReturnsLazily((string defaultProfile) => defaultProfile); A.CallTo(() => govUkNotifyFake.SubmitEmail(A <string> ._, null)).Returns(false); A.CallTo(() => webAppContextFake.SetVocCookie(Constants.VocPersonalisationCookieName, A <string> ._)).DoesNothing(); A.CallTo(() => loggerFake.Trace(A <string> ._)).DoesNothing(); }
public void CreateJobProfile(JobProfile jobProfileModel) { JobProfile _jobProfile = new JobProfile(); _jobProfile.JobProfileId = jobProfileModel.JobProfileId; _jobProfile.JobProfileName = jobProfileModel.JobProfileName; _dbContext.Add(_jobProfile); // num = _dbContext.SaveChanges(); }
public void Initialise(JobProfileIndex initialiseJobProfileIndex, bool isPublishing) { if (initialiseJobProfileIndex == null) { throw new ArgumentNullException(nameof(initialiseJobProfileIndex)); } JobProfile = jobProfileRepository.GetByUrlNameForSearchIndex(initialiseJobProfileIndex.UrlName, isPublishing); jobProfileIndex = initialiseJobProfileIndex; jobProfileIndex.SocCode = JobProfile?.SOCCode; }
public async Task <JobProfile> GetJobProfileByUrlNameAsync(string urlName) { var jobProfile = new JobProfile(); using (var client = new HttpClient()) { var result = await client.GetStringAsync($"{apiUrl}?$filter=UrlName eq '{urlName}'"); jobProfile = JsonConvert.DeserializeObject <OdataResult <JobProfile> >(result)?.Value?.FirstOrDefault(); } return(jobProfile); }
/// <summary> /// Gets the property value. /// </summary> /// <param name="jobProfile">The urlname.</param> /// <returns>string</returns> private string GetPropertyValue(JobProfile jobProfile) { var propertyValue = string.Empty; if (!string.IsNullOrWhiteSpace(PropertyName)) { propertyValue = jobProfile.GetType() .GetProperty(PropertyName) ?.GetValue(jobProfile, null) as string; } return(propertyValue); }
public void When_Constructed_Then_AllMembersShouldBeInitialized() { // Arrange. // Act. var sut = new JobProfile(); // Assert. sut.Should().NotBeNull(); sut.Title.Should().BeEmpty(); sut.Description.Should().BeEmpty(); sut.Skills.Should().NotBeNull(); sut.Skills.Should().HaveCount(0); sut.Url.Should().BeEmpty(); }
public void SetupTests() { _mockLogger = new Mock <ILogger <JobsController> >(); _mockService = new Mock <IJobService>(); _mockJobTypesService = new Mock <IJobTypesService>(); _mockJobBenefitsService = new Mock <IJobBenefitsService>(); var myProfile = new JobProfile(); var configuration = new MapperConfiguration(cfg => cfg.AddProfile(myProfile)); mapper = new Mapper(configuration); _mockJobTypesService.Setup(x => x.GetJobTypes()).ReturnsAsync(new List <JobType> { new JobType { Description = "Job Type 1" } }); }
private async Task LoadSharedKeyAndQrCodeUriAsync(JobProfile user) { // Load the authenticator key & QR code URI to display on the form var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); if (string.IsNullOrEmpty(unformattedKey)) { await _userManager.ResetAuthenticatorKeyAsync(user); unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user); } SharedKey = FormatKey(unformattedKey); var email = await _userManager.GetEmailAsync(user); AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey); }
private List <JobProfile> GetDisplayedJobProfiles(HtmlDocument htmlDom) { List <JobProfile> displayedJobProfiles = new List <JobProfile>(); foreach (HtmlNode n in htmlDom.DocumentNode.SelectNodes("//li")) { JobProfile p = new JobProfile { Title = n.Descendants("a").FirstOrDefault().InnerText, AlternativeTitle = n.Descendants("h3").FirstOrDefault()?.InnerText, Overview = n.Descendants("p").FirstOrDefault().InnerText }; displayedJobProfiles.Add(p); } return(displayedJobProfiles); }
private static void ValidateJobProfile(JobProfile jobProfile, JobParameterBag jobInput) { if (jobProfile.Name != JOB_PROFILE_CONFORM_WORKFLOW && jobProfile.Name != JOB_PROFILE_AI_WORKFLOW) { throw new Exception("JobProfile '" + jobProfile.Name + "' is not supported"); } if (jobProfile.InputParameters != null) { foreach (var parameter in jobProfile.InputParameters) { if (!jobInput.HasProperty(parameter.ParameterName)) { throw new Exception("jobInput misses required input parameter '" + parameter.ParameterName + "'"); } } } }
public async Task GetSalaryRangeAsyncTestAsync(bool isPublishing) { var fakeJobProfileRepo = A.Fake <IJobProfileRepository>(); var fakeJobProfileCategoryRepo = A.Fake <IJobProfileCategoryRepository>(); var salaryService = A.Fake <ISalaryService>(); var salaryCalculator = A.Fake <ISalaryCalculator>(); var fakeLogger = A.Fake <IApplicationLogger>(); var dummyJobProfileIndex = A.Dummy <JobProfileIndex>(); var dummyJobProfile = new JobProfile { SOCCode = nameof(JobProfile.SOCCode) }; var dummySalary = new JobProfileSalary { Deciles = new Dictionary <int, decimal> { { 10, 100 }, { 20, 200 } } }; A.CallTo(() => fakeJobProfileRepo.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => fakeJobProfileRepo.GetByUrlNameForSearchIndex(A <string> ._, A <bool> ._)).Returns(dummyJobProfile); A.CallTo(() => salaryService.GetSalaryBySocAsync(A <string> ._)).Returns(Task.FromResult(dummySalary)); A.CallTo(() => salaryCalculator.GetStarterSalary(A <JobProfileSalary> ._)).Returns(1000); A.CallTo(() => salaryCalculator.GetExperiencedSalary(A <JobProfileSalary> ._)).Returns(2000); var enhancer = new JobProfileIndexEnhancer(fakeJobProfileRepo, fakeJobProfileCategoryRepo, salaryService, salaryCalculator, fakeLogger); enhancer.Initialise(dummyJobProfileIndex, isPublishing); var result = await enhancer.PopulateSalary("1", "2"); result.StarterSalary.Should().Be(1000); result.SalaryExperienced.Should().Be(2000); A.CallTo(() => fakeJobProfileRepo.GetByUrlNameForSearchIndex(A <string> ._, isPublishing)).MustHaveHappened(); A.CallTo(() => fakeJobProfileRepo.GetByUrlName(A <string> ._)).MustNotHaveHappened(); A.CallTo(() => salaryService.GetSalaryBySocAsync(A <string> ._)).MustHaveHappened(); A.CallTo(() => salaryCalculator.GetStarterSalary(A <JobProfileSalary> ._)).MustHaveHappened(); A.CallTo(() => salaryCalculator.GetExperiencedSalary(A <JobProfileSalary> ._)).MustHaveHappened(); }
private static void ValidateJobProfile(JobProfile jobProfile, JobParameterBag jobInput) { if (jobProfile.Name != JOB_PROFILE_TRANSCRIBE_AUDIO && jobProfile.Name != JOB_PROFILE_TRANSLATE_TEXT && jobProfile.Name != JOB_PROFILE_DETECT_CELEBRITIES) { throw new Exception("JobProfile '" + jobProfile.Name + "' is not supported"); } if (jobProfile.InputParameters != null) { foreach (var parameter in jobProfile.InputParameters) { if (!jobInput.HasProperty(parameter.ParameterName)) { throw new Exception("jobInput misses required input parameter '" + parameter.ParameterName + "'"); } } } }
private void SetUpDependeciesAndCall(bool validJobProfile, bool isContentPreviewMode) { ////Set up comman call dummyJobProfile = validJobProfile ? new JobProfile { AlternativeTitle = nameof(JobProfile.AlternativeTitle), SalaryRange = nameof(JobProfile.SalaryRange), Overview = nameof(JobProfile.Overview), Title = nameof(JobProfile.Title), MaximumHours = 40, MinimumHours = 10 } : null; // Set up calls A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => webAppContextFake.IsContentAuthoringSite).Returns(isContentPreviewMode); A.CallTo(() => sitefinityPage.GetDefaultJobProfileToUse(A <string> ._)) .ReturnsLazily((string defaultProfile) => defaultProfile); }
public IActionResult SetJobProfile(JobProfile type) { try { if (type == 0) { type = JobProfile.Applicant; } UserPreferencesViewModel userPreferences = UserPreferencesAppService.GetByUserId(CurrentUserId); if (userPreferences == null) { userPreferences = new UserPreferencesViewModel { UserId = CurrentUserId }; } userPreferences.JobProfile = type; OperationResultVo <Guid> saveResult = UserPreferencesAppService.Save(CurrentUserId, userPreferences); if (!saveResult.Success) { return(Json(new OperationResultVo(false, saveResult.Message))); } SetSessionValue(SessionValues.JobProfile, userPreferences.JobProfile.ToString()); string url = Url.Action("Index", "JobPosition", new { area = "Work" }); return(Json(new OperationResultRedirectVo(url, SharedLocalizer["Job Profile set successfully!"]))); } catch (Exception ex) { return(Json(new OperationResultVo(ex.Message))); } }
public async Task SaveJobProfileAsync(JobProfile jobProfile) { var result = await jobprofileCollection.FindAsync(doc => doc.UrlName.Equals(jobProfile.UrlName)).Result.FirstOrDefaultAsync(); if (result == null) { await jobprofileCollection.InsertOneAsync(jobProfile); } else { var filter = Builders <JobProfile> .Filter.Where(jp => jp.UrlName.Equals(jobProfile.UrlName)); var updateAbilities = Builders <JobProfile> .Update.Set(jp => jp.AbilityList, jobProfile.AbilityList); var updateSkills = Builders <JobProfile> .Update.Set(jp => jp.SkillList, jobProfile.SkillList); var updateTasks = Builders <JobProfile> .Update.Set(jp => jp.TaskItems, jobProfile.TaskItems); var combinedDefinitions = Builders <JobProfile> .Update.Combine(updateTasks, updateAbilities, updateSkills); await jobprofileCollection.UpdateOneAsync(filter, combinedDefinitions); } }
//如果有邀请则不可更改 //检查是不是本employer的JobProfile // public async Task <IActionResult> EditJobProfileAction( JobProfile jobProfile, IEnumerable <JobProfileSkill> jobProfileSkill, IEnumerable <JobProfileComplusoryWorkDay> jobProfileComplusoryWorkDay, IEnumerable <JobProfileRequiredLocation> jobProfileRequiredLocation, IEnumerable <JobProfileRequiredSchool> jobProfileRequiredSchool ) { var user = await _userManager.GetUserAsync(User); var field = new Field { }; //0. Validate input data //0.1 //Validate previous profile EmployerJobProfile preProfile = null; if (jobProfile.ProfileId != 0) { try { preProfile = _context .EmployerJobProfiles .First(a => a.Id == jobProfile.ProfileId); } catch (System.InvalidOperationException ex) { //No Such profile return(RedirectToAction("EditJobProfile")); } //Try to get others profile if (user.Id != preProfile.EmployerId) { return(RedirectToAction("EditJobProfile")); } } //0.2 //If does not have skills var newSkills = new List <EmployerSkill>(); foreach (var skill in jobProfileSkill) { try { var newSkillId = _context.Skills.First(a => a.NormalizedName == skill.SkillName.ToUpper()).Id; newSkills.Add(new EmployerSkill { SkillId = newSkillId, Required = skill.SkillRequired }); } catch (InvalidOperationException ex) { continue; } } if (!newSkills.Any()) { return(RedirectToAction("EditJobProfile")); } //0.3 //Validate field try { field = _context.Fields.First(a => a.Name == jobProfile.FieldName); } catch (InvalidOperationException ex) { return(RedirectToAction("EditJobProfile")); } //0.4 //Validate Title Validate Description //@TODO //1. Insert Or Update new profile //1.1 //Set up newer version profile var profile = new EmployerJobProfile { EmployerId = user.Id, //需要检查之前 CreateDateTime = DateTime.Now, LastUpdateDateTime = DateTime.Now, FieldId = field.Id, Title = jobProfile.Title, Description = jobProfile.Description, RequireJobExperience = jobProfile.RequireJobExperience, MaxDayForAWeek = jobProfile.MaxDay, MinDayForAWeek = jobProfile.MinDay, Salary = jobProfile.Salary }; //1.2.1 //If does not have pre profile if (preProfile == null) { preProfile = profile; _context.EmployerJobProfiles.Add(preProfile); } //1.2.2. //If has pre profile else { preProfile.LastUpdateDateTime = DateTime.Now; preProfile.FieldId = field.Id; preProfile.Title = jobProfile.Title; preProfile.Description = jobProfile.Description; preProfile.RequireJobExperience = jobProfile.RequireJobExperience; preProfile.MaxDayForAWeek = jobProfile.MaxDay; preProfile.MinDayForAWeek = jobProfile.MinDay; preProfile.Salary = jobProfile.Salary; _context.EmployerJobProfiles.Update(preProfile); } _context.SaveChanges(); //2. Update Skills //2.1 //Try to find & remove previous Skills try { var preSkills = _context.EmployerSkills.Where(a => a.EmployerJobProfileId == jobProfile.ProfileId).ToList(); _context.EmployerSkills.RemoveRange(preSkills); _context.SaveChanges(); } catch (System.InvalidOperationException ex) { } //2.2 //Insert new skills foreach (var skill in newSkills) { skill.EmployerJobProfileId = preProfile.Id; } _context.EmployerSkills.AddRange(newSkills); _context.SaveChanges(); //3. Update Compulsory work Day //3.1 //Try to find & remove previous Compulsory work Day try { var preDays = _context.EmployerComplusoryWorkDays.Where(a => a.EmployerJobProfileId == jobProfile.ProfileId).ToList(); _context.EmployerComplusoryWorkDays.RemoveRange(preDays); _context.SaveChanges(); } catch (System.InvalidOperationException ex) { } //3.2 //Add new Compulsory work Day var newDays = new List <EmployerComplusoryWorkDay>(); foreach (var day in jobProfileComplusoryWorkDay) { newDays.Add(new EmployerComplusoryWorkDay { EmployerJobProfileId = preProfile.Id, Day = day.Day }); } if (newDays.Any()) { _context.EmployerComplusoryWorkDays.AddRange(newDays); _context.SaveChanges(); } //4. Update Location //4.1 //Try to find & remove previous Location try { var preLocation = _context.EmployerWorkLocations.Where(a => a.EmployerJobProfileId == jobProfile.ProfileId).ToList(); _context.EmployerWorkLocations.RemoveRange(preLocation); _context.SaveChanges(); } catch (System.InvalidOperationException ex) { } //4.2 //Add new Location var newLocations = new List <EmployerRequiredWorkLocation>(); foreach (var location in jobProfileRequiredLocation) { try { var suburbId = _context.Suburbs.First( a => a.Name == location.LocationName && a.PostCode == location.PostCode).Id; newLocations.Add(new EmployerRequiredWorkLocation { EmployerJobProfileId = preProfile.Id, SuburbId = suburbId }); } catch (InvalidOperationException ex) { } } if (newLocations.Any()) { _context.EmployerWorkLocations.AddRange(newLocations); _context.SaveChanges(); } //5. Update School //5.1 //Try to find & remove previous School try { var preSchools = _context.EmployerRequiredSchools.Where(a => a.EmployerJobProfileId == jobProfile.ProfileId).ToList(); _context.EmployerRequiredSchools.RemoveRange(preSchools); _context.SaveChanges(); } catch (System.InvalidOperationException ex) { } //5.2 //Add new School var newSchools = new List <EmployerRequiredSchool>(); foreach (var school in jobProfileRequiredSchool) { try { var schoolId = _context.Schools.First( a => a.SchoolName == school.SchoolName && a.Suburb.Name == school.Campus).Id; newSchools.Add(new EmployerRequiredSchool { EmployerJobProfileId = preProfile.Id, SchoolId = schoolId }); } catch (InvalidOperationException ex) { } } if (newLocations.Any()) { _context.EmployerRequiredSchools.AddRange(newSchools); _context.SaveChanges(); } return(RedirectToAction("EditJobProfile")); }
public void IndexTest(bool inContentAuthoringSite, bool isContentPreviewMode, int maxCourses, string courseKeywords) { //Setup the fakes and dummies var repositoryFake = A.Fake <IJobProfileRepository>(ops => ops.Strict()); var coursesearchFake = A.Fake <ICourseSearchService>(ops => ops.Strict()); var loggerFake = A.Fake <IApplicationLogger>(); var webAppContextFake = A.Fake <IWebAppContext>(ops => ops.Strict()); var sitefinityPage = A.Fake <ISitefinityPage>(ops => ops.Strict()); var dummyJobProfile = new JobProfile { AlternativeTitle = $"dummy {nameof(JobProfile.AlternativeTitle)}", WidgetContentTitle = $"dummy {nameof(JobProfile.Title)}", SalaryRange = $"dummy {nameof(JobProfile.SalaryRange)}", Overview = $"dummy {nameof(JobProfile.Overview)}", Title = $"dummy {nameof(JobProfile.Title)}", CourseKeywords = courseKeywords }; var dummyCourses = new EnumerableQuery <Course>(new List <Course> { new Course { Title = $"dummy {nameof(Course.Title)}", Location = $"dummy {nameof(Course.Location)}", CourseId = $"dummy {nameof(Course.CourseId)}", StartDate = default(DateTime), ProviderName = $"dummy {nameof(Course.ProviderName)}" }, new Course { Title = $"dummy {nameof(Course.Title)}", Location = $"dummy {nameof(Course.Location)}", CourseId = $"dummy {nameof(Course.CourseId)}", StartDate = default(DateTime), ProviderName = $"dummy {nameof(Course.ProviderName)}" } }); // Set up calls A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => webAppContextFake.IsContentAuthoringSite).Returns(inContentAuthoringSite); A.CallTo(() => webAppContextFake.IsContentPreviewMode).Returns(isContentPreviewMode); A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => sitefinityPage.GetDefaultJobProfileToUse(A <string> ._)).ReturnsLazily((string defaultProfile) => defaultProfile); A.CallTo(() => coursesearchFake.GetCoursesAsync(A <string> ._)).Returns(dummyCourses); //Instantiate & Act var jobProfileCourseOpportunityController = new JobProfileCourseOpportunityController(coursesearchFake, new AsyncHelper(), webAppContextFake, repositoryFake, loggerFake, sitefinityPage) { CoursesSectionTitle = nameof(JobProfileCourseOpportunityController.CoursesSectionTitle), TrainingCoursesLocationDetails = nameof(JobProfileCourseOpportunityController.TrainingCoursesLocationDetails), TrainingCoursesText = nameof(JobProfileCourseOpportunityController.TrainingCoursesText), NoTrainingCoursesText = nameof(JobProfileCourseOpportunityController.NoTrainingCoursesText), MaxTrainingCoursesMaxCount = maxCourses, MainSectionTitle = nameof(JobProfileCourseOpportunityController.MainSectionTitle) }; //Act var indexMethodCall = jobProfileCourseOpportunityController.WithCallTo(c => c.Index()); //Assert if (inContentAuthoringSite) { indexMethodCall .ShouldRenderDefaultView() .WithModel <JobProfileCourseSearchViewModel>(vm => { vm.TrainingCoursesText.Should().BeEquivalentTo(jobProfileCourseOpportunityController .TrainingCoursesText); vm.CoursesLocationDetails.Should().Be(jobProfileCourseOpportunityController.TrainingCoursesLocationDetails); vm.NoTrainingCoursesText.Should().Be(jobProfileCourseOpportunityController.NoTrainingCoursesText); vm.CoursesSectionTitle.Should().Be(jobProfileCourseOpportunityController.CoursesSectionTitle); vm.Courses.Count().Should() .BeLessOrEqualTo(jobProfileCourseOpportunityController.MaxTrainingCoursesMaxCount); }) .AndNoModelErrors(); if (!isContentPreviewMode) { A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).MustHaveHappened(); } else { A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).MustHaveHappened(); } if (!string.IsNullOrEmpty(courseKeywords)) { A.CallTo(() => coursesearchFake.GetCoursesAsync(A <string> ._)).MustHaveHappened(); } } else { indexMethodCall.ShouldRedirectTo("\\"); } }
public void GetRelatedFieldsWithUrlTest(bool isPublishing) { var fakeJobProfileRepo = A.Fake <IJobProfileRepository>(); var fakeJobProfileCategoryRepo = A.Fake <IJobProfileCategoryRepository>(); var salaryService = A.Fake <ISalaryService>(); var salaryCalculator = A.Fake <ISalaryCalculator>(); var fakeLogger = A.Fake <IApplicationLogger>(); var dummyJobProfileIndex = A.Dummy <JobProfileIndex>(); var dummyJobProfile = new JobProfile { RelatedInterests = new[] { "1|one", "2|two" }.AsQueryable(), RelatedEnablers = new[] { "1|one", "2|two" }.AsQueryable(), RelatedEntryQualifications = new[] { "1|one", "2|two" }.AsQueryable(), RelatedTrainingRoutes = new[] { "1|one", "2|two" }.AsQueryable(), RelatedPreferredTaskTypes = new[] { "1|one", "2|two" }.AsQueryable(), RelatedJobAreas = new[] { "1|one", "2|two" }.AsQueryable(), RelatedSkills = new List <string>() { "1|one", "2|two" } }; var dummyCategories = new List <JobProfileCategory> { new JobProfileCategory { Title = "one", Url = "url1" }, new JobProfileCategory { Title = "two", Url = "url2" } }; var expectedCategories = dummyCategories.Select(c => $"{c.Title}|{c.Url}"); A.CallTo(() => fakeJobProfileRepo.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => fakeJobProfileRepo.GetByUrlNameForSearchIndex(A <string> ._, A <bool> ._)).Returns(dummyJobProfile); A.CallTo(() => fakeJobProfileCategoryRepo.GetByIds(A <IList <Guid> > ._)).Returns(dummyCategories); var enhancer = new JobProfileIndexEnhancer(fakeJobProfileRepo, fakeJobProfileCategoryRepo, salaryService, salaryCalculator, fakeLogger); enhancer.Initialise(dummyJobProfileIndex, isPublishing); enhancer.PopulateRelatedFieldsWithUrl(); A.CallTo(() => fakeJobProfileRepo.GetByUrlNameForSearchIndex(A <string> ._, isPublishing)).MustHaveHappened(); A.CallTo(() => fakeJobProfileRepo.GetByUrlName(A <string> ._)).MustNotHaveHappened(); A.CallTo(() => fakeJobProfileCategoryRepo.GetByIds(A <IList <Guid> > ._)).MustHaveHappened(); dummyJobProfileIndex.JobProfileCategoriesWithUrl.Should().BeEquivalentTo(expectedCategories); dummyJobProfileIndex.Interests.Should().BeEquivalentTo(dummyJobProfile.RelatedInterests); dummyJobProfileIndex.Enablers.Should().BeEquivalentTo(dummyJobProfile.RelatedEnablers); dummyJobProfileIndex.EntryQualifications.Should().BeEquivalentTo(dummyJobProfile.RelatedEntryQualifications); dummyJobProfileIndex.TrainingRoutes.Should().BeEquivalentTo(dummyJobProfile.RelatedTrainingRoutes); dummyJobProfileIndex.JobAreas.Should().BeEquivalentTo(dummyJobProfile.RelatedJobAreas); dummyJobProfileIndex.PreferredTaskTypes.Should().BeEquivalentTo(dummyJobProfile.RelatedPreferredTaskTypes); }
protected void SayHello(JobProfile jobProfile, Enum FavoritWorkArea) { Debug.WriteLine(string.Format("Hi! My name is {0}, I am a {1} {2} with {3} years of experiense.I love to work with {4}!", Name, Female ? "female" : "male", jobProfile, YearsOfExperience, FavoritWorkArea)); }
public IActionResult Put(string id, [FromBody] JobProfile job) { var updatedjob = _jobService.Update(id, job); return(Ok(updatedjob)); }
public IActionResult Post([FromBody] JobProfile job) { var newjob = _jobService.Create(job); return(Ok(newjob)); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var userid = Guid.NewGuid().ToString(); var user = new JobProfile { Id = userid, FullName = Input.FullName, Role = Roles.Employer, Organisation = Input.Organisation, UserName = Input.Email, Email = Input.Email, Bio = Input.Bio, Sector = Input.Sector, EmployeesCount = Input.EmployeesCount, Resume = new JobResume { Id = Guid.NewGuid().ToString(), UserId = userid } }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var roleExists = await _roleManager.RoleExistsAsync("Employer"); if (!roleExists) { await _roleManager.CreateAsync(new IdentityRole("Employer")); } await _userManager.AddToRoleAsync(user, "Employer"); if (_userManager.Options.SignIn.RequireConfirmedAccount) { var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); return(RedirectToPage("RegisterConfirmation", new { email = Input.Email })); } else { await _signInManager.SignInAsync(user, isPersistent : true); return(LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } return(Page()); }
/// <summary> /// Get job profiles async /// </summary> /// <param name="jobProfile"></param> /// <returns></returns> public async Task <Response <IEnumerable <JobProfile> > > GetJobProfilesAsync(JobProfile jobProfile) { IEnumerable <JobProfile> jobProfiles = await _chatbotDataContext.JobProfile.ToListAsync(); return(Response.Ok(jobProfiles)); }
public void IndexTest(int testIndex, bool inContentAuthoringSite, string socCode, bool isContentPreviewMode, int maxApp) { //Setup the fakes and dummies var unused = testIndex; var repositoryFake = A.Fake <IJobProfileRepository>(ops => ops.Strict()); var socRepositoryFake = A.Fake <IJobProfileSocCodeRepository>(ops => ops.Strict()); var loggerFake = A.Fake <IApplicationLogger>(); var webAppContextFake = A.Fake <IWebAppContext>(ops => ops.Strict()); var sitefinityPage = A.Fake <ISitefinityPage>(ops => ops.Strict()); var dummyJobProfile = new JobProfile { AlternativeTitle = $"dummy {nameof(JobProfile.AlternativeTitle)}", WidgetContentTitle = $"dummy {nameof(JobProfile.Title)}", SalaryRange = $"dummy {nameof(JobProfile.SalaryRange)}", Overview = $"dummy {nameof(JobProfile.Overview)}", Title = $"dummy {nameof(JobProfile.Title)}", SOCCode = socCode }; var dummyApprenticeships = new EnumerableQuery <ApprenticeVacancy>(new List <ApprenticeVacancy> { new ApprenticeVacancy { Title = $"dummy {nameof(ApprenticeVacancy.Title)}", Location = $"dummy {nameof(ApprenticeVacancy.Location)}", URL = new Uri($"/dummy{nameof(ApprenticeVacancy.URL)}", UriKind.RelativeOrAbsolute), VacancyId = $"dummy {nameof(ApprenticeVacancy.VacancyId)}", WageAmount = "£3", WageUnitType = $"dummy {nameof(ApprenticeVacancy.WageUnitType)}" }, new ApprenticeVacancy { Title = $"dummy {nameof(ApprenticeVacancy.Title)}", Location = $"dummy {nameof(ApprenticeVacancy.Location)}", URL = new Uri($"/dummy{nameof(ApprenticeVacancy.URL)}", UriKind.RelativeOrAbsolute), VacancyId = $"dummy {nameof(ApprenticeVacancy.VacancyId)}", WageAmount = "£3", WageUnitType = $"dummy {nameof(ApprenticeVacancy.WageUnitType)}" } }); // Set up calls A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => socRepositoryFake.GetApprenticeVacanciesBySocCode(A <string> ._)).Returns(dummyApprenticeships); A.CallTo(() => webAppContextFake.IsContentAuthoringSite).Returns(inContentAuthoringSite); A.CallTo(() => webAppContextFake.IsContentPreviewMode).Returns(isContentPreviewMode); A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).Returns(dummyJobProfile); A.CallTo(() => sitefinityPage.GetDefaultJobProfileToUse(A <string> ._)) .ReturnsLazily((string defaultProfile) => defaultProfile); //Instantiate & Act var jobProfileApprenticeshipsController = new JobProfileApprenticeshipsController(repositoryFake, webAppContextFake, socRepositoryFake, loggerFake, sitefinityPage) { ApprenticeshipText = nameof(JobProfileApprenticeshipsController.ApprenticeshipText), NoVacancyText = nameof(JobProfileApprenticeshipsController.NoVacancyText), ApprenticeshipLocationDetails = nameof(JobProfileApprenticeshipsController.ApprenticeshipLocationDetails), ApprenticeshipSectionTitle = nameof(JobProfileApprenticeshipsController.ApprenticeshipSectionTitle), ApprenticeshipWageTitle = nameof(JobProfileApprenticeshipsController.ApprenticeshipWageTitle), MainSectionTitle = nameof(JobProfileApprenticeshipsController.MainSectionTitle), MaxApprenticeshipCount = maxApp }; //Act var indexMethodCall = jobProfileApprenticeshipsController.WithCallTo(c => c.Index()); //Assert if (inContentAuthoringSite) { indexMethodCall .ShouldRenderDefaultView() .WithModel <JobProfileApprenticeshipViewModel>(vm => { vm.MainSectionTitle.Should().BeEquivalentTo(jobProfileApprenticeshipsController .MainSectionTitle); vm.ApprenticeshipText.Should().BeEquivalentTo(jobProfileApprenticeshipsController .ApprenticeshipText); vm.NoVacancyText.Should().BeEquivalentTo(jobProfileApprenticeshipsController .NoVacancyText); vm.WageTitle.Should().Be(jobProfileApprenticeshipsController .ApprenticeshipWageTitle); vm.LocationDetails.Should().Be(jobProfileApprenticeshipsController .ApprenticeshipLocationDetails); vm.NoVacancyText.Should().Be(jobProfileApprenticeshipsController.NoVacancyText); vm.ApprenticeshipSectionTitle.Should().Be(jobProfileApprenticeshipsController .ApprenticeshipSectionTitle); }) .AndNoModelErrors(); if (!isContentPreviewMode) { A.CallTo(() => repositoryFake.GetByUrlName(A <string> ._)).MustHaveHappened(); } else { A.CallTo(() => repositoryFake.GetByUrlNameForPreview(A <string> ._)).MustHaveHappened(); } if (!string.IsNullOrWhiteSpace(socCode) && !isContentPreviewMode) { indexMethodCall .ShouldRenderDefaultView() .WithModel <JobProfileApprenticeshipViewModel>(vm => { vm.ApprenticeVacancies.Count().Should() .BeLessOrEqualTo(jobProfileApprenticeshipsController.MaxApprenticeshipCount); vm.ApprenticeVacancies.Should().BeEquivalentTo(dummyApprenticeships); }); A.CallTo(() => socRepositoryFake.GetApprenticeVacanciesBySocCode(A <string> ._)).MustHaveHappened(); } } else { indexMethodCall.ShouldRedirectTo("\\"); } }
public void CreateJobProfile(JobProfile jobProfileModel) { _jobProfileRepository = new JobProfileRepository(_dbContext); _jobProfileRepository.CreateJobProfile(jobProfileModel); _unitOfWork.Save(); }