예제 #1
0
 /**
  * Display a listing of the resource.
  *
  * @return \Illuminate\Http\Response
  */
 public function index()
 {
     $filter = array_fill_keys($this->promo->getAllColumnsNames(), "");
     $stop_fields = array('filter');
     $input = Input::all();
     if (isset($input['filter']) && $input['filter'] == 'apply') {
         $filter = array_merge($filter, $input);
         Session::put("PROMOS_FILTER", $filter);
     }
     if (isset($input['filter']) && $input['filter'] == 'reset') {
         Session::forget('PROMOS_FILTER');
     }
     if (isset($input['sort_value'])) {
         $sort = $input['sort_value'];
         $sort_dir = $input['sort_dir'];
         Session::put("PROMOS_SORT", array('value' => $sort, 'dir' => $sort_dir));
     }
     $sort = Session::get('PROMOS_SORT');
     if (isset($input['filter']) && $input['filter'] == 'reset') {
         Session::forget('PROMOS_FILTER');
     }
     if (Session::has('PROMOS_FILTER')) {
         $filter = Session::get('PROMOS_FILTER');
         $promos = $this->promo->where('id', '>', '0');
         foreach ($filter as $k => $v) {
             if (!in_array($k, $stop_fields) && $v != '') {
                 $promos = $promos->where($k, 'like', '%' . $v . '%');
             }
         }
         if (Session::has('PROMOS_SORT') && $sort['value'] != '') {
             $promos = $promos->orderBy($sort['value'], $sort['dir'] == '1' ? 'desc' : '');
         }
         $promos = $promos->paginate(Settings::getValue('TABLE_ELEMENTS'));
     } else {
         if (Session::has('PROMOS_SORT') && $sort['value'] != '') {
             $promos = $this->promo->orderBy($sort['value'], $sort['dir'] == '1' ? 'desc' : 'asc');
         } else {
             $promos = $this->promo;
         }
         $promos = $promos->paginate(Settings::getValue('TABLE_ELEMENTS'));
     }
     $sort_options = Promo::getSortOptions();
     return View::make('backend.promos.index', compact("promos", 'filter', 'sort_options', 'sort'));
 }