Example #1
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            _view             = _memberViewsQuery.GetPersonalView(LoggedInMemberId, _invitee);
            imgPhoto.ImageUrl = _view.GetPhotoUrlOrDefault().ToString();
        }
Example #2
0
        private void LoadFormData()
        {
            Member member = LoggedInMember;

            foreach (VisibilityCheckBoxRow row in Rows)
            {
                PersonalContactDegree level = PersonalContactDegree.Self;
                var viewer = new PersonalView(member, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree);
                if (viewer.CanAccess(row.ContactAccessFlag))
                {
                    level++;

                    viewer = new PersonalView(member, PersonalContactDegree.SecondDegree, PersonalContactDegree.SecondDegree);
                    if (viewer.CanAccess(row.ContactAccessFlag))
                    {
                        level++;

                        viewer = new PersonalView(member, PersonalContactDegree.Public, PersonalContactDegree.Public);
                        if (viewer.CanAccess(row.ContactAccessFlag))
                        {
                            level++;
                        }
                    }
                }

                row.ContactDegree = level;
            }
        }
Example #3
0
        private void AssertFriend(Member friend, ICandidate candidate, IResume resume)
        {
            AssertPageContains(friend.FullName);

            var viewer = new PersonalView(friend, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree);

            // Current Jobs.

            if (viewer.CanAccess(PersonalVisibility.CurrentJobs))
            {
                AssertPageContains(resume.GetCurrentJobsDisplayHtml());
            }
            else
            {
                AssertPageDoesNotContain(resume.GetCurrentJobsDisplayHtml());
            }

            // Candidate Status.

            if (viewer.CanAccess(PersonalVisibility.CandidateStatus))
            {
                if (candidate.Status != CandidateStatus.Unspecified)
                {
                    AssertPageContains(NetworkerFacade.GetCandidateStatusText(candidate.Status));
                }
            }
            else
            {
                if (candidate.Status != CandidateStatus.Unspecified)
                {
                    AssertPageDoesNotContain(NetworkerFacade.GetCandidateStatusText(candidate.Status));
                }
            }

            // Suburb.

            if (viewer.CanAccess(PersonalVisibility.Suburb))
            {
                AssertPageContains(friend.Address.Location.Suburb);
                AssertPageContains(" " + friend.Address.Location.Postcode);
            }
            else
            {
                AssertPageDoesNotContain(friend.Address.Location.Suburb);
                AssertPageDoesNotContain(" " + friend.Address.Location.Postcode); // GUIDs can contain "3143", too!
            }

            // CountrySubdivision.

            if (viewer.CanAccess(PersonalVisibility.CountrySubdivision))
            {
                AssertPageContains(friend.Address.Location.CountrySubdivision.ShortName);
            }
            else
            {
                AssertPageDoesNotContain(friend.Address.Location.CountrySubdivision.ShortName);
            }
        }
        private static void SetPlaceHolderVisibility(Control placeHolder, PersonalView viewer, PersonalVisibility visibility)
        {
            if (placeHolder == null)
            {
                throw new ArgumentNullException("placeHolder");
            }

            placeHolder.Visible = viewer.CanAccess(visibility);
        }
        private void SetPageVisibility(PersonalContactDegree effectiveOwnerDegreeFromViewer, PersonalContactDegree actualOwnerDegreeFromViewer)
        {
            var view = new PersonalView(OwnerOfFriends, effectiveOwnerDegreeFromViewer, actualOwnerDegreeFromViewer);

            imgPhoto.Width  = Constants.ThumbnailMaxSize.Width;
            imgPhoto.Height = Constants.ThumbnailMaxSize.Height;

            imgPhoto.ImageUrl = view.GetPhotoUrlOrDefault().ToString();

            var canSendInvites = view.CanAccess(PersonalVisibility.SendInvites);

            phAddToFriends.Visible = canSendInvites && actualOwnerDegreeFromViewer != PersonalContactDegree.Self &&
                                     actualOwnerDegreeFromViewer != PersonalContactDegree.FirstDegree;
        }
Example #6
0
        private void AssertLinks(IList <Member> friends)
        {
            for (var index = 0; index < friends.Count; ++index)
            {
                var friend = friends[index];
                var view   = new PersonalView(friend, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree);

                var lnkFullProfile = new HtmlLinkTester(Browser, AddBodyPrefix("FormContent_Content") + "_contactsListControl_rptContacts_ctl" + index.ToString("D2") + "_ucContactsListDetails_lnkFullProfile");
                Assert.IsTrue(lnkFullProfile.IsVisible);

                var lnkViewFriends = new HtmlLinkTester(Browser, AddBodyPrefix("FormContent_Content") + "_contactsListControl_rptContacts_ctl" + index.ToString("D2") + "_ucContactsListDetails_lnkViewFriends");
                Assert.AreEqual(lnkViewFriends.IsVisible, view.CanAccess(PersonalVisibility.FriendsList));
            }
        }
        private static void PopulateDynamicControls(Control placeHolder, PersonalView view, string itemSuffix)
        {
            if (placeHolder.Controls.Count == 0)
            {
                return;
            }

            var iExtraActions = placeHolder.Controls[0] as IExtraContactDetailsControl;

            if (iExtraActions != null)
            {
                iExtraActions.DisplayContact(view, itemSuffix);
            }
        }
Example #8
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);
                }
            }
        }
Example #9
0
        private void DisplayMember()
        {
            _view = _memberViewsQuery.GetPersonalView(LoggedInUserId, ViewedMember);

            AddTitleValue(ViewedMember.FirstName.MakeNamePossessive());

            DisplayDetails();
            DisplayFriends();
            DisplayContactDetails();
            DisplayWorkStatus();
            DisplayCareer();
            DisplayOccupation();
            DisplayEducation();
            DisplayWorkHistory();
            DisplayInterestsAffiliations();
        }
Example #10
0
        public void TestInviteSecondDegreeContact()
        {
            _secondDegreeContact = _membersQuery.GetMember(_secondDegreeContact.Id);

            // With permission
            _secondDegreeContact.VisibilitySettings.Personal.Set(PersonalContactDegree.SecondDegree, PersonalVisibility.SendInvites);
            var view = new PersonalView(_secondDegreeContact, PersonalContactDegree.SecondDegree, PersonalContactDegree.SecondDegree);

            Assert.IsTrue(view.CanAccess(PersonalVisibility.SendInvites));
            _memberAccountsCommand.UpdateMember(_secondDegreeContact);

            RequestInvitation(_secondDegreeContact.Id);
            AssertPageContains(string.Format(AddToFriends.HeadingFormat, _secondDegreeContact.FirstName));

            // Without permission
            _secondDegreeContact.VisibilitySettings.Personal.Set(PersonalContactDegree.FirstDegree, PersonalVisibility.SendInvites);
            Assert.IsTrue(!view.CanAccess(PersonalVisibility.SendInvites));
            _memberAccountsCommand.UpdateMember(_secondDegreeContact);

            RequestInvitation(_secondDegreeContact.Id);
            AssertPageContains(NotAcceptingInvitations);
        }
Example #11
0
 public void DisplayContact(PersonalView view, string itemSuffix)
 {
     lnkInviteRepresentative.NavigateUrl = "javascript:populateOverlayPopup('"
                                           + GetUrlForPage <RepresentativePopupContents>() + "', '"
                                           + RepresentativePopupContents.InviteeIdParameter + "=" + view.Id + "');";
 }
Example #12
0
        private string GetContent(TemplateEmail templateEmail, Member inviter, Request invitation, DonationRequest donationRequest, DonationRecipient donationRecipient)
        {
            var friendCount = Resolve <IMemberContactsQuery>().GetFirstDegreeContacts(inviter.Id).Count;

            var sb = new StringBuilder();

            sb.AppendLine("<p>Hi</p>");
            sb.AppendLine("<p>");
            sb.AppendLine("  " + inviter.FullName + " has sent you a request to join their personal network.");
            sb.AppendLine("</p>");

            // Show details if set.

            var  currentJobs        = GetCurrentJobs(inviter.Id);
            var  view               = new PersonalView(inviter, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree);
            bool currentJobsVisible = view.CanAccess(PersonalVisibility.CurrentJobs) &&
                                      !currentJobs.IsNullOrEmpty() &&
                                      currentJobs.Count > 0;
            bool contactCountVisible = view.CanAccess(PersonalVisibility.FriendsList) &&
                                       friendCount > 0;

            sb.AppendLine();
            if (currentJobsVisible || contactCountVisible)
            {
                sb.AppendLine("<div style=\"padding-left: 30px; font-family: Arial, Helvetica, sans-serif;\">");
                sb.AppendLine("  <p>");
                sb.AppendLine("    " + inviter.FullName);
                sb.AppendLine();
            }

            if (currentJobsVisible)
            {
                sb.AppendLine("    <br />");

                var currentJob = (from j in currentJobs
                                  where !string.IsNullOrEmpty(j.Title) &&
                                  j.Dates.Start != null
                                  orderby j.Dates.Start.Value descending
                                  select j.Title).FirstOrDefault();

                sb.AppendLine("    " + currentJob);
                sb.AppendLine();
            }

            if (contactCountVisible)
            {
                sb.AppendLine();
                sb.AppendLine("    <br />");
                sb.AppendLine("    already has " + friendCount + " friend" + (friendCount > 1 ? "s" : ""));
                sb.AppendLine("    in their network who may be able to help you in your career.");
            }

            if (currentJobsVisible || contactCountVisible)
            {
                sb.AppendLine();
                sb.AppendLine("  </p>");
                sb.AppendLine("</div>");
                sb.AppendLine();
            }

            sb.AppendLine("<p>");
            sb.AppendLine("  A profile on our network will help position your career for success.");
            sb.AppendLine("  1000s of employers are searching for talent like you.");
            sb.AppendLine("</p>");

            sb.AppendLine();
            if (donationRequest != null)
            {
                sb.AppendLine("<p>We'll also donate " + donationRequest.Amount.ToString("C") + " to the " + donationRecipient.Name + " when you join.</p>");
                sb.AppendLine();
            }

            sb.AppendLine();
            if (!string.IsNullOrEmpty(invitation.Text))
            {
                sb.AppendLine("<p>");
                sb.AppendLine("  " + inviter.FirstName.MakeNamePossessive() + " personal message:");
                sb.AppendLine("  <br />");
                sb.AppendLine("  " + HtmlUtil.LineBreaksToHtml(HttpUtility.HtmlEncode(invitation.Text)));
                sb.AppendLine("</p>");
                sb.AppendLine();
            }

            sb.AppendLine("<p>");
            sb.AppendLine("  <a href=\"" + GetTinyUrl(templateEmail, false, "~/Join.aspx", "inviteId", invitation.Id.ToString("N")) + "\">Join " + inviter.FirstName.MakeNamePossessive() + " network</a>");
            sb.AppendLine("</p>");

            return(sb.ToString());
        }
Example #13
0
        private string GetContent(TemplateEmail templateEmail, Member inviter, IRegisteredUser invitee, int friendCount, Request invitation, EmailVerification emailVerification)
        {
            var sb = new StringBuilder();

            sb.AppendLine("<p>Hi " + invitee.FirstName + "</p>");
            sb.AppendLine("<p>");
            sb.AppendLine("  " + inviter.FullName + " has sent you a request to join their personal network.");
            sb.AppendLine("</p>");

            // Show details if set.

            var currentJobs        = GetCurrentJobs(inviter.Id);
            var view               = new PersonalView(inviter, PersonalContactDegree.FirstDegree, PersonalContactDegree.FirstDegree);
            var currentJobsVisible = view.CanAccess(PersonalVisibility.CurrentJobs) &&
                                     !currentJobs.IsNullOrEmpty() &&
                                     currentJobs.Count > 0;
            var contactCountVisible = view.CanAccess(PersonalVisibility.FriendsList) &&
                                      friendCount > 0;

            sb.AppendLine();
            if (currentJobsVisible || contactCountVisible)
            {
                sb.AppendLine("<div style=\"padding-left: 30px; font-family: Arial, Helvetica, sans-serif;\">");
                sb.AppendLine("  <p>");
                sb.AppendLine("    " + inviter.FullName);
                sb.AppendLine();
            }

            if (currentJobsVisible)
            {
                sb.AppendLine("    <br />");

                var currentJob = (from j in currentJobs
                                  where !string.IsNullOrEmpty(j.Title) &&
                                  j.Dates.Start != null
                                  orderby j.Dates.Start.Value descending
                                  select j.Title).FirstOrDefault();

                sb.AppendLine("    " + currentJob);
                sb.AppendLine();
            }

            if (contactCountVisible)
            {
                sb.AppendLine();
                sb.AppendLine("    <br />");
                sb.AppendLine("    already has " + friendCount + " friend" + (friendCount > 1 ? "s" : ""));
                sb.AppendLine("    in their network who may be able to help you in your career.");
            }

            if (currentJobsVisible || contactCountVisible)
            {
                sb.AppendLine();
                sb.AppendLine("  </p>");
                sb.AppendLine("</div>");
                sb.AppendLine();
            }

            // Show individual text if set.

            sb.AppendLine();
            if (!string.IsNullOrEmpty(invitation.Text))
            {
                sb.AppendLine("<p>");
                sb.AppendLine("  " + inviter.FirstName.MakeNamePossessive() + " personal message:");
                sb.AppendLine("  <br />");
                sb.AppendLine("  " + HtmlUtil.LineBreaksToHtml(HttpUtility.HtmlEncode(invitation.Text)));
                sb.AppendLine("</p>");
                sb.AppendLine();
            }

            // Link depends on whether the invitee is activated.

            sb.AppendLine("<p>");
            sb.AppendLine();
            if (emailVerification == null)
            {
                sb.AppendLine("  <a class=\"major-action\" href=\"" + GetTinyUrl(templateEmail, true, "~/members/friends/Invitations.aspx") + "\">Respond to " + inviter.FirstName.MakeNamePossessive() + " personal invitation</a>");
                sb.AppendLine();
            }
            else
            {
                sb.AppendLine("  <a class=\"major-action\" href=\"" + GetTinyUrl(templateEmail, false, "~/accounts/activation", "activationCode", emailVerification.VerificationCode, "isInvite", "true") + "\">Reactivate");
                sb.AppendLine("  your account and respond to " + inviter.FirstName.MakeNamePossessive() + " friend request</a>");
                sb.AppendLine();
            }

            sb.AppendLine("</p>");
            sb.AppendLine("<p><strong>Did you know that 60% of jobs are found through people you ");
            sb.AppendLine("know?</strong></p>");

            return(sb.ToString());
        }
Example #14
0
        private bool AssertFriendsFriend(Guid memberId, Member friendsFriend, ICandidate friendsCandidate, IResume friendsResume, bool checkAddress)
        {
            try
            {
                AssertPageContains(friendsFriend.FullName);

                var contactDegree = friendsFriend.Id == memberId ? PersonalContactDegree.Self : PersonalContactDegree.SecondDegree;
                var view          = new PersonalView(friendsFriend, contactDegree, contactDegree);

                // Current Jobs.

                if (view.CanAccess(PersonalVisibility.CurrentJobs))
                {
                    var currentJobs = friendsResume.GetCurrentJobsDisplayHtml();
                    if (!string.IsNullOrEmpty(currentJobs))
                    {
                        AssertPageContains(currentJobs);
                    }
                }
                else
                {
                    var currentJobs = friendsResume.GetCurrentJobsDisplayHtml();
                    if (!string.IsNullOrEmpty(currentJobs))
                    {
                        AssertPageDoesNotContain(friendsResume.GetCurrentJobsDisplayHtml());
                    }
                }

                // Candidate Status.

                if (view.CanAccess(PersonalVisibility.CandidateStatus))
                {
                    if (friendsCandidate.Status != CandidateStatus.Unspecified)
                    {
                        AssertPageContains(NetworkerFacade.GetCandidateStatusText(friendsCandidate.Status));
                    }
                }
                else
                {
                    if (friendsCandidate.Status != CandidateStatus.Unspecified)
                    {
                        AssertPageDoesNotContain(NetworkerFacade.GetCandidateStatusText(friendsCandidate.Status));
                    }
                }

                // Suburb.

                if (checkAddress)
                {
                    if (view.CanAccess(PersonalVisibility.Suburb))
                    {
                        AssertPageContains(friendsFriend.Address.Location.Suburb);
                        AssertPageContains(" " + friendsFriend.Address.Location.Postcode);
                    }
                    else
                    {
                        AssertPageDoesNotContain(friendsFriend.Address.Location.Suburb);
                        AssertPageDoesNotContain(" " + friendsFriend.Address.Location.Postcode);
                    }

                    // CountrySubdivision.

                    if (view.CanAccess(PersonalVisibility.CountrySubdivision))
                    {
                        AssertPageContains(friendsFriend.Address.Location.CountrySubdivision.ShortName);
                    }
                    else
                    {
                        AssertPageDoesNotContain(friendsFriend.Address.Location.CountrySubdivision.ShortName);
                    }
                }

                return(true);
            }
            catch (AssertFailedException)
            {
                return(false);
            }
        }
Example #15
0
        public static string GetEmailAddressDisplayText(this PersonalView view)
        {
            var emailAddress = view.GetBestEmailAddress();

            return(emailAddress == null || emailAddress.Address == null ? "[" + EmailHiddenText + "]" : emailAddress.Address);
        }
Example #16
0
 public static string GetFirstNameDisplayText(this PersonalView view)
 {
     return(view.FirstName ?? "[" + NameHiddenText + "]");
 }
        public void DisplayContact(PersonalView view, Member member, Candidate candidate, Resume resume, string itemSuffix)
        {
            // Image.

            lnkPhoto.NavigateUrl = BuildViewProfileLink(view.Id).ToString();
            imgPhoto.ImageUrl    = view.GetPhotoUrlOrDefault().ToString();

            // Full Name.

            lnkFullName.NavigateUrl = BuildViewProfileLink(view.Id).ToString();
            lnkFullName.Text        = AlwaysDisplayNames ? HtmlUtil.TextToHtml(((ICommunicationRecipient)view).FullName) : HtmlUtil.TextToHtml(view.GetFullNameDisplayText());

            // Representative.

            switch (view.EffectiveContactDegree)
            {
            case PersonalContactDegree.Representative:
                phRepresentative.Visible = true;
                lblRepresentative.Text   = view.EffectiveContactDegree.GetRepresentativeDescriptionText();
                break;

            case PersonalContactDegree.Representee:
                phRepresentative.Visible = true;
                lblRepresentative.Text   = view.EffectiveContactDegree.GetRepresentativeDescriptionText();
                break;

            default:
                phRepresentative.Visible = false;
                break;
            }

            // Current Title.

            var currentJobsText = resume == null ? null : resume.GetCurrentJobsDisplayHtml();

            if (string.IsNullOrEmpty(currentJobsText))
            {
                phCurrentJobs.Visible = false;
            }
            else
            {
                lblCurrentJobsCaption.Text = GetCurrentJobsCaption(resume);
                ltlCurrentJobs.Text        = currentJobsText;
                SetPlaceHolderVisibility(phCurrentJobs, view, PersonalVisibility.CurrentJobs);
            }

            // Candidate Status.

            if (candidate.Status == CandidateStatus.Unspecified)
            {
                phCandidateStatus.Visible = false;
            }
            else
            {
                ltlCandidateStatus.Text = NetworkerFacade.GetCandidateStatusText(candidate.Status);
                SetPlaceHolderVisibility(phCandidateStatus, view, PersonalVisibility.CandidateStatus);
            }

            // Location.

            var locationText = GetDisplayText(member.Address.Location, view);

            if (string.IsNullOrEmpty(locationText))
            {
                phLocation.Visible = false;
            }
            else
            {
                ltlLocation.Text   = locationText;
                phLocation.Visible = true;
            }

            // Full Profile.

            lnkFullProfile.NavigateUrl = BuildViewProfileLink(view.Id).ToString();

            // Send Message.

            if (LoggedInUserId == view.Id)
            {
                phThisIsYou.Visible = true;
            }

            // View Friends.

            lnkViewFriends.NavigateUrl = BuildViewFriendsLink(view.Id).ToString();
            SetPlaceHolderVisibility(phViewFriends, view, PersonalVisibility.FriendsList);

            if (!CanAccessFriends)
            {
                phViewFriends.Visible = false;
            }

            // Add To Friends.

            lnkAddToFriends.NavigateUrl = "javascript:populateOverlayPopup('"
                                          + GetUrlForPage <InvitationPopupContents>() + "', '"
                                          + InvitationPopupContents.InviteeIdParameter + "=" + view.Id + "');";
            phAddToFriends.Visible = (view.ActualContactDegree != PersonalContactDegree.Self && view.ActualContactDegree != PersonalContactDegree.FirstDegree &&
                                      view.CanAccess(PersonalVisibility.SendInvites));

            if (!CanAddToFriends)
            {
                phAddToFriends.Visible = false;
            }

            // Extra details, if any.

            PopulateDynamicControls(phExtraDescription, view, itemSuffix);
            PopulateDynamicControls(phExtraActions, view, itemSuffix);
        }
 protected static string GetDisplayText(LocationReference location, PersonalView viewer)
 {
     return(HtmlUtil.TextToHtml(location.ToString(viewer.CanAccess(PersonalVisibility.CountrySubdivision), viewer.CanAccess(PersonalVisibility.Suburb))));
 }