Esempio n. 1
0
        public ActionResult Search(SearchCouponModel model)
        {
            var p = PredicateBuilder.True <CouponPromo>();

            bool canPredicate = false;

            if (model.Type != null)
            {
                canPredicate = true;

                p = p.And(x => x.CouponType == model.Type.Value);
            }

            if (!string.IsNullOrEmpty(model.Key))
            {
                canPredicate = true;

                p = p.And(x => x.Code.Contains(model.Key) || x.IssueTo.Contains(model.Key));
            }

            if (model.IssuedOnBefore != null)
            {
                canPredicate = true;

                p = p.And(x => x.BeginDate >= model.IssuedOnBefore.Value);
            }

            if (model.IssuedOnAfter != null)
            {
                canPredicate = true;

                p = p.And(x => x.EndDate <= model.IssuedOnAfter.Value);
            }

            List <CouponPromo> c = new List <CouponPromo>();

            if (canPredicate)
            {
                c = Db.Select <CouponPromo>(p).OrderByDescending(x => (x.IssueOn)).ToList();
            }
            else
            {
                c = Db.Select <CouponPromo>(x => x.OrderByDescending(y => (y.IssueOn)));
            }

            ViewData["page"] = 1;

            ViewData["pages"] = 1;

            ViewData["items_per_page"] = c.Count;

            ViewData["total_items"] = c.Count;

            ViewData["action"] = "Index";

            return(PartialView("_List", c));
        }
Esempio n. 2
0
        public async Task <PaginatedResult <Coupon> > SearchAsync(SearchCouponModel req)
        {
            // filter
            var queryObject = QueryObject <Coupon> .Empty;

            if (!string.IsNullOrWhiteSpace(req.Keyword))
            {
                var keyword = req.Keyword;
                queryObject.And(new CouponQueryObjects.ContainsKeyword(keyword));
            }

            //Filter by start date
            if (req.StartDate.HasValue)
            {
                var startDate = req.StartDate.Value;
                queryObject.And(new CouponQueryObjects.FilterByStartDate(req.StartDate));
            }

            //Filter by end date
            if (req.EndDate.HasValue)
            {
                var endDate = req.EndDate.Value;
                queryObject.And(new CouponQueryObjects.FilterByEndDate(req.EndDate));
            }

            // filter by value of coupon
            if (req.Value > 0)
            {
                var value = req.Value;
                queryObject.And(new CouponQueryObjects.FilterByValue(value));
            }

            // fillter by min price
            if (req.MinPrice.HasValue)
            {
                var minPrice = req.MinPrice.Value;
                queryObject.And(new CouponQueryObjects.FilterByMinPrice(minPrice));
            }

            // orderby
            if (!req.Sort.Any())
            {
                req.Sort.Add(new SortItem {
                    FieldName = nameof(Coupon.IdentityKey)
                });
            }

            req.Sort.ForEach(x => queryObject.AddOrderBy(x.FieldName, x.IsDescending));

            // execute
            var result = await _genericRepo.SearchAsync(queryObject, req.Pagination);

            return(result);
        }