public CBugQuery GridColumnQuery(CGridColumn col)
 {
     return api.Bug.NewBugQuery();
 }
 public CBugQuery GridColumnSortQuery(CGridColumn col, bool fDescending, bool fIncludeSelect)
 {
     CBugQuery gridColumnQuery = api.Bug.NewBugQuery();
     string orderByColumn = null;
     string tableName = null;
     switch (col.iType)
     {
         case 0:
             orderByColumn = "Hours";
             tableName = Tables.HOURS_TABLE;
             break;
         case 1:
             orderByColumn = "LastEditor";
             tableName = Tables.SPLIT_TABLE;
             break;
     }
     var pluginTableName = GetPluginTableName(tableName);
     gridColumnQuery.AddOrderBy(string.Format("{0}.{1} {2}", pluginTableName, orderByColumn, fDescending ? "DESC" : "ASC"));
     return gridColumnQuery;
 }
        public CBugQuery GridColumnSortQuery(CGridColumn col, bool fDescending, bool fIncludeSelect)
        {
            CBugQuery bq = api.Bug.NewBugQuery();

            if (fIncludeSelect)
                bq.AddSelect(string.Format("{0}.sFullName",
                                           PERSON_TABLE_ALIAS));

            if (col.iType == 0)
            {
                bq.AddOrderBy(string.Format("{0}.sFullName {1}",
                                            PERSON_TABLE_ALIAS,
                                            fDescending ? "DESC" : "ASC"));
            }

            return bq;
        }
        public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText)
        {
            string columnName = "Hours";
            switch (col.iType)
            {
                case 0:
                    columnName = "Hours";
                    break;
                case 1:
                    columnName = "LastEditor";
                    break;
            }
            var valuesAsStrings = new string[rgBug.Length];

            for (int i = 0; i < rgBug.Length; i++)
            {
                object value = rgBug[i].GetPluginField(Statics.PluginId, columnName);

                if (col.iType == 0)
                {
                    valuesAsStrings[i] = (value == null) ? "No" : "Yes";
                }
                else
                {
                    valuesAsStrings[i] = (value == null) ? "No" : "Yes";
                }
            }
            return valuesAsStrings;
        }
        // original opener comes up as blank if the case originated as an email
        public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText)
        {
            string[] rgsValues = new string[rgBug.Length];

            for (int i = 0; i < rgBug.Length; i++)
            {
                CBug bug = rgBug[i];
                bug.IgnorePermissions = true;

                object oQueryField = bug.QueryField(PLUGIN_FIELD_NAME);
                int ixPersonOriginallyOpenedBy = (oQueryField == DBNull.Value) ?
                                                 IXPERSON_INVALID :
                                                 Convert.ToInt32(oQueryField);
                if (ixPersonOriginallyOpenedBy == IXPERSON_INVALID)
                {
                    rgsValues[i] = "";
                }
                else
                {
                    CPerson personOrigOpener = api.Person.GetPerson(ixPersonOriginallyOpenedBy);
                    rgsValues[i] = (api.Person.GetCurrentPerson().CanSee(personOrigOpener.ixPerson)) ?
                                   GetPersonLink(personOrigOpener) :
                                   personOrigOpener.sFullName;
                }
            }
            return rgsValues;
        }
        public CBugQuery GridColumnQuery(CGridColumn col)
        {
            CBugQuery bugQuery = api.Bug.NewBugQuery();

            bugQuery.AddSelect(string.Format("{0}.ixPerson as {1}, {2}.sFullName",
                                             BUGEVENT_TABLE_ALIAS,
                                             PLUGIN_FIELD_NAME,
                                             PERSON_TABLE_ALIAS));

            bugQuery.AddLeftJoin("BugEvent",
                                 GetBugOpenedEventLeftJoinClause(),
                                 BUGEVENT_TABLE_ALIAS);
            bugQuery.AddLeftJoin("Person",
                                 string.Format("{0}.ixPerson = {1}.ixPerson",
                                               PERSON_TABLE_ALIAS,
                                               BUGEVENT_TABLE_ALIAS),
                                 PERSON_TABLE_ALIAS);
            return bugQuery;
        }
        public string[] GridColumnDisplay(CGridColumn col,
										  CBug[] rgBug,
										  bool fPlainText)
        {
            string sTableColumn = "sName";
            switch (col.iType)
            {
                case 0:
                    sTableColumn = "sName";
                    break;
                case 1:
                    sTableColumn = "dtBirth";
                    break;
            }
            string[] sValues = new string[rgBug.Length];

            for (int i = 0; i < rgBug.Length; i++)
            {
                /* For tables joined in IPluginBugJoin, use
                 * GetPluginField to fetch the values you need
                 * for the GridColumn. */
                object pluginField = rgBug[i].GetPluginField(PLUGIN_ID, string.Format("{0}", sTableColumn));
                sValues[i] = (pluginField == null) ?
                             "" :
                             HttpUtility.HtmlEncode(pluginField.ToString());
            }
            return sValues;
        }
        public CBugQuery GridColumnSortQuery(CGridColumn col, bool fDescending,
												bool fIncludeSelect)
        {
            string sTableColumn = "sName";
            switch (col.iType)
            {
                case 0:
                    sTableColumn = "sName";
                    break;
                case 1:
                    sTableColumn = "dtBirth";
                    break;
            }
            /* Return a CBugQuery with the data you need joined
             * in and sorted appropriately. Include an explicit
             * select if fIncludeSelect is true. If your table is
             * already joined to bug in IPluginBugJoin, FogBugz
             * does the work for you, ignore fIncludeSelect. */
            CBugQuery bugQuery = api.Bug.NewBugQuery();
            bugQuery.AddOrderBy(string.Format("{0}.{1} {2}",
                                            sPrefixedTableName,
                                            sTableColumn,
                                            (fDescending ? "DESC" : "ASC")
                                            )
                             );
            return bugQuery;
        }
 public CBugQuery GridColumnQuery(CGridColumn col)
 {
     /* Return a CBugQuery with the data you need joined
      * in. If your table is already joined to bug in
      * IPluginBugJoin, FogBugz does the work for you. */
     return api.Bug.NewBugQuery();
 }
        public CBugQuery GridColumnSortQuery(CGridColumn col, bool fDescending, bool fIncludeSelect)
        {
            /* It's good practice to switch on the unique column iType if your plugin
             * specifies multiple custom columns. */

            string sTableColumn = "ixAwesomeness";
            switch (col.iType)
            {
                case 0:
                    sTableColumn = "ixAwesomeness";
                    break;
            }

            /* Return a CBugQuery with the data you need joined
             * in and sorted appropriately. Include an explicit
             * select if fIncludeSelect is true. If your table is
             * already joined to bug in IPluginBugJoin, FogBugz
             * does the work for you, ignore fIncludeSelect. */
            CBugQuery bugQuery = api.Bug.NewBugQuery();
            bugQuery.AddOrderBy(string.Format("{0}.{1} {2}",
                                              sBugAwesomenessTableName,
                                              sTableColumn,
                                              (fDescending ? "DESC" : "ASC")
                                )
            );

            return bugQuery;
        }
        public string[] GridColumnDisplay(CGridColumn col, CBug[] rgBug, bool fPlainText)
        {
            string[] sValues = new string[rgBug.Length];

            for (int i = 0; i < rgBug.Length; i++)
            {
                if (rgBug[i].GetPluginField(PLUGIN_ID, "ixAwesomeness") == null)
                    sValues[i] = String.Empty;
                else
                    sValues[i] = HttpUtility.HtmlEncode(
                        GetAwesomenessString(
                            Convert.ToInt32(rgBug[i].GetPluginField(PLUGIN_ID, "ixAwesomeness"))
                        )
                    );
            }
            return sValues;
        }