Ejemplo n.º 1
0
 public void AddParticipation(string competition, string number)
 {
     if (Participations.Count(c => c.Competition == competition) == 0)
     {
         Participations.Add(new Participant()
         {
             Competition = competition, Number = number, Couple = this
         });
     }
 }
Ejemplo n.º 2
0
    public List <ListPerson> GetData(string sortBy)
    {
        List <ListPerson> retval = new List <ListPerson>();

        if (this.listedPersons != null)
        {
            People ppl = People.FromIdentities(this.listedPersons);
            Dictionary <int, List <BasicParticipation> > membershipTable =
                Participations.GetParticipationsForPeople(ppl, Participation.GracePeriod);
            Participations participationsToLoad = new Participations();
            foreach (Person p in ppl)
            {
                if (membershipTable.ContainsKey(p.Identity))
                {
                    foreach (BasicParticipation bm in membershipTable[p.Identity])
                    {
                        if (bm.OrganizationId == this.selectedOrgId)
                        {
                            Participation ms = Participation.FromBasic(bm);
                            participationsToLoad.Add(ms);
                        }
                    }
                }
            }
            Participation.LoadPaymentStatuses(participationsToLoad);

            Dictionary <int, Participation> memberships = new Dictionary <int, Participation>();
            foreach (Participation ms in participationsToLoad)
            {
                memberships[ms.Identity] = ms;
            }

            foreach (Person p in ppl)
            {
                ListPerson lp = new ListPerson(p);
                if (membershipTable.ContainsKey(p.Identity))
                {
                    foreach (BasicParticipation bm in membershipTable[p.Identity])
                    {
                        if (bm.OrganizationId == this.selectedOrgId)
                        {
                            Participation ms = memberships[bm.MembershipId];
                            lp.JoinedDate   = ms.MemberSince;
                            lp.ExpiresDate  = ms.Expires;
                            lp.MembershipId = ms.Identity;
                            retval.Add(lp);
                        }
                    }
                }
            }
        }

        PropertyInfo pi = typeof(ListPerson).GetProperty(sortBy);

        if (pi != null)
        {
            MemberInfo[] miA = pi.PropertyType.GetMember("CompareTo", MemberTypes.Method,
                                                         BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
            if (miA.Length > 0)
            {
                MethodInfo mi = (MethodInfo)miA[0];
                retval.Sort(
                    delegate(ListPerson p1, ListPerson p2)
                {
                    return(Convert.ToInt32(mi.Invoke(pi.GetValue(p1, null), new[] { pi.GetValue(p2, null) })));
                });
            }
        }
        return(retval);
    }
Ejemplo n.º 3
0
        // This should run daily, suggested right after midnight.

        public static void ChurnExpiredMembers()
        {
            Organizations organizations = Organizations.GetAll();

            foreach (Organization organization in organizations)
            {
                Participations participations = Participations.GetExpired(organization);
                // Mail each expiring member

                foreach (Participation membership in participations)
                {
                    //only remove expired memberships
                    if (membership.Expires > DateTime.Now.Date)
                    {
                        continue;
                    }

                    Person person = membership.Person;

                    // TODO: Check for positions that expire with membership


                    // Mail

                    Participations personParticipations   = person.GetParticipations();
                    Participations participationsToDelete = new Participations();
                    foreach (Participation personMembership in personParticipations)
                    {
                        if (personMembership.Expires <= DateTime.Now.Date)
                        {
                            participationsToDelete.Add(personMembership);
                        }
                    }


                    ExpiredMail expiredmail    = new ExpiredMail();
                    string      membershipsIds = "";

                    if (participationsToDelete.Count > 1)
                    {
                        foreach (Participation personMembership in participationsToDelete)
                        {
                            membershipsIds += "," + personMembership.MembershipId;
                        }
                        membershipsIds = membershipsIds.Substring(1);
                        string expiredMemberships = "";
                        foreach (Participation personMembership in participationsToDelete)
                        {
                            if (personMembership.OrganizationId != organization.Identity)
                            {
                                expiredMemberships += ", " + personMembership.Organization.Name;
                            }
                        }
                        expiredMemberships      += ".  ";
                        expiredmail.pMemberships = expiredMemberships.Substring(2).Trim();
                    }

                    //TODO: URL for renewal, recieving end of this is NOT yet implemented...
                    // intended to recreate the memberships in MID
                    string tokenBase = person.PasswordHash + "-" + membership.Expires.Year;
                    string stdLink   = "https://pirateweb.net/Pages/Public/SE/People/MemberRenew.aspx?MemberId=" +
                                       person.Identity +
                                       "&SecHash=" + SHA1.Hash(tokenBase).Replace(" ", "").Substring(0, 8) +
                                       "&MID=" + membershipsIds;

                    expiredmail.pStdRenewLink = stdLink;
                    expiredmail.pOrgName      = organization.MailPrefixInherited;

                    person.SendNotice(expiredmail, organization.Identity);

                    person.DeleteSubscriptionData();

                    string orgIdString = string.Empty;

                    foreach (Participation personMembership in participationsToDelete)
                    {
                        if (personMembership.Active)
                        {
                            orgIdString += " " + personMembership.OrganizationId;

                            personMembership.Terminate(EventSource.PirateBot, null, "Member churned in housekeeping.");
                        }
                    }
                }
            }
        }