Example #1
0
        /// <summary>
        /// Gets the filter overrides from controls.
        /// </summary>
        /// <param name="dataView">The data view.</param>
        /// <param name="phFilters">The ph filters.</param>
        /// <returns></returns>
        public static DataViewFilterOverrides GetFilterOverridesFromControls(DataView dataView, PlaceHolder phFilters)
        {
            if (phFilters.Controls.Count > 0)
            {
                var dataViewFilter             = GetFilterFromControls(phFilters);
                var dataViewFilterOverrideList = phFilters.ControlsOfTypeRecursive <FilterField>().Select(a => new DataViewFilterOverride
                {
                    DataFilterGuid = a.DataViewFilterGuid,
                    IncludeFilter  = a.ShowCheckbox ? a.CheckBoxChecked.GetValueOrDefault(true) : true,
                    Selection      = a.GetSelection()
                }).ToList();

                if (dataView != null)
                {
                    // only include overrides that are different than the saved dataview's filter
                    var filters = GetFilterInfoList(dataView);
                    foreach (var dataViewFilterOverride in dataViewFilterOverrideList.ToList().Where(a => a.IncludeFilter == true))
                    {
                        var originalFilter = filters.FirstOrDefault(a => a.Guid == dataViewFilterOverride.DataFilterGuid);
                        if (originalFilter != null)
                        {
                            if (dataViewFilterOverride.IncludeFilter && originalFilter.Selection == dataViewFilterOverride.Selection)
                            {
                                // the filter override is the same as the saved dataview, so no need to override it
                                dataViewFilterOverrideList.Remove(dataViewFilterOverride);
                            }
                        }
                    }
                }

                return(new DataViewFilterOverrides(dataViewFilterOverrideList));
            }

            return(null);
        }
Example #2
0
        /// <summary>
        /// Gets the filter overrides from controls.
        /// </summary>
        /// <param name="dataView">The data view.</param>
        /// <param name="phFilters">The ph filters.</param>
        /// <returns></returns>
        public static DataViewFilterOverrides GetFilterOverridesFromControls(DataView dataView, PlaceHolder phFilters)
        {
            if (phFilters.Controls.Count > 0)
            {
                var dataViewFilter             = GetFilterFromControls(phFilters);
                var dataViewFilterOverrideList = phFilters.ControlsOfTypeRecursive <FilterField>().Select(a => new DataViewFilterOverride
                {
                    DataFilterGuid = a.DataViewFilterGuid,
                    IncludeFilter  = a.ShowCheckbox ? a.CheckBoxChecked.GetValueOrDefault(true) : true,
                    Selection      = a.GetSelection()
                }).ToList();

                List <int> ignoreDataViewPersistedValues = new List <int>();

                if (dataView != null)
                {
                    // only include overrides that are different than the saved dataview's filter
                    var filters = GetFilterInfoList(dataView);
                    foreach (var dataViewFilterOverride in dataViewFilterOverrideList.ToList().Where(a => a.IncludeFilter == true))
                    {
                        var originalFilter = filters.FirstOrDefault(a => a.Guid == dataViewFilterOverride.DataFilterGuid);
                        if (originalFilter != null)
                        {
                            if (dataViewFilterOverride.IncludeFilter && originalFilter.Selection == dataViewFilterOverride.Selection)
                            {
                                // the filter override is the same as the saved dataview, so no need to override it
                                dataViewFilterOverrideList.Remove(dataViewFilterOverride);
                            }
                            else
                            {
                                // if the selection has changed, and it is from a 'other data view'  filter, add the other dataview and the dataviews it impacts to the list of dataviews that should not use the persisted values
                                if (originalFilter.ImpactedDataViews?.Any() == true)
                                {
                                    ignoreDataViewPersistedValues.AddRange(originalFilter.ImpactedDataViews.Select(a => a.Id).ToList());
                                }
                            }
                        }
                    }
                }

                return(new DataViewFilterOverrides(dataViewFilterOverrideList)
                {
                    IgnoreDataViewPersistedValues = new HashSet <int>(ignoreDataViewPersistedValues)
                });
            }

            return(null);
        }
Example #3
0
        /// <summary>
        /// Gets the filter overrides from controls.
        /// </summary>
        /// <param name="phFilters">The ph filters.</param>
        /// <returns></returns>
        public static DataViewFilterOverrides GetFilterOverridesFromControls(PlaceHolder phFilters)
        {
            if (phFilters.Controls.Count > 0)
            {
                var dataViewFilter = GetFilterFromControls(phFilters);
                var list           = phFilters.ControlsOfTypeRecursive <FilterField>().Select(a => new DataViewFilterOverride
                {
                    DataFilterGuid = a.DataViewFilterGuid,
                    IncludeFilter  = a.ShowCheckbox ? a.CheckBoxChecked.GetValueOrDefault(true) : true,
                    Selection      = a.GetSelection()
                }).ToList();

                return(new DataViewFilterOverrides(list));
            }

            return(null);
        }
Example #4
0
        /// <summary>
        /// Gets the fee information from controls.
        /// </summary>
        /// <param name="phFees">The ph fees.</param>
        /// <returns></returns>
        public List <FeeInfo> GetFeeInfoFromControls(PlaceHolder phFees)
        {
            RegistrationTemplateFee fee = this;

            string fieldId = string.Format("fee_{0}", fee.Id);

            if (fee.FeeType == RegistrationFeeType.Single)
            {
                var singleFeeItem = fee.FeeItems.FirstOrDefault();
                if (fee.AllowMultiple)
                {
                    // Single Option, Multi Quantity
                    var numUpDown = phFees.FindControl(fieldId) as NumberUpDown;
                    if (numUpDown != null && numUpDown.Value > 0)
                    {
                        return(new List <FeeInfo> {
                            new FeeInfo(singleFeeItem, numUpDown.Value, singleFeeItem.Cost)
                        });
                    }
                }
                else
                {
                    // Single Option, Single Quantity
                    var cb = phFees.FindControl(fieldId) as RockCheckBox;
                    if (cb != null && cb.Checked)
                    {
                        return(new List <FeeInfo> {
                            new FeeInfo(singleFeeItem, 1, singleFeeItem.Cost)
                        });
                    }
                }
            }
            else
            {
                if (fee.AllowMultiple)
                {
                    // Multi Option, Multi Quantity
                    var result = new List <FeeInfo>();

                    foreach (var feeItem in fee.FeeItems)
                    {
                        string optionFieldId   = $"feeItem_{feeItem.Guid.ToString( "N" )}";
                        var    numUpDownGroups = phFees.ControlsOfTypeRecursive <NumberUpDownGroup>();

                        foreach (NumberUpDownGroup numberUpDownGroup in numUpDownGroups)
                        {
                            foreach (NumberUpDown numberUpDown in numberUpDownGroup.NumberUpDownControls)
                            {
                                if (numberUpDown.ID == optionFieldId && numberUpDown.Value > 0)
                                {
                                    result.Add(new FeeInfo(feeItem, numberUpDown.Value, feeItem.Cost));
                                }
                            }
                        }
                    }

                    if (result.Any())
                    {
                        return(result);
                    }
                }
                else
                {
                    // Multi Option, Single Quantity
                    var ddl = phFees.FindControl(fieldId) as RockDropDownList;
                    if (ddl != null && ddl.SelectedValue != string.Empty)
                    {
                        var feeItemId = ddl.SelectedValue.AsInteger();
                        var feeItem   = fee.FeeItems.FirstOrDefault(a => a.Id == feeItemId);
                        if (feeItem != null)
                        {
                            return(new List <FeeInfo> {
                                new FeeInfo(feeItem, 1, feeItem.Cost)
                            });
                        }
                    }
                }
            }

            return(null);
        }