/// <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); }
/// <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); }
/// <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); }
/// <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); }