/// <summary>
        /// Provides a list of users to whom the calendar has been shared.
        /// </summary>
        /// <remarks>
        /// http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/doc/Extensions/caldav-sharing.txt
        /// (Section 5.2.2)
        public async Task <IEnumerable <SharingInvite> > GetInviteAsync()
        {
            IList <SharingInvite> invites = new List <SharingInvite>();

            foreach (DataRow rowAccess in rowsAccess)
            {
                if (rowAccess.Field <bool>("Owner"))
                {
                    continue;
                }

                string  userId = rowAccess.Field <string>("UserId");
                DavUser user   = Context.Users.FirstOrDefault(p => p.UserName.Equals(userId, StringComparison.InvariantCultureIgnoreCase));

                SharingInvite ace = new SharingInvite
                {
                    Address      = string.Format("email:{0}", user.Email)
                    , Access     = rowAccess.Field <bool>("Write") ? SharingInviteAccess.ReadWrite : SharingInviteAccess.Read
                    , CommonName = user.UserName
                    , Status     = SharingInviteStatus.Accepted
                };
            }

            return(invites);
        }
        /// <summary>
        /// Provides a list of users to whom the calendar has been shared.
        /// </summary>
        /// <remarks>
        /// http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/doc/Extensions/caldav-sharing.txt
        /// (Section 5.2.2)
        public async Task <IEnumerable <SharingInvite> > GetInviteAsync()
        {
            IList <SharingInvite> invites = new List <SharingInvite>();

            foreach (DataRow rowAccess in rowsAccess)
            {
                if (rowAccess.Field <bool>("Owner"))
                {
                    continue;
                }

                string userId = rowAccess.Field <string>("UserId");
                System.Web.Security.MembershipUser user = System.Web.Security.Membership.GetUser(userId);

                SharingInvite ace = new SharingInvite
                {
                    Address      = string.Format("email:{0}", user.Email)
                    , Access     = rowAccess.Field <bool>("Write") ? SharingInviteAccess.ReadWrite : SharingInviteAccess.Read
                    , CommonName = user.UserName
                    , Status     = SharingInviteStatus.Accepted
                };
            }

            return(invites);
        }