public ActionResult List(PagerRequest request, BannerSearchOption search)
        {
            int totalCount;
            var linq = _bannerRepo.Get(e => (!search.PromotionId.HasValue || (e.SourceId == search.PromotionId.Value && e.SourceType == (int)SourceType.Promotion)) &&
                                       (!search.Status.HasValue || e.Status == (int)search.Status.Value) &&
                                       e.Status != (int)DataStatus.Deleted
                                       , out totalCount
                                       , request.PageIndex
                                       , request.PageSize
                                       , e =>
            {
                if (!search.OrderBy.HasValue)
                {
                    return(e.OrderByDescending(o => o.CreatedDate));
                }
                else
                {
                    switch (search.OrderBy.Value)
                    {
                    case GenericOrder.OrderByCreateUser:
                        return(e.OrderByDescending(o => o.CreatedUser));

                    case GenericOrder.OrderByCreateDate:
                    default:
                        return(e.OrderByDescending(o => o.CreatedDate));
                    }
                }
            });

            var linq_All = linq.Join(_proRepo.GetAll(),
                                     o => o.SourceId,
                                     i => i.Id,
                                     (o, i) => new { B = o, P = i })
                           .GroupJoin(_resourceRepo.Get(r => r.SourceType == (int)SourceType.BannerPromotion),
                                      o => o.B.Id,
                                      i => i.SourceId,
                                      (o, i) => new { B = o.B, P = o.P, R = i.FirstOrDefault() });
            var vo = from l in linq_All.ToList()
                     select new BannerViewModel()
            {
                Id         = l.B.Id,
                SourceId   = l.B.SourceId,
                SourceType = l.B.SourceType,
                Resource   = MappingManager.ResourceViewMapping(l.R),
                Promotion  = MappingManager.PromotionViewMapping(l.P),
                SortOrder  = l.B.SortOrder,
                Status     = l.B.Status
            };

            var v = new BannerCollectionViewModel(request, totalCount)
            {
                Banners = vo.ToList()
            };

            ViewBag.SearchOptions = search;
            return(View("List", v));
        }
 public ActionResult Index(PagerRequest request, BannerSearchOption search)
 {
     return(List(request, search));
 }