Exemplo n.º 1
0
        private ResourceListModel <TResource> GetResourceListModel <TResource>(IHasId <Guid> user, ResourceListModel <TResource> model)
            where TResource : Resource
        {
            if (user is Member)
            {
                var candidate = _candidatesQuery.GetCandidate(user.Id);
                var resume    = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value);
                model.ResumePercentComplete = _memberStatusQuery.GetPercentComplete(CurrentMember, candidate, resume);
                model.HasResume             = HasResume(candidate);
            }
            else
            {
                model.ResumePercentComplete = 0;
                model.HasResume             = false;
            }

            model.TopRatedArticle = _resourcesQuery.GetTopRatedArticle();
            model.TopViewedQnA    = _resourcesQuery.GetTopViewedQnA();

            // Set the data for all resources in the model.

            model.Viewings        = GetViewings(model);
            model.LastViewedTimes = GetLastViewedTimes(model);
            model.Ratings         = GetRatings(user.Id, model);
            model.Comments        = GetComments(model);
            return(model);
        }
Exemplo n.º 2
0
        public ActionResult Newsletter(CommunicationsContext context)
        {
            var member = _membersQuery.GetMember(context.UserId);

            if (member == null || !member.IsEnabled || !member.IsActivated)
            {
                return(HttpNotFound());
            }

            var candidate = _candidatesQuery.GetCandidate(context.UserId);
            var resume    = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value);

            var model = CreateModel <NewsletterModel>(context);

            model.Member    = member;
            model.Candidate = candidate;
            model.Resume    = resume;

            var lastMonth = new DateTimeRange(DateTime.Today.AddMonths(-1), DateTime.Today);

            model.TotalJobAds            = _jobAdReportsQuery.GetCreatedJobAds(lastMonth);
            model.TotalViewed            = _employerMemberAccessReportsQuery.GetMemberViewings(context.UserId, lastMonth);
            model.ProfilePercentComplete = _memberStatusQuery.GetPercentComplete(member, candidate, resume);
            var execution = _executeJobAdSearchCommand.SearchSuggested(member, null, new Range(0, MaxSuggestedJobCount));

            var jobAds = _jobAdsQuery.GetJobAds <JobAd>(execution.Results.JobAdIds).ToDictionary(j => j.Id, j => j);

            model.SuggestedJobs = (from i in execution.Results.JobAdIds
                                   where jobAds.ContainsKey(i)
                                   select jobAds[i]).ToList();

            return(View(model));
        }
Exemplo n.º 3
0
        public void OnMemberChanged(object sender, EventArgs <Member> e)
        {
            var member    = e.Value;
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            HandleStatusChanged(candidate.Id, candidate.Status);
        }
Exemplo n.º 4
0
        protected override Member CreateMember(int index)
        {
            var member    = base.CreateMember(index);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);
            return(member);
        }
Exemplo n.º 5
0
        private Member CreateMember(int index)
        {
            var member    = _memberAccountsCommand.CreateTestMember(index);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);
            _updateMemberSearchCommand.AddMember(member.Id);
            return(member);
        }
Exemplo n.º 6
0
        DocFile IJobAdApplicationsManager.GetResume(Member member)
        {
            var candidate = _candidatesQuery.GetCandidate(member.Id);
            var resume    = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value);

            var view = new EmployerMemberView(member, candidate, resume, null, ProfessionalContactDegree.Applicant, false, false);

            return(_employerResumeFilesQuery.GetResumeFile(view));
        }
Exemplo n.º 7
0
        protected Resume AddResume(Guid memberId)
        {
            var fileReference = GetResumeFile();
            var resume        = _parseResumesCommand.ParseResume(fileReference).Resume;
            var candidate     = _candidatesQuery.GetCandidate(memberId);

            _candidateResumesCommand.CreateResume(candidate, resume);
            return(resume);
        }
Exemplo n.º 8
0
        private Guid?GetProfileResumeId(Guid memberId)
        {
            var candidate = _candidatesQuery.GetCandidate(memberId);

            if (candidate == null || candidate.ResumeId == null)
            {
                throw new NoResumeException();
            }
            return(candidate.ResumeId.Value);
        }
Exemplo n.º 9
0
        public void TestCandidateEmailLinks()
        {
            var employer  = _employerAccountsCommand.CreateTestEmployer(0, _organisationsCommand.CreateTestOrganisation(0));
            var member    = _memberAccountsCommand.CreateTestMember(0);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);

            // Send an email.

            var view = _employerMemberViewsQuery.GetEmployerMemberView(employer, member);

            _emailsCommand.TrySend(new EmployerContactCandidateConfirmationEmail(null, employer, member.Id, view.GetDisplayText(true), "subject", "content"));

            // Check the email.

            var email = _emailServer.AssertEmailSent();
            var links = email.GetHtmlView().GetLinks();

            Assert.AreEqual(2, links.Count);

            var definition = typeof(EmployerContactCandidateConfirmationEmail).Name;

            AssertLink(definition, GetCandidateUrl(member), links[0]);
            AssertLink(definition, _contactUsUrl, links[1]);

            // Check the tracking pixel.

            var link = email.GetHtmlView().GetImageLinks().Last();

            AssertTrackingLink(link);

            // Check the MyCandidatesResumeEmail

            view = _employerMemberViewsQuery.GetEmployerMemberView(employer, member);
            _emailsCommand.TrySend(new CandidateResumeEmail(employer, view));

            // Check the email.

            email = _emailServer.AssertEmailSent();
            links = email.GetHtmlView().GetLinks();
            Assert.AreEqual(3, links.Count);

            definition = typeof(CandidateResumeEmail).Name;

            AssertLink(definition, GetCandidateUrl(member), links[0]);
            AssertLink(definition, _candidateSearchUrl, links[1]);
            AssertLink(definition, _contactUsUrl, links[2]);

            // Check the tracking pixel.

            link = email.GetHtmlView().GetImageLinks().Last();
            AssertTrackingLink(link);
        }
Exemplo n.º 10
0
        public void TestSuccess()
        {
            var member     = _memberAccountsCommand.CreateTestMember(0);
            var candidate  = _candidatesQuery.GetCandidate(member.Id);
            var resume     = _candidateResumesCommand.AddTestResume(candidate);
            var view       = new EmployerMemberView(member, candidate, resume, null, ProfessionalContactDegree.Applicant, false, false);
            var resumeFile = _resumeFilesQuery.GetResumeFile(view, resume);

            var integratorUser = _integrationCommand.CreateTestIntegratorUser();

            Assert.AreEqual(resumeFile.Contents, Get(GetResumeUrl(candidate.Id), integratorUser, Password, true));
        }
Exemplo n.º 11
0
        private void AssertAreEqual(IMember expectedMember, IMember member)
        {
            // User

            Assert.IsNotNull(expectedMember);
            Assert.IsNotNull(member);
            Assert.AreEqual(expectedMember.IsEnabled, member.IsEnabled);
            Assert.AreEqual(expectedMember.IsActivated, member.IsActivated);
            Assert.AreEqual(expectedMember.FirstName, member.FirstName);
            Assert.AreEqual(expectedMember.Id, member.Id);
            Assert.AreEqual(expectedMember.LastName, member.LastName);

            // Member

            Assert.AreEqual(expectedMember.DateOfBirth, member.DateOfBirth);
            Assert.AreEqual(expectedMember.VisibilitySettings.Professional.EmploymentVisibility, member.VisibilitySettings.Professional.EmploymentVisibility);
            Assert.AreEqual(expectedMember.VisibilitySettings.Professional.PublicVisibility, member.VisibilitySettings.Professional.PublicVisibility);
            Assert.AreEqual(expectedMember.VisibilitySettings.Personal.FirstDegreeVisibility, member.VisibilitySettings.Personal.FirstDegreeVisibility);
            Assert.AreEqual(expectedMember.Gender, member.Gender);
            Assert.AreEqual(expectedMember.PhotoId, member.PhotoId);
            Assert.AreEqual(expectedMember.VisibilitySettings.Personal.PublicVisibility, member.VisibilitySettings.Personal.PublicVisibility);
            Assert.AreEqual(expectedMember.VisibilitySettings.Personal.SecondDegreeVisibility, member.VisibilitySettings.Personal.SecondDegreeVisibility);

            if (expectedMember.EmailAddresses == null)
            {
                Assert.IsNull(member.EmailAddresses);
            }
            else
            {
                Assert.IsNotNull(member.EmailAddresses);
                Assert.AreEqual(expectedMember.EmailAddresses.Count, member.EmailAddresses.Count);
                for (var index = 0; index < expectedMember.EmailAddresses.Count; ++index)
                {
                    Assert.AreEqual(expectedMember.EmailAddresses[index], member.EmailAddresses[index]);
                }
            }

            Assert.AreEqual(expectedMember.GetPhoneNumber(PhoneNumberType.Mobile), member.GetPhoneNumber(PhoneNumberType.Mobile));
            Assert.AreEqual(expectedMember.GetPhoneNumber(PhoneNumberType.Home), member.GetPhoneNumber(PhoneNumberType.Home));
            Assert.AreEqual(expectedMember.GetPhoneNumber(PhoneNumberType.Work), member.GetPhoneNumber(PhoneNumberType.Work));

            Assert.AreEqual(expectedMember.Address.Id, member.Address.Id);
            Assert.AreEqual(expectedMember.Address.Line1, member.Address.Line1);
            Assert.AreEqual(expectedMember.Address.Line2, member.Address.Line2);
            Assert.AreEqual(expectedMember.Address.Location, member.Address.Location);

            AssertAreEqual(_candidatesQuery.GetCandidate(expectedMember.Id), _candidatesQuery.GetCandidate(member.Id));
        }
Exemplo n.º 12
0
        private bool MatchAccount(IRegisteredUser member, Community community, ConvertModel convertModel)
        {
            // Must be an exact match.

            if (member.AffiliateId != community.Id ||
                member.FirstName != convertModel.FirstName ||
                member.LastName != convertModel.LastName)
            {
                return(false);
            }

            // Job title and company must be part of the resume titles and companies.

            var candidate = _candidatesQuery.GetCandidate(member.Id);

            if (candidate == null || candidate.ResumeId == null)
            {
                return(false);
            }

            var resume = _resumesQuery.GetResume(candidate.ResumeId.Value);

            if (resume == null || resume.Jobs == null || resume.Jobs.Count == 0)
            {
                return(false);
            }

            return(resume.Jobs.Any(j => !string.IsNullOrEmpty(j.Title) && j.Title.Contains(convertModel.JobTitle)) &&
                   resume.Jobs.Any(j => !string.IsNullOrEmpty(j.Company) && j.Company.Contains(convertModel.JobCompany)));
        }
Exemplo n.º 13
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            Guid friendId;

            try
            {
                friendId = ParseUtil.ParseUserInputGuid(Request.QueryString[FriendIdParameter], "friend ID");
            }
            catch (UserException ex)
            {
                AddError(ex.Message);
                return;
            }

            ViewedMember = _membersQuery.GetMember(friendId);
            if (ViewedMember == null)
            {
                AddError("There is no member with ID " + friendId);
                return;
            }

            ViewedCandidate = _candidatesQuery.GetCandidate(friendId);
            ViewedResume    = ViewedCandidate.ResumeId == null ? null : _resumesQuery.GetResume(ViewedCandidate.ResumeId.Value);

            DisplayMember();
        }
Exemplo n.º 14
0
        protected override MemberContent GetContent(Guid memberId, object cache)
        {
            var member = _membersQuery.GetMember(memberId);

            if (member == null)
            {
                return(null);
            }

            var candidate = _candidatesQuery.GetCandidate(memberId);

            if (candidate == null)
            {
                return(null);
            }

            var resume = candidate.ResumeId == null
                ? null
                : _resumesQuery.GetResume(candidate.ResumeId.Value);

            return(new MemberContent
            {
                Member = member,
                Candidate = candidate,
                Resume = resume,
                IncludeHidden = _includeHidden,
            });
        }
Exemplo n.º 15
0
        private IList <Member> CreateCandidates(int count, JobAdEntry jobAd)
        {
            var members = new List <Member>();

            for (var index = 0; index < count; ++index)
            {
                var member    = CreateMember(index);
                var candidate = _candidatesQuery.GetCandidate(member.Id);
                var resume    = _resumesQuery.GetResume(candidate.ResumeId.Value);
                resume.Jobs[0].Title = jobAd.Title;
                _candidateResumesCommand.UpdateResume(candidate, resume);
                _memberSearchService.UpdateMember(member.Id);
                members.Add(member);
            }

            return(members);
        }
Exemplo n.º 16
0
        private Member CreateMember()
        {
            var member    = _memberAccountsCommand.CreateTestMember(0);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);
            return(member);
        }
Exemplo n.º 17
0
        private void AssertLocations(string emailAddress, ICollection <LocationReference> expectedLocations)
        {
            var candidate = _candidatesQuery.GetCandidate(_loginCredentialsQuery.GetUserId(emailAddress).Value);

            Assert.AreEqual(expectedLocations.Count, candidate.RelocationLocations.Count);
            foreach (var expectedLocation in expectedLocations)
            {
                Assert.IsTrue((from l in candidate.RelocationLocations where Equals(l, expectedLocation) select l).Any());
            }
        }
Exemplo n.º 18
0
        private ApplicantModel GetApplicantModel(IMember member)
        {
            var candidate = member == null ? null : _candidatesQuery.GetCandidate(member.Id);

            return(new ApplicantModel
            {
                HasResume = HasResume(candidate),
                LastUsedResumeFile = GetLastUsedResumeFile(member),
                ProfileCompletePercent = GetProfilePercentComplete(member, candidate),
            });
        }
Exemplo n.º 19
0
        protected void AssertStatus(JobAd jobAd, Guid applicantId, bool expectedHasSubmitted, bool expectedHasResume, string expectedLastUsedResumeFileName)
        {
            Assert.AreEqual(expectedHasSubmitted, _jobAdApplicationSubmissionsQuery.HasSubmittedApplication(applicantId, jobAd.Id));

            var candidate = _candidatesQuery.GetCandidate(applicantId);

            Assert.AreEqual(expectedHasResume, candidate != null && candidate.ResumeId != null);

            var lastUserResumeFileName = GetLastUsedResumeFileName(applicantId);

            if (expectedLastUsedResumeFileName == null)
            {
                Assert.IsNull(lastUserResumeFileName);
            }
            else
            {
                Assert.IsNotNull(lastUserResumeFileName);
                Assert.AreEqual(expectedLastUsedResumeFileName, lastUserResumeFileName);
            }
        }
Exemplo n.º 20
0
        private Member[] CreateMembers(int count)
        {
            var members = new Member[count];

            for (var index = 0; index < count; ++index)
            {
                members[index] = _memberAccountsCommand.CreateTestMember(index);
                var candidate = _candidatesQuery.GetCandidate(members[index].Id);
                _candidateResumesCommand.AddTestResume(candidate);
            }

            return(members);
        }
Exemplo n.º 21
0
        public new ActionResult Profile()
        {
            // Now that the user has gotten here hide all prompts.

            MemberContext.HideUpdateStatusReminder();

            var member    = CurrentMember;
            var candidate = _candidatesQuery.GetCandidate(member.Id);
            var resume    = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value);

            return(View(CreateMemberModel(member, candidate, resume)));
        }
Exemplo n.º 22
0
        private void CreateMember(int index, DateTime createdTime)
        {
            var member = _memberAccountsCommand.CreateTestMember(index);

            member.CreatedTime = createdTime;
            _memberAccountsCommand.UpdateMember(member);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);

            _resumeReportsCommand.CreateResumeEvent(new ResumeUploadEvent {
                CandidateId = member.Id, ResumeId = candidate.ResumeId.Value, Time = member.CreatedTime
            });
        }
Exemplo n.º 23
0
        private Member CreateMember(params LocationReference[] relocationLocations)
        {
            var member = CreateMember(0);

            if (relocationLocations != null && relocationLocations.Length > 0)
            {
                var candidate = _candidatesQuery.GetCandidate(member.Id);
                candidate.RelocationPreference = RelocationPreference.Yes;
                candidate.RelocationLocations  = relocationLocations;
                _candidatesCommand.UpdateCandidate(candidate);
            }

            return(member);
        }
Exemplo n.º 24
0
        public void TestSavedSearch()
        {
            var member    = _memberAccountsCommand.CreateTestMember(0);
            var candidate = _candidatesQuery.GetCandidate(member.Id);

            _candidateResumesCommand.AddTestResume(candidate);

            var employer = CreateEmployer(0);
            var criteria = new MemberSearchCriteria();

            criteria.SetKeywords(BusinessAnalyst);
            _memberSearchesCommand.CreateMemberSearch(employer, new MemberSearch {
                Name = SavedSearchName, Criteria = criteria
            });

            GetNewsletterUrl(employer.Id);

            var document         = GetDocument();
            var previousSearches = GetPreviousSearches(document);

            Assert.AreEqual(1, previousSearches.Count);
            Assert.AreEqual("Keywords: " + BusinessAnalyst, previousSearches[0].Item1);
        }
Exemplo n.º 25
0
        public ActionResult JobDetails(JobDetailsMemberModel memberModel, bool sendSuggestedJobs, int?externalReferralSourceId)
        {
            var memberId = User.Id().Value;

            try
            {
                // Make sure everything has been supplied appropriately.

                Validate(memberModel);

                // Update the member.

                var member    = _membersQuery.GetMember(memberId);
                var candidate = _candidatesQuery.GetCandidate(member.Id);

                UpdateMember(member, candidate, memberModel);
                UpdateSuggestedJobs(member.Id, sendSuggestedJobs);
                UpdateReferral(memberId, externalReferralSourceId);

                // Send out a verification email if needed.

                if (member.EmailAddresses.Count > 1)
                {
                    _accountVerificationsCommand.SendVerification(member, member.GetSecondaryEmailAddress().Address);
                }

                // Member exists and has been updated so move on.

                return(Next());
            }
            catch (UserException ex)
            {
                ModelState.AddModelError(ex, new JoinErrorHandler());
            }

            return(View(GetJobDetailsModel(memberId, memberModel, externalReferralSourceId)));
        }
Exemplo n.º 26
0
        private void OnFriendInvitationSent(Member inviter, FriendInvitation invitation)
        {
            // Extra information.

            var view = new PersonalView(inviter, PersonalContactDegree.FirstDegree, PersonalContactDegree.Public);

            IList <Job> currentJobs = null;

            if (view.CanAccess(PersonalVisibility.CurrentJobs))
            {
                var candidate = _candidatesQuery.GetCandidate(view.Id);
                var resume    = candidate.ResumeId == null ? null : _resumesQuery.GetResume(candidate.ResumeId.Value);
                currentJobs = resume == null ? null : resume.CurrentJobs;
            }

            var contactCount = view.CanAccess(PersonalVisibility.FriendsList) ? _memberContactsQuery.GetFirstDegreeContacts(inviter.Id).Count : 0;

            if (invitation.InviteeId == null)
            {
                // Non-member.

                DonationRequest   donationRequest   = null;
                DonationRecipient donationRecipient = null;

                if (invitation.DonationRequestId != null)
                {
                    donationRequest = _donationsQuery.GetRequest(invitation.DonationRequestId.Value);
                    if (donationRequest != null)
                    {
                        donationRecipient = _donationsQuery.GetRecipient(donationRequest.RecipientId);
                    }
                }

                var email = new ContactInvitationEmail(inviter, invitation, donationRequest, donationRecipient, currentJobs, contactCount);
                _emailsCommand.TrySend(email);
            }
            else
            {
                // Existing member.

                var to = _membersQuery.GetMember(invitation.InviteeId.Value);
                if (to != null)
                {
                    var activation = GetEmailVerification(to, invitation);
                    var email      = new FriendInvitationEmail(to, inviter, invitation, activation, currentJobs, contactCount);
                    _emailsCommand.TrySend(email);
                }
            }
        }
Exemplo n.º 27
0
        private void TestEditStatus(IUser member)
        {
            LogIn(member);
            GetPage <VisibilitySettingsBasic>();

            var candidate = _candidatesQuery.GetCandidate(member.Id);

            Assert.AreEqual(CandidateStatus.ActivelyLooking, candidate.Status);

            Assert.IsTrue(_activeButton.IsChecked);
            Assert.IsFalse(_notLookingButton.IsChecked);

            _notLookingButton.IsChecked = true;
            _saveButton.Click();

            GetPage <VisibilitySettingsBasic>();
            AssertPage <VisibilitySettingsBasic>();

            candidate = _candidatesQuery.GetCandidate(member.Id);
            Assert.AreEqual(CandidateStatus.NotLooking, candidate.Status);

            Assert.IsFalse(_activeButton.IsChecked);
            Assert.IsTrue(_notLookingButton.IsChecked);
        }
Exemplo n.º 28
0
        public void TestContactNumbers()
        {
            var employer0 = CreateEmployer(0, 100);

            CreateEmployer(1, (int?)null);
            for (int i = 0; i < 28; i++)
            {
                var member    = CreateMember(i);
                var candidate = _candidatesQuery.GetCandidate(member.Id);
                _candidateResumesCommand.AddTestResume(candidate);
                if (i > 14)
                {
                    Contact(employer0, member);
                }
            }
        }
Exemplo n.º 29
0
        private void SetView(IEmployer employer, Guid memberId, EmployerMemberView view)
        {
            var candidate = _candidatesQuery.GetCandidate(memberId);
            var resume    = candidate.ResumeId == null
                ? null
                : _resumesQuery.GetResume(candidate.ResumeId.Value);

            view.Set(
                candidate,
                resume,
                HasViewedMember(employer, memberId),
                _candidateFlagListsQuery.IsFlagged(employer, memberId),
                _candidateFoldersQuery.IsInMobileFolder(employer, memberId),
                _candidateFoldersQuery.GetFolderCount(employer, memberId),
                _candidateNotesQuery.GetNoteCount(employer, memberId));
        }
Exemplo n.º 30
0
        public void TestUploadResume()
        {
            var member        = CreateMember();
            var candidate     = _candidatesQuery.GetCandidate(member.Id);
            var fileReference = GetResumeFile();
            var resume        = _parseResumesCommand.ParseResume(fileReference).Resume;

            _candidateResumesCommand.CreateResume(candidate, resume, fileReference);

            AssertEvents(candidate.Id, resume.Id, new ResumeUploadEvent());
        }