コード例 #1
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        public Participations GetParticipations(bool includeTerminated)
        {
            if (!includeTerminated)
            {
                return(GetParticipations());
            }

            return(Participations.FromArray(SwarmDb.GetDatabaseForReading().GetParticipations(this)));
        }
コード例 #2
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        /// <summary>
        ///     Returns most recent membership for each org wich is active or terminated within the grace period
        /// </summary>
        /// <param name="orgs">List of ids. If empty, all orgs</param>
        /// <param name="gracePeriod">For exired, number of days to add to allow it to be returned</param>
        /// <returns></returns>
        public Participations GetRecentParticipations(List <int> orgs, int gracePeriod)
        {
            Participations participations = GetParticipations(true);
            Dictionary <int, Participation> collectMembers = new Dictionary <int, Participation>();

            participations.Sort(
                delegate(Participation ms1, Participation ms2) { return(ms2.DateTerminated.CompareTo(ms1.DateTerminated)); });

            //Keep one for each org, the active one or the one with the highest Terminationdate
            foreach (Participation membership in participations)
            {
                if (orgs.Count == 0 || orgs.Contains(membership.OrganizationId))
                {
                    if (membership.Active)
                    {
                        collectMembers[membership.OrganizationId] = membership;
                    }
                    else if (membership.DateTerminated.AddDays(gracePeriod) > DateTime.Today)
                    {
                        if (!collectMembers.ContainsKey(membership.OrganizationId) ||
                            collectMembers[membership.OrganizationId].Active == false)
                        {
                            collectMembers[membership.OrganizationId] = membership;
                        }
                    }
                }
            }

            Participations collectedMS = new Participations();

            collectedMS.AddRange(collectMembers.Values);

            if (collectedMS.Count > 0)
            {
                //sort to get most recent first
                collectedMS.Sort(delegate(Participation ms1, Participation ms2)
                {
                    if (ms1.Active && ms1.Active != ms2.Active)
                    {
                        return(-1); // active before terminated
                    }
                    if (ms1.Active != ms2.Active)
                    {
                        return(1); // active before terminated
                    }
                    if (ms1.Active)
                    {
                        return(ms1.Expires.CompareTo(ms2.Expires));           // active with lowest expiry
                    }
                    return(ms2.DateTerminated.CompareTo(ms1.DateTerminated)); // terminated with latest terminationdate
                });
            }

            return(collectedMS);
        }
コード例 #3
0
ファイル: People.cs プロジェクト: osoftware/Swarmops
        public static People FromMemberships(Participations participations)
        {
            List <int> personIds = new List <int>();

            foreach (Participation membership in participations)
            {
                personIds.Add(membership.PersonId);
            }

            return(FromIdentities(personIds.ToArray()));
        }
コード例 #4
0
ファイル: Participation.cs プロジェクト: osoftware/Swarmops
        //Optimization metod, loadMultiple in one call
        public static void LoadPaymentStatuses(Participations mss)
        {
            Dictionary <int, BasicMembershipPaymentStatus> statuses =
                SwarmDb.GetDatabaseForReading().GetMembershipPaymentStatuses(mss.Identities);

            foreach (Participation ms in mss)
            {
                if (ms._paymentStatus == null && statuses.ContainsKey(ms.Identity))
                {
                    ms._paymentStatus = statuses[ms.Identity];
                }
            }
        }
コード例 #5
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        public bool ParticipatesInOrganizationOrParent(int orgId)
        {
            Participations participations = GetParticipations();

            foreach (Participation membership in participations)
            {
                if (membership.Organization.IsOrInherits(orgId))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #6
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        public Participation ParticipationOf(Organization organization)
        {
            Participations participations = GetParticipations();

            foreach (Participation participation in participations)
            {
                if (participation.OrganizationId == organization.Identity)
                {
                    return(participation);
                }
            }

            throw new InvalidOperationException("No valid participation for requested organization");
        }
コード例 #7
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        public bool ParticipatesInOrganization(int orgId)
        {
            Participations participations = GetParticipations();

            foreach (Participation membership in participations)
            {
                if (membership.OrganizationId == orgId)
                {
                    return(true);
                }
            }

            return(false);
        }
コード例 #8
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
        /// <summary>
        ///     Returns the most recent membership for an org wich is active or terminated within the grace period
        /// </summary>
        /// <param name="gracePeriod">For exired, number of days to add to allow it to be returned</param>
        /// <param name="orgId"></param>
        /// <returns></returns>
        public Participation GetRecentParticipation(int gracePeriod, int orgId)
        {
            List <int> orgIdList = new List <int>();

            orgIdList.Add(orgId);
            Participations mss = GetRecentParticipations(orgIdList, gracePeriod);

            foreach (Participation ms in mss)
            {
                if (ms.OrganizationId == orgId)
                {
                    return(ms);
                }
            }
            return(null);
        }
コード例 #9
0
ファイル: Person.cs プロジェクト: mikran/Swarmops
 public Participations GetParticipations()
 {
     return
         (Participations.FromArray(SwarmDb.GetDatabaseForReading()
                                   .GetParticipations(this, DatabaseCondition.ActiveTrue)));
 }