示例#1
0
        protected JobAd AssertJobAd(Guid jobPosterId)
        {
            var jobAds = _jobAdsQuery.GetJobAds <JobAd>(_jobAdsQuery.GetJobAdIds(jobPosterId, JobAdStatus.Open));

            Assert.AreEqual(1, jobAds.Count);
            Assert.AreEqual(jobAds[0].Integration.IntegratorReferenceId, "RefABCD/1235");
            Assert.AreEqual(jobAds[0].Integration.ExternalReferenceId, "RefABCD");
            return(jobAds[0]);
        }
示例#2
0
        private JobAdEntry Post(IEmployer employer)
        {
            // Apply for the job.

            LogIn(employer);
            Get(_newJobAdUrl);
            CreateJobAd(employer.EmailAddress.Address);
            _previewButton.Click();

            _publishButton.Click();
            var jobAd = _jobAdsQuery.GetJobAds <JobAdEntry>(_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Open))[0];

            LogOut();
            return(jobAd);
        }
示例#3
0
        public void TestLongSummary()
        {
            var integratorUser = _integrationCommand.CreateTestIntegratorUser();
            var jobPoster      = _employerAccountsCommand.CreateTestEmployer(0, _organisationsCommand.CreateTestOrganisation(0));

            var task = CreateTask(integratorUser, jobPoster);

            task.ExecuteTask();

            // Check the job ad is created.

            var ids = _jobAdsQuery.GetJobAdIds(jobPoster.Id, JobAdStatus.Open);

            Assert.AreEqual(1, ids.Count);

            var jobAd = _jobAdsQuery.GetJobAd <JobAd>(ids[0]);

            Assert.AreEqual(300, jobAd.Description.Summary.Length);
            Assert.AreEqual("This is a very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very very ve...", jobAd.Description.Summary);
        }
示例#4
0
        public ActionResult JobAds()
        {
            var employer = CurrentEmployer;

            if (employer == null)
            {
                return(Json(new JsonJobAdsModel {
                    JobAds = new List <JobAdApplicantsModel>()
                }));
            }

            // Get the open and closed job ads.

            var jobAdIds = _jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Open).Concat(_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Closed));
            var jobAds   = _jobAdsQuery.GetJobAds <JobAdEntry>(jobAdIds);

            // Get the counts for each job ad through each applicant list.

            var applicantLists = (from j in jobAds select _jobAdApplicantsQuery.GetApplicantList(employer, j)).ToList();
            var counts         = _jobAdApplicantsQuery.GetApplicantCounts(employer, from a in applicantLists where a != null select a);

            return(Json(new JsonJobAdsModel
            {
                JobAds = (from m in
                          (from j in jobAds
                           orderby j.Status, j.CreatedTime descending
                           select new JobAdApplicantsModel
                {
                    Id = j.Id,
                    Title = string.IsNullOrEmpty(j.Integration.ExternalReferenceId) ? j.Title : j.Integration.ExternalReferenceId + ": " + j.Title,
                    Status = j.Status.ToString(),
                    ApplicantCounts = new ApplicantCountsModel
                    {
                        ShortListed = j.GetShortlistedCount(applicantLists, counts),
                        New = j.GetNewCount(applicantLists, counts),
                        Rejected = j.GetRejectedCount(applicantLists, counts)
                    }
                })
                          select m).ToList(),
            }));
        }
示例#5
0
        public ActionResult JobAds()
        {
            var employer = CurrentEmployer;

            if (employer == null)
            {
                return(View());
            }

            // Get the jobAds and their counts.

            var jobAdIds = _jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Open).Concat(_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Closed));
            var jobAds   = _jobAdsQuery.GetJobAds <JobAd>(jobAdIds);

            // Get the counts for each job ad through each applicant list.

            var applicantLists  = (from a in jobAds select _jobAdApplicantsQuery.GetApplicantList(employer, a)).ToList();
            var counts          = _jobAdApplicantsQuery.GetApplicantCounts(employer, from a in applicantLists where a != null select a);
            var applicantCounts = jobAds.ToDictionary(
                jobAd => jobAd.Id,
                jobAd => new ApplicantCountsModel
            {
                New         = jobAd.GetNewCount(applicantLists, counts),
                Rejected    = jobAd.GetRejectedCount(applicantLists, counts),
                ShortListed = jobAd.GetShortlistedCount(applicantLists, counts)
            });

            // Convert counts to jobAdData.

            return(View(new JobAdsModel
            {
                OpenJobAds = (from j in jobAds where j.Status == JobAdStatus.Open select j).ToList(),
                ClosedJobAds = (from j in jobAds where j.Status == JobAdStatus.Closed select j).ToList(),
                ApplicantCounts = applicantCounts
            }));
        }
示例#6
0
        private void InitModeRelatedControls()
        {
            var currentMode = GetCurrentMode();

            _currentJobAdsIds = _jobAdsQuery.GetJobAdIds(LoggedInUserId.Value, currentMode);
        }
示例#7
0
        // The logic here gets somewhat complex:
        // If no employer is logged in show a placeholder item that takes them to LoginRequired.aspx
        // If an employer is logged in and they have job ads show them (of course)
        // If they have no job ads and no job ad credit show a placeholder that takes them to the "pricing" page
        // If they have no job ads, but have job ad credits just don't show anything (return null)
        public static ListItem[] GetJobAdItems(Employer employer, Guid?excludeJobAdId, string headingText)
        {
            // Add the header item

            headingText = headingText ?? "Add to jobs";

            var addToItems = new List <ListItem> {
                new ListItem(headingText, BlankItemValue + " - add")
            };

            if (employer == null)
            {
                AddJobAdItemsForNoJobAds(addToItems, false);
                return(addToItems.ToArray());
            }

            // For job ads the ListItem value is the job ad ID, since there may not be a candidate list yet - it's created
            // when the first candidate is added.

            var jobAdIds = (_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Open).Concat(_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Closed))).ToList();

            if (jobAdIds.Count == 0 || (excludeJobAdId.HasValue && jobAdIds.Count == 1 && jobAdIds[0] == excludeJobAdId))
            {
                var quantity = _employerCreditsQuery.GetEffectiveActiveAllocation <JobAdCredit>(employer).RemainingQuantity;
                if (quantity == null || quantity > 0)
                {
                    return(null);
                }

                AddJobAdItemsForNoJobAds(addToItems, true);
                return(addToItems.ToArray());
            }

            bool closedHeadingAdded = false;

            if (jobAdIds.Count != 0)
            {
                var jobAds = _jobAdsQuery.GetJobAds <JobAdEntry>(jobAdIds);
                if (jobAds[0].Status == JobAdStatus.Open)
                {
                    addToItems.Add(new ListItem("----- Active jobs -----", BlankItemValue + " - active"));
                }

                foreach (var jobAd in jobAds)
                {
                    if (!excludeJobAdId.HasValue || jobAd.Id != excludeJobAdId.Value)
                    {
                        if (!closedHeadingAdded && jobAd.Status == JobAdStatus.Closed)
                        {
                            // End of Active job ads, all following ads are Closed.

                            addToItems.Add(new ListItem("----- Closed jobs -----", BlankItemValue + " - closed"));
                            closedHeadingAdded = true;
                        }

                        addToItems.Add(new ListItem("  " + jobAd.Integration.ExternalReferenceId + " - " + jobAd.Title, jobAd.Id.ToString("n")));
                    }
                }
            }

            return(addToItems.ToArray());
        }
示例#8
0
        public void TestNewJobAd()
        {
            var member = CreateMember();
            var folder = _jobAdFoldersQuery.GetFolders(member)[0];

            var searchQuery = new JobAdSearchQuery {
                AdTitle = Expression.Parse(Title)
            };
            var sortQuery = new JobAdSortQuery();

            // Do some searches.

            var results = _searchService1.Search(null, searchQuery);

            Assert.AreEqual(0, results.JobAdIds.Count);

            results = _searchService2.Search(null, searchQuery);
            Assert.AreEqual(0, results.JobAdIds.Count);

            results = _sortService1.SortFolder(member.Id, folder.Id, sortQuery);
            Assert.AreEqual(0, results.JobAdIds.Count);

            results = _sortService2.SortFolder(member.Id, folder.Id, sortQuery);
            Assert.AreEqual(0, results.JobAdIds.Count);

            // Add a job ad.

            var employer = CreateEmployer();

            LogIn(employer);
            Get(_newJobAdUrl);
            CreateJobAd(employer.EmailAddress.Address);
            _previewButton.Click();
            _publishButton.Click();
            LogOut();

            // Add it to the folder.

            var jobAd = _jobAdsQuery.GetJobAds <JobAdEntry>(_jobAdsQuery.GetJobAdIds(employer.Id, JobAdStatus.Open))[0];

            _memberJobAdListsCommand.AddJobAdToFolder(member, folder, jobAd.Id);

            // Do some searches again.

            results = _searchService1.Search(null, searchQuery);
            Assert.AreEqual(1, results.JobAdIds.Count);
            Assert.AreEqual(jobAd.Id, results.JobAdIds[0]);

            results = _sortService1.SortFolder(member.Id, folder.Id, sortQuery);
            Assert.AreEqual(1, results.JobAdIds.Count);
            Assert.AreEqual(jobAd.Id, results.JobAdIds[0]);

            // Wait for the polling to kick in.

            Thread.Sleep(3 * MonitorInterval * 1000);
            results = _searchService2.Search(null, searchQuery);
            Assert.AreEqual(1, results.JobAdIds.Count);
            Assert.AreEqual(jobAd.Id, results.JobAdIds[0]);

            results = _sortService2.SortFolder(member.Id, folder.Id, sortQuery);
            Assert.AreEqual(1, results.JobAdIds.Count);
            Assert.AreEqual(jobAd.Id, results.JobAdIds[0]);
        }