public bool FilterCommitBefore(CFilter filter)
        {
            if (api.Request[api.AddPluginPrefix("HoursFilterType")] != null)
            {
                var pluginField = filter.GetPluginField(Statics.PluginId, "HoursFilterType");
                PreCommitHoursSelection = pluginField == null ? "Unset" : pluginField.ToString();

                var newValue = api.Request[api.AddPluginPrefix("HoursFilterType")].ToLower();
                FilterType type = FilterType.Unset;
                switch (newValue)
                {
                    case "yes":
                        type = FilterType.Yes;
                        break;
                    case "no":
                        type = FilterType.No;
                        break;
                }
                filter.SetPluginField(Statics.PluginId, "HoursFilterType", type.ToString());
            }

            if (api.Request[api.AddPluginPrefix("SplitFilterType")] != null)
            {
                var pluginField = filter.GetPluginField(Statics.PluginId, "SplitFilterType");
                PreCommitSplitSelection = pluginField == null ? "Unset" : pluginField.ToString();

                var newValue = api.Request[api.AddPluginPrefix("SplitFilterType")].ToLower();
                FilterType type = FilterType.Unset;
                switch (newValue)
                {
                    case "yes":
                        type = FilterType.Yes;
                        break;
                    case "no":
                        type = FilterType.No;
                        break;
                }
                filter.SetPluginField(Statics.PluginId, "SplitFilterType", type.ToString());
            }
            return true;
        }
 public string FilterBugEntryUrlParams(CFilter filter)
 {
     return api.PluginPrefix + "HoursFilterType=" + filter.GetPluginField(Statics.PluginId, "HoursFilterType") + "&SplitFilterType=" + filter.GetPluginField(Statics.PluginId, "SplitFilterType");
 }
 protected virtual FilterType GetSplitFilterType(CFilter filter)
 {
     if (filter.GetPluginField(Statics.PluginId, "SplitFilterType") != null)
     {
         return (FilterType)Enum.Parse(typeof(FilterType), Convert.ToString(filter.GetPluginField(Statics.PluginId, "SplitFilterType")));
     }
     return FilterType.Unset;
 }
        public bool FilterCommitBefore(CFilter Filter)
        {
            if (api.Request[sPluginFieldNamePrefixed] != null)
            {
                ixPersonOriginallyOpenedByPreCommit =
                Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME));

                int ixPersonOriginallyOpenedBy = IXPERSON_INVALID;

                /* use tryparse in case the URL querystring value isn't a valid integer */
                if (Int32.TryParse(api.Request[sPluginFieldNamePrefixed].ToString(),
                                   out ixPersonOriginallyOpenedBy))
                {
                    // if the requested value isn't an actual CPerson, set the plugin field to "any"
                    if (!IsValidPerson(ixPersonOriginallyOpenedBy))
                        ixPersonOriginallyOpenedBy = IXPERSON_ANY;
                    Filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME,
                        ixPersonOriginallyOpenedBy);
                }
            }

            return true;
        }
 /// <summary>
 /// Read the filter's ixPersonOriginallyOpenedBy. If it's invalid, fix it (set it to "any")
 /// </summary>
 /// <param name="filter">Filter to check (and possibly update)</param>
 /// <returns>The validated ixPersonOriginallyOpenedBy</returns>
 protected int GetFieldValueFromFilter(CFilter filter)
 {
     filter.IgnorePermissions = true;
     int ixPersonFromFilter = Convert.ToInt32(filter.GetPluginField(PLUGIN_ID,
                                                                    PLUGIN_FIELD_NAME));
     if (!IsValidPerson(ixPersonFromFilter))
     {
         ixPersonFromFilter = IXPERSON_ANY;
         filter.SetPluginField(PLUGIN_ID, PLUGIN_FIELD_NAME, ixPersonFromFilter);
     }
     return ixPersonFromFilter;
 }
Exemplo n.º 6
0
        public string FilterOptionsUrlParams(CFilter filter)
        {
            /* To make the filter saveable, we need to assign a querystring
             * parameter to this filter setting. */

            int ixAwesomeness = Convert.ToInt32(
                filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"));

            if (ixAwesomeness < 1)
                return "";
            else
                return api.PluginPrefix + "ixAwesomeness="
                    + Convert.ToString(ixAwesomeness);
        }
Exemplo n.º 7
0
        protected string GetAwesomenessSelect(CFilter Filter)
        {
            List<string> rgsAwesomenessLevels;
            List<string> rgsAwesomenessIxs;

            int ixSelectedIndex = 0;

            CSelectQuery sq = api.Database.NewSelectQuery(sAwesomenessTableName);

            sq.AddSelect("*");

            /* Iterate through the data set and populate the drop-down */
            DataSet ds = sq.GetDataSet();

            if (ds.Tables[0] == null || ds.Tables[0].Rows.Count == 0)
                return string.Empty;

            int numOptions = ds.Tables[0].Rows.Count;

            rgsAwesomenessLevels = new List<string>();
            rgsAwesomenessIxs = new List<string>();

            for (int i = 0; i < numOptions; i++)
            {
                rgsAwesomenessLevels.Add(ds.Tables[0].Rows[i]["sAwesomenessLevel"].ToString());
                rgsAwesomenessIxs.Add(ds.Tables[0].Rows[i]["ixAwesomeness"].ToString());
            }

            /* If there's already an "Awesomeness" value, set the selected index of the drop-down
             * to the proper non-zero value */

            if (Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) != 0)
                ixSelectedIndex = Convert.ToInt32(
                    Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) - 1;

            return Forms.SelectInput(api.PluginPrefix + "ixAwesomeness",
                rgsAwesomenessLevels.ToArray(),
                rgsAwesomenessIxs[ixSelectedIndex],
                rgsAwesomenessIxs.ToArray());
        }
Exemplo n.º 8
0
        public CSelectQuery FilterOptionsQuery(CFilter filter)
        {
            /* Specify a query for the list of cases to be returned when the
             * filter is imposed. */

            int ixAwesomeness =
                ToAwesomenessSelectRange(
                Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")));

            CSelectQuery query = api.Database.NewSelectQuery("Bug");
            if (ixAwesomeness == 0)
                return query;

            query.AddLeftJoin(sBugAwesomenessTableName, "Bug.ixBug = joinedBug.ixBug", "joinedBug");
            query.SetParamInt("ixAwesomeness", ixAwesomeness);

            if (ixAwesomeness == 1)
            {
                query.AddWhere(
                    @"joinedBug.ixAwesomeness IS NULL OR
                    joinedBug.ixAwesomeness = @ixAwesomeness");
            }
            else
            {
                query.AddWhere("joinedBug.ixAwesomeness = @ixAwesomeness");
            }

            return query;
        }
Exemplo n.º 9
0
        public CFilterStringList FilterOptionsString(CFilter filter)
        {
            int ixAwesomeness = Convert.ToInt32(
                filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"));

            CFilterStringList list = new CFilterStringList();

            /* Return a string for the "Filter:" message at the top of the case list
             * so that the the user can clearly interpret current filter settings.
             * ixAwesomeness = 0 will correspond to "any level of awesomeness," so
             * no message is shown at all in that case. */

            string sFilterString;
            /* if there is an awesomeness in the range of possible values,
             * generate the filter string */
            if (ixAwesomeness > 0 && ixAwesomeness <= rgsAwesomenessIxs.Length)
            {
                if (ixAwesomeness == 1)
                {
                    sFilterString = "with no level of awesomeness specified";
                }
                else
                {
                    sFilterString = String.Format(@"with awesomeness level ""{0}""",
                        GetAwesomenessString(ixAwesomeness));
                }
                /* the second parameter to CFilterStringList.Add specifies the
                 * CFilterOption by name to display when the text is clicked */
                list.Add(sFilterString, "awesomeness");
            }
            return list;
        }
Exemplo n.º 10
0
        public CFilterOption[] FilterOptions(CFilter filter)
        {
            /* Create a new filter option to be included in the list of options
             * available in the "Filter:" drop-down at the top of the case
             * list. */

            int ixAwesomeness =
                ToAwesomenessSelectRange(
                Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")));

            CFilterOption fo = api.Filter.NewFilterOption();

            /* Specify a single-select drop-down, and add a default value of "any" */

            fo.SetSelectOne(rgsAwesomenessLevels,
               Convert.ToString(ixAwesomeness), rgsAwesomenessIxs);
            fo.SetDefault("0", "Any");
            fo.sQueryParam = api.PluginPrefix + "ixAwesomeness";
            fo.fShowDialogItem = true;
            fo.sHeader = "Level of Awesomeness";
            fo.sName = "awesomeness";
            return new CFilterOption[] { fo };
        }
Exemplo n.º 11
0
        public string[] FilterDisplayListFields(CFilter Filter)
        {
            int ixAwesomeness = Convert.ToInt32(
                Filter.GetPluginField(PLUGIN_ID, "ixAwesomeness"));
            /* including dashes to match those automatically added on the
             * edit filter page, so the user knows it's not the literal
             * awesomeness value "Any" */
            string s = (ixAwesomeness < 2) ?
                       "-- Any --" :
                       GetAwesomenessString(ixAwesomeness);

            return new string[] { s };
        }
Exemplo n.º 12
0
        public bool FilterCommitBefore(CFilter Filter)
        {
            /* Set the preCommitAwesomenessLevel member variable */

            if (api.Request[api.AddPluginPrefix("ixAwesomeness")] != null)
            {
                int ixAwesomenessNew = -1;

                preCommitAwesomenessLevel = Convert.ToInt32(Filter.GetPluginField(PLUGIN_ID,
                        "ixAwesomeness"));

                /* use tryparse in case the URL querystring value isn't a valid integer */
                if (Int32.TryParse(api.Request[api.AddPluginPrefix("ixAwesomeness")].ToString(), out ixAwesomenessNew) &&
                    (ixAwesomenessNew > -1)
                )
                    Filter.SetPluginField(PLUGIN_ID, "ixAwesomeness",
                        ixAwesomenessNew);
            }

            return true;
        }
Exemplo n.º 13
0
 public string FilterBugEntryUrlParams(CFilter filter)
 {
     return api.PluginPrefix +
         "ixAwesomeness=" + Convert.ToString(
         Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")));
 }
Exemplo n.º 14
0
        public bool FilterBugEntryCanCreate(CFilter filter)
        {
            //For this plugin example, we won't offer users an "Add Case" control in the
            //grid view if the current filter has a level of awesomeness of "Low."

            if (Convert.ToInt32(filter.GetPluginField(PLUGIN_ID, "ixAwesomeness")) == 2)
                return false;
            else
                return true;
        }