Пример #1
0
        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);
            //}
        }
Пример #3
0
        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);
            }
        }
Пример #4
0
        public async Task <bool> PostJobProfile([FromBody] JobProfile jobProfile)
        {
            if (jobProfile != null)
            {
                await repository.UpdateJobProfileAsync(jobProfile);
            }

            return(true);
        }
Пример #5
0
        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();
        }
Пример #6
0
        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);
        }
Пример #9
0
        /// <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"
                }
            });
        }
Пример #12
0
        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);
        }
Пример #13
0
        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();
        }
Пример #16
0
        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 + "'");
                    }
                }
            }
        }
Пример #17
0
        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);
        }
Пример #18
0
        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"));
        }
Пример #21
0
        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);
        }
Пример #23
0
 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));
 }
Пример #24
0
        public IActionResult Put(string id, [FromBody] JobProfile job)
        {
            var updatedjob = _jobService.Update(id, job);

            return(Ok(updatedjob));
        }
Пример #25
0
        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());
        }
Пример #27
0
        /// <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("\\");
            }
        }
Пример #29
0
 public void CreateJobProfile(JobProfile jobProfileModel)
 {
     _jobProfileRepository = new JobProfileRepository(_dbContext);
     _jobProfileRepository.CreateJobProfile(jobProfileModel);
     _unitOfWork.Save();
 }