protected void gvRules_Sorting(object sender, GridViewSortEventArgs e)
        {
            OfferRuleSortingType orderBy = OfferRuleSortingType.IdAsc;

            switch (e.SortExpression)
            {
            default:
            case "Id":
                orderBy = OfferRuleSortingType.IdDesc;
                if (e.SortDirection == SortDirection.Ascending)
                {
                    orderBy = OfferRuleSortingType.IdAsc;
                }
                break;

            case "Name":
                orderBy = OfferRuleSortingType.NameDesc;
                if (e.SortDirection == SortDirection.Ascending)
                {
                    orderBy = OfferRuleSortingType.NameAsc;
                }
                break;

            case "Priority":
                orderBy = OfferRuleSortingType.PriorityDesc;
                if (e.SortDirection == SortDirection.Ascending)
                {
                    orderBy = OfferRuleSortingType.PriorityAsc;
                }
                break;
            }

            SetState("OrderBy", (int)orderBy);
            LoadRules();
        }
Exemple #2
0
        public PagedList <OfferRule> GetOfferRuleLoadPaged(
            int pageIndex            = 0,
            int pageSize             = 2147483647,
            IList <int> offerRuleIds = null,
            string name                  = null,
            string promocode             = null,
            string fromDate              = null,
            string toDate                = null,
            bool?isActive                = null,
            bool?isCart                  = null,
            bool?showInOfferPage         = null,
            int?offerTypeId              = null,
            OfferRuleSortingType orderBy = OfferRuleSortingType.IdAsc)
        {
            var query = _offerRuleRepository.Table;

            if (offerRuleIds != null && offerRuleIds.Count > 0)
            {
                query = query.Where(x => offerRuleIds.Contains(x.Id));
            }

            if (!string.IsNullOrEmpty(name))
            {
                query = query.Where(x => x.Name.Contains(name));
            }

            if (!string.IsNullOrEmpty(promocode))
            {
                query = query.Where(x => x.PromoCode.Contains(promocode));
            }

            DateTime startDate;

            if (!string.IsNullOrEmpty(fromDate) &&
                DateTime.TryParseExact(fromDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out startDate))
            {
                query = query.Where(x => startDate <= x.StartDate);
            }

            DateTime endDate;

            if (!string.IsNullOrEmpty(toDate) &&
                DateTime.TryParseExact(toDate, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out endDate))
            {
                query = query.Where(x => endDate >= x.EndDate);
            }

            if (isActive.HasValue)
            {
                query = query.Where(x => x.IsActive == isActive.Value);
            }

            if (isCart.HasValue)
            {
                query = query.Where(x => x.IsCart == isCart.Value);
            }

            if (showInOfferPage.HasValue)
            {
                query = query.Where(o => o.ShowInOfferPage == showInOfferPage.Value);
            }

            if (offerTypeId.HasValue)
            {
                query = query.Where(o => o.OfferTypeId == offerTypeId.Value);
            }

            int totalRecords = query.Count();

            switch (orderBy)
            {
            default:
            case OfferRuleSortingType.IdAsc:
                query = query.OrderBy(x => x.Id);
                break;

            case OfferRuleSortingType.IdDesc:
                query = query.OrderByDescending(x => x.Id);
                break;

            case OfferRuleSortingType.NameAsc:
                query = query.OrderBy(x => x.Name);
                break;

            case OfferRuleSortingType.NameDesc:
                query = query.OrderByDescending(x => x.Name);
                break;

            case OfferRuleSortingType.PriorityAsc:
                query = query.OrderBy(x => x.Priority);
                break;

            case OfferRuleSortingType.PriorityDesc:
                query = query.OrderByDescending(x => x.Priority);
                break;
            }

            query = query.Skip(pageIndex * pageSize).Take(pageSize);

            var list = query.ToList();

            return(new PagedList <OfferRule>(list, pageIndex, pageSize, totalRecords));
        }
        private void LoadRules()
        {
            int[]  offerRuleIds          = null;
            string name                  = null;
            string promocode             = null;
            string fromDate              = null;
            string toDate                = null;
            bool?  isActive              = null;
            OfferRuleSortingType orderBy = OfferRuleSortingType.IdAsc;

            if (HasState(OFFER_RULE_ID_FILTER))
            {
                string value = GetStringState(OFFER_RULE_ID_FILTER);
                int    temp;
                offerRuleIds = value.Split(',')
                               .Where(x => int.TryParse(x.ToString(), out temp))
                               .Select(x => int.Parse(x))
                               .ToArray();
            }

            if (HasState(NAME_FILTER))
            {
                name = GetStringState(NAME_FILTER);
            }
            if (HasState(PROMO_CODE_FILTER))
            {
                promocode = GetStringState(PROMO_CODE_FILTER);
            }
            if (HasState(FROM_DATE_FILTER))
            {
                fromDate = GetStringState(FROM_DATE_FILTER);
            }
            if (HasState(TO_DATE_FILTER))
            {
                toDate = GetStringState(TO_DATE_FILTER);
            }
            if (HasState(IS_ACTIVE_FILTER))
            {
                isActive = Convert.ToBoolean(GetStringState(IS_ACTIVE_FILTER));
            }
            if (HasState("OrderBy"))
            {
                orderBy = (OfferRuleSortingType)GetIntState("OrderBy");
            }

            var result = OfferService.GetOfferRuleLoadPaged(
                pageIndex: gvRules.CustomPageIndex,
                pageSize: gvRules.PageSize,
                offerRuleIds: offerRuleIds,
                name: name,
                promocode: promocode,
                fromDate: fromDate,
                toDate: toDate,
                isActive: isActive,
                isCart: false,
                orderBy: orderBy);

            if (result != null)
            {
                gvRules.DataSource      = result.Items;
                gvRules.RecordCount     = result.TotalCount;
                gvRules.CustomPageCount = result.TotalPages;
            }

            gvRules.DataBind();

            if (gvRules.Rows.Count <= 0)
            {
                enbNotice.Message = "No records found.";
            }
        }