示例#1
0
 public int GetCount(IEnumerable <Guid> ids, PersonalContactDegree degree)
 {
     return((from v in _views
             where ids.Contains(v.Key) &&
             v.Value.ActualContactDegree == degree
             select v.Key).Count());
 }
示例#2
0
        private void ResetFlag(PersonalContactDegree degree, PersonalVisibility flag)
        {
            switch (degree)
            {
            case PersonalContactDegree.Self:
                break;

            case PersonalContactDegree.FirstDegree:
                _firstDegreeVisibility = _firstDegreeVisibility.ResetFlag(flag);
                break;

            case PersonalContactDegree.SecondDegree:
                _secondDegreeVisibility = _secondDegreeVisibility.ResetFlag(flag);
                break;

            case PersonalContactDegree.Public:
                _publicVisibility = _publicVisibility.ResetFlag(flag);
                return;

            default:
                return;
            }

            ResetFlag(degree + 1, flag);
        }
示例#3
0
        private static PersonalVisibility GetVisibility(PersonalContactDegree contactDegree, PersonalVisibilitySettings visibilitySettings)
        {
            switch (contactDegree)
            {
            case PersonalContactDegree.Self:
            case PersonalContactDegree.Representee:

                // A representative of a representee can always see everything of that representee.

                return(PersonalVisibility.All);

            case PersonalContactDegree.Representative:

                // A representee can always see the name of their representative.

                return(visibilitySettings.FirstDegreeVisibility | PersonalVisibility.Name);

            case PersonalContactDegree.FirstDegree:
                return(visibilitySettings.FirstDegreeVisibility);

            case PersonalContactDegree.SecondDegree:
                return(visibilitySettings.SecondDegreeVisibility);

            case PersonalContactDegree.Public:
                return(visibilitySettings.PublicVisibility);

            default:
                return(visibilitySettings.PublicVisibility & PersonalVisibilitySettings.Anonymous);
            }
        }
示例#4
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;
            }
        }
示例#5
0
        private static PersonalVisibility GetAnonymousVisibility(PersonalContactDegree contactDegree)
        {
            switch (contactDegree)
            {
            case PersonalContactDegree.Self:
                return(PersonalVisibility.All);

            default:
                return(PersonalVisibilitySettings.InvisiblePublic);
            }
        }
示例#6
0
        public void Set(PersonalContactDegree degree, PersonalVisibility flag)
        {
            // Make sure the flag is set for all lower degrees.

            SetFlag(degree, flag);

            // Make sure it is not set for all higher degrees.

            if (degree < PersonalContactDegree.Public)
            {
                ResetFlag(degree + 1, flag);
            }
        }
示例#7
0
        public static string GetRepresentativeDescriptionText(this PersonalContactDegree contactDegree)
        {
            switch (contactDegree)
            {
            case PersonalContactDegree.Representative:
                return("My nominated representative");

            case PersonalContactDegree.Representee:
                return("Represented by me");

            default:
                return(null);
            }
        }
示例#8
0
        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;
        }
示例#9
0
 public PersonalView(Member member, PersonalContactDegree effectiveContactDegree, PersonalContactDegree actualContactDegree)
 {
     _member = member;
     _effectiveContactDegree = effectiveContactDegree;
     _actualContactDegree    = actualContactDegree;
 }
示例#10
0
        internal static bool CanAccess(PersonalContactDegree contactDegree, PersonalVisibilitySettings visibilitySettings, PersonalVisibility visibility)
        {
            var contactVisibility = visibilitySettings == null?GetAnonymousVisibility(contactDegree) : GetVisibility(contactDegree, visibilitySettings);

            return(contactVisibility.IsFlagSet(visibility));
        }