Example #1
0
 public DojoMemberType(int id)
 {
     this.iD  = id;
     isSynced = DojoMemberTypeManager._fill(this);
 }
Example #2
0
 public void Delete()
 {
     DojoMemberTypeManager._delete(this.iD);
     this.iD  = 0;
     isSynced = false;
 }
        public DojoOrganizationCollection GetCollection(int topCount, string whereClause, string sortClause, params DojoOrganizationFlags[] optionFlags)
        {
            StringBuilder query;
            Database      database;
            DbCommand     dbCommand;
            IDataReader   r;
            DojoOrganizationCollection dojoOrganizationCollection;
            int hashcode;

            // Cache Handling

            hashcode = 0;

            if (cacheEnabled)
            {
                hashcode = topCount.GetHashCode() +
                           whereClause.GetHashCode() +
                           sortClause.GetHashCode() +
                           tableName.GetHashCode();

                DojoOrganizationCollection collection = cacheFindCollection(hashcode);
                if (collection != null)
                {
                    return(collection);
                }
            }

            int innerJoinOffset;

            query = new StringBuilder("SELECT ");

            if (topCount > 0)
            {
                query.Append("TOP ");
                query.Append(topCount);
                query.Append(" ");
            }

            foreach (string columnName in InnerJoinFields)
            {
                query.Append("DojoOrganization.");
                query.Append(columnName);
                query.Append(",");
            }

            innerJoinOffset = InnerJoinFields.GetUpperBound(0) + 1;
            int locationOffset = -1;
            int administrativeContactOffset = -1;
            int defaultMemberTypeOffset     = -1;

            //
            // Append Option Flag Fields
            //
            if (optionFlags != null)
            {
                for (int x = 0; x < optionFlags.Length; x++)
                {
                    switch (optionFlags[x])
                    {
                    case DojoOrganizationFlags.Location:
                        for (int i = 0; i <= GreyFoxContactManager.InnerJoinFields.GetUpperBound(0); i++)
                        {
                            query.Append("Location.");
                            query.Append(GreyFoxContactManager.InnerJoinFields[i]);
                            query.Append(",");
                        }
                        locationOffset  = innerJoinOffset;
                        innerJoinOffset = locationOffset + GreyFoxContactManager.InnerJoinFields.GetUpperBound(0) + 1;
                        break;

                    case DojoOrganizationFlags.AdministrativeContact:
                        for (int i = 0; i <= GreyFoxContactManager.InnerJoinFields.GetUpperBound(0); i++)
                        {
                            query.Append("AdministrativeContact.");
                            query.Append(GreyFoxContactManager.InnerJoinFields[i]);
                            query.Append(",");
                        }
                        administrativeContactOffset = innerJoinOffset;
                        innerJoinOffset             = administrativeContactOffset + GreyFoxContactManager.InnerJoinFields.GetUpperBound(0) + 1;
                        break;

                    case DojoOrganizationFlags.DefaultMemberType:
                        for (int i = 0; i <= DojoMemberTypeManager.InnerJoinFields.GetUpperBound(0); i++)
                        {
                            query.Append("DefaultMemberType.");
                            query.Append(DojoMemberTypeManager.InnerJoinFields[i]);
                            query.Append(",");
                        }
                        defaultMemberTypeOffset = innerJoinOffset;
                        innerJoinOffset         = defaultMemberTypeOffset + DojoMemberTypeManager.InnerJoinFields.GetUpperBound(0) + 1;
                        break;
                    }
                }
            }

            //
            // Remove trailing comma
            //
            query.Length--;
            if (optionFlags != null)
            {
                query.Append(" FROM ");

                //
                // Start INNER JOIN expressions
                //
                for (int x = 0; x < optionFlags.Length; x++)
                {
                    query.Append("(");
                }

                query.Append("kitTessen_Organizations AS DojoOrganization");
            }
            else
            {
                query.Append(" FROM kitTessen_Organizations AS DojoOrganization");
            }
            //
            // Finish INNER JOIN expressions
            //
            if (optionFlags != null)
            {
                for (int x = 0; x < optionFlags.Length; x++)
                {
                    switch (optionFlags[x])
                    {
                    case DojoOrganizationFlags.Location:
                        query.Append(" LEFT JOIN kitTessen_Locations AS Location ON DojoOrganization.LocationID = Location.GreyFoxContactID)");
                        break;

                    case DojoOrganizationFlags.AdministrativeContact:
                        query.Append(" LEFT JOIN sysGlobal_Contacts AS AdministrativeContact ON DojoOrganization.AdministrativeContactID = AdministrativeContact.GreyFoxContactID)");
                        break;

                    case DojoOrganizationFlags.DefaultMemberType:
                        query.Append(" LEFT JOIN kitTessen_MemberTypes AS DefaultMemberType ON DojoOrganization.DefaultMemberTypeID = DefaultMemberType.DojoMemberTypeID)");
                        break;
                    }
                }
            }

            //
            // Render where clause
            //
            if (whereClause != string.Empty)
            {
                query.Append(" WHERE ");
                query.Append(whereClause);
            }

            //
            // Render sort clause
            //
            if (sortClause != string.Empty)
            {
                query.Append(" ORDER BY ");
                query.Append(sortClause);
            }

            //
            // Render final semicolon
            //
            query.Append(";");
            database  = DatabaseFactory.CreateDatabase();
            dbCommand = database.GetSqlStringCommand(query.ToString());
                        #if DEBUG
            try
            {
                r = database.ExecuteReader(dbCommand);
            }
            catch (Exception e)
            {
                string msg = e.Message;
                throw(new Exception(msg + " --- Query: " + query.ToString()));
            }
                        #else
            r = database.ExecuteReader(dbCommand);
                        #endif

            dojoOrganizationCollection = new DojoOrganizationCollection();

            while (r.Read())
            {
                DojoOrganization dojoOrganization = ParseFromReader(r, 0, 1);

                // Fill Location
                if (locationOffset != -1 && !r.IsDBNull(locationOffset))
                {
                    GreyFoxContactManager.FillFromReader(dojoOrganization.location, "kitTessen_Locations", r, locationOffset, locationOffset + 1);
                }

                // Fill AdministrativeContact
                if (administrativeContactOffset != -1 && !r.IsDBNull(administrativeContactOffset))
                {
                    GreyFoxContactManager.FillFromReader(dojoOrganization.administrativeContact, "sysGlobal_Contacts", r, administrativeContactOffset, administrativeContactOffset + 1);
                }

                // Fill DefaultMemberType
                if (defaultMemberTypeOffset != -1 && !r.IsDBNull(defaultMemberTypeOffset))
                {
                    DojoMemberTypeManager.FillFromReader(dojoOrganization.defaultMemberType, r, defaultMemberTypeOffset, defaultMemberTypeOffset + 1);
                }

                dojoOrganizationCollection.Add(dojoOrganization);
            }

            // Microsoft DAAB still needs to close readers.
            r.Close();

            if (cacheEnabled)
            {
                cacheStoreCollection(hashcode, dojoOrganizationCollection);
            }

            return(dojoOrganizationCollection);
        }