コード例 #1
0
 private IDictionary <Guid, DateTime> GetLastUpdatedTimes(IEnumerable <Guid> candidateIds, ProfessionalViewCollection <EmployerMemberView> views)
 {
     return((from i in candidateIds
             let view = views[i]
                        select new
     {
         id = i,
         lastUpdatedTime = _memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume)
     }).ToDictionary(x => x.id, x => x.lastUpdatedTime));
 }
コード例 #2
0
        private void AssertCandidate(CandidateModel model, EmployerMemberView view)
        {
            Assert.AreEqual(view.Id, model.Id);
            Assert.AreEqual(view.GetCandidateTitle(), model.FullName);
            Assert.AreEqual(view.Status, model.Status);
            Assert.AreEqual(_memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume).ToUniversalTime(), model.LastUpdatedTime);
            Assert.AreEqual(view.Address.Location.ToString(), model.Location);

            var salary = view.DesiredSalary == null ? null : view.DesiredSalary.ToRate(SalaryRate.Year);

            Assert.AreEqual(salary == null ? null : salary.LowerBound, model.DesiredSalary == null ? null : model.DesiredSalary.LowerBound);
            Assert.AreEqual(salary == null ? null : salary.UpperBound, model.DesiredSalary == null ? null : model.DesiredSalary.UpperBound);

            Assert.AreEqual(view.DesiredJobTitle, model.DesiredJobTitle);
            Assert.AreEqual(view.DesiredJobTypes, model.DesiredJobTypes);

            Assert.AreEqual(view.Resume == null ? null : view.Resume.Summary, model.Summary);

            if (view.Resume == null || view.Resume.Jobs == null || view.Resume.Jobs.Count == 0)
            {
                Assert.IsNull(model.Jobs);
            }
            else
            {
                for (var index = 0; index < view.Resume.Jobs.Count; ++index)
                {
                    AssertJob(view.Resume.Jobs[index], model.Jobs[index]);
                }
            }
        }
コード例 #3
0
ファイル: GetCandidateTests.cs プロジェクト: formist/LinkMe
        private void AssertResponse(string response, EmployerMemberView view)
        {
            var sb = new StringBuilder();

            sb.Append("{\"Candidate\":{")
            .Append("\"Id\":\"").Append(view.Id.ToString()).Append("\"")
            .Append(",\"CanContact\":\"").Append(view.CanContact()).Append("\"")
            .Append(",\"CanContactByPhone\":\"").Append(view.CanContactByPhone()).Append("\"")
            .Append(",\"HasBeenViewed\":").Append(view.HasBeenViewed ? "true" : "false")
            .Append(",\"HasBeenAccessed\":").Append(view.HasBeenAccessed ? "true" : "false")
            .Append(",\"IsInMobileFolder\":").Append(view.IsInMobileFolder ? "true" : "false")
            .Append(",\"FullName\":").Append(view.GetCandidateTitle() == null ? "null" : "\"" + view.GetCandidateTitle() + "\"")
            .Append(",\"PhoneNumbers\":").Append(view.PhoneNumbers == null || view.PhoneNumbers.All(p => string.IsNullOrEmpty(p.Number)) ? "null" : "\"" + view.PhoneNumbers + "\"")
            .Append(",\"Status\":\"").Append(view.Status).Append("\"")
            .Append(",\"LastUpdatedTime\":\"").Append(_memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume).ToUniversalTime().ToString("o")).Append("\"")
            .Append(",\"Location\":").Append(view.Address.Location.ToString() == null ? "null" : "\"" + view.Address.Location + "\"")
            .Append(",\"DesiredJobTitle\":").Append(view.DesiredJobTitle == null ? "null" : "\"" + view.DesiredJobTitle + "\"");

            if (view.DesiredJobTypes.IsFlagSet(JobTypes.FullTime))
            {
                sb.Append(",\"FullTime\":true");
            }
            if (view.DesiredJobTypes.IsFlagSet(JobTypes.PartTime))
            {
                sb.Append(",\"PartTime\":true");
            }
            if (view.DesiredJobTypes.IsFlagSet(JobTypes.Contract))
            {
                sb.Append(",\"Contract\":true");
            }
            if (view.DesiredJobTypes.IsFlagSet(JobTypes.JobShare))
            {
                sb.Append(",\"JobShare\":true");
            }
            if (view.DesiredJobTypes.IsFlagSet(JobTypes.Temp))
            {
                sb.Append(",\"Temp\":true");
            }

            sb.Append(",\"Summary\":").Append(view.Resume.Summary == null ? "null" : "\"" + view.Resume.Summary.Replace("\r\n", "\\r\\n").Replace("\t", "\\t").Replace("'", "\\u0027") + "\"")
            .Append(",\"Jobs\":[");
            for (var index = 0; index < view.Resume.Jobs.Count; ++index)
            {
                var job = view.Resume.Jobs[index];
                if (index != 0)
                {
                    sb.Append(",");
                }
                sb.Append("{\"Title\":").Append(job.Title == null ? "null" : "\"" + job.Title + "\"")
                .Append(",\"IsCurrent\":").Append(job.IsCurrent ? "true" : "false")
                .Append(",\"StartDate\":").Append(job.Dates == null || job.Dates.Start == null ? "null" : string.Format("\"{0:D4}-{1:D2}\"", job.Dates.Start.Value.Year, job.Dates.Start.Value.Month))
                .Append(",\"EndDate\":").Append(job.Dates == null || job.Dates.End == null ? "null" : string.Format("\"{0:D4}-{1:D2}\"", job.Dates.End.Value.Year, job.Dates.End.Value.Month))
                .Append(",\"Company\":").Append(job.Company == null ? "null" : "\"" + job.Company + "\"")
                .Append("}");
            }
            sb.Append("]").Append(",\"DesiredSalary\":").Append(view.DesiredSalary == null ? "null" : "\"" + view.DesiredSalary + "\"");
            sb.Append("},\"Success\":true,\"Errors\":null}");
            Assert.AreEqual(sb.ToString(), response);
        }
コード例 #4
0
        private MemberStatusModel CreateProfileModel(IMember member, ICandidate candidate, IResume resume)
        {
            var lastUpdatedTime = _memberStatusQuery.GetLastUpdatedTime(member, candidate, resume);

            return(new MemberStatusModel
            {
                PercentComplete = _memberStatusQuery.GetPercentComplete(member, candidate, resume),
                Age = (DateTime.Now - lastUpdatedTime).Days,
                PromptForResumeUpdate = _memberStatusQuery.IsUpdateNeeded(member, candidate, resume),
                MemberStatus = _memberStatusQuery.GetMemberStatus(member, candidate, resume),
            });
        }
コード例 #5
0
        protected CandidateModel GetCandidateModel(EmployerMemberView view)
        {
            const string method = "CandidateModel Creation";

            #region Log
            Stopwatch searchTime = null;
            if (EventSource.IsEnabled(Event.Trace))
            {
                searchTime = Stopwatch.StartNew();
            }
            #endregion


            // Only supply the phone numbers if the candidate has them and if they have already been accessed.

            var canContactByPhone = view.CanContactByPhone();
            var phoneNumbers      = canContactByPhone == CanContactStatus.YesWithoutCredit && view.HasBeenAccessed
                ? view.PhoneNumbers.Where(p => !string.IsNullOrEmpty(p.Number)).Select(p => p.Number).ToList()
                : null;

            // Always convert salary to yearly rate for display.

            var salary = view.DesiredSalary == null ? null : view.DesiredSalary.ToRate(SalaryRate.Year);

            var model = new CandidateModel
            {
                Id = view.Id,

                CanContact        = view.CanContact(),
                CanContactByPhone = canContactByPhone,
                HasBeenViewed     = view.HasBeenViewed,
                HasBeenAccessed   = view.HasBeenAccessed,
                IsInMobileFolder  = view.IsInMobileFolder,

                FullName     = view.GetCandidateTitle(),
                PhoneNumbers = phoneNumbers,

                LastUpdatedTime = _memberStatusQuery.GetLastUpdatedTime(view, view, view.Resume).ToUniversalTime(),
                Status          = view.Status,
                Location        = view.Address.Location.ToString(),
                DesiredSalary   = salary == null ? null : new SalaryModel {
                    LowerBound = salary.LowerBound, UpperBound = salary.UpperBound
                },
                DesiredJobTitle = view.DesiredJobTitle,
                DesiredJobTypes = view.DesiredJobTypes,

                Jobs = view.Resume == null || view.Resume.Jobs == null || view.Resume.Jobs.Count == 0
                    ? null
                    : view.Resume.Jobs.Select(j => new JobModel
                {
                    Title     = j.Title,
                    StartDate = j.Dates == null ? null : j.Dates.Start,
                    EndDate   = j.Dates == null ? null : j.Dates.End,
                    IsCurrent = j.IsCurrent,
                    Company   = j.Company,
                }).ToList(),
                Summary = view.Resume == null ? null : view.Resume.Summary,
            };

            #region Log
            if (EventSource.IsEnabled(Event.Trace))
            {
                searchTime.Stop();
                EventSource.Raise(Event.Trace, method, "Model Created.",
                                  Event.Arg("member id", view.Id),
                                  Event.Arg("model creation time (ms)", searchTime.ElapsedMilliseconds));
            }
            #endregion

            return(model);
        }