public Participations GetParticipations(bool includeTerminated) { if (!includeTerminated) { return(GetParticipations()); } return(Participations.FromArray(SwarmDb.GetDatabaseForReading().GetParticipations(this))); }
/// <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); }
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())); }
//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]; } } }
public bool ParticipatesInOrganizationOrParent(int orgId) { Participations participations = GetParticipations(); foreach (Participation membership in participations) { if (membership.Organization.IsOrInherits(orgId)) { return(true); } } return(false); }
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"); }
public bool ParticipatesInOrganization(int orgId) { Participations participations = GetParticipations(); foreach (Participation membership in participations) { if (membership.OrganizationId == orgId) { return(true); } } return(false); }
/// <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); }
public Participations GetParticipations() { return (Participations.FromArray(SwarmDb.GetDatabaseForReading() .GetParticipations(this, DatabaseCondition.ActiveTrue))); }