예제 #1
0
        /// <summary>
        /// Bind data to the grid control.
        /// </summary>
        private void BindDiscountsGrid()
        {
            var instanceId = this.RegistrationInstanceId;

            if (instanceId == null || instanceId == 0)
            {
                return;
            }

            var registrationTemplateDiscountService = new RegistrationTemplateDiscountService(new RockContext());

            var data = registrationTemplateDiscountService.GetRegistrationInstanceDiscountCodeReport(( int )instanceId);

            // Add Date Range
            var dateRange = SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues(sdrpDiscountDateRange.DelimitedValues);

            if (dateRange.Start.HasValue)
            {
                data = data.Where(r => r.RegistrationDate >= dateRange.Start.Value);
            }

            if (dateRange.End.HasValue)
            {
                data = data.Where(r => r.RegistrationDate < dateRange.End.Value);
            }

            // Discount code, use ddl if one is selected, otherwise try the search box.
            if (ddlDiscountCode.SelectedIndex > 0)
            {
                data = data.Where(r => r.DiscountCode == ddlDiscountCode.SelectedItem.Text);
            }
            else if (tbDiscountCodeSearch.Text.IsNotNullOrWhiteSpace())
            {
                System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(tbDiscountCodeSearch.Text.ToLower());
                data = data.Where(r => regex.IsMatch(r.DiscountCode.ToLower()));
            }

            var results = data.ToList();

            SortProperty sortProperty = gDiscounts.SortProperty;

            if (sortProperty != null)
            {
                results = results.AsQueryable().Sort(sortProperty).ToList();
            }
            else
            {
                results = results.OrderByDescending(d => d.RegistrationDate).ToList();
            }

            gDiscounts.DataSource = results;
            gDiscounts.DataBind();

            PopulateTotals(results);
        }