/**
  * Show all transactions with filter and query.
  *
  * @return \Illuminate\View\View
  */
 public function index()
 {
     /*
      * --------------------------------------------------------------------------
      * Filtering transaction
      * --------------------------------------------------------------------------
      * Populate optional filter on url break down in data, sorting by and sorting
      * method, retrieve the transaction.
      */
     $filter_data = Input::has('data') ? Input::get('data') : 'all';
     $filter_status = Input::has('status') ? Input::get('status') : 'all';
     $filter_by = Input::has('by') ? Input::get('by') : 'date';
     $filter_sort = Input::has('sort') ? Input::get('sort') : 'desc';
     $query = Input::has('query') ? Input::get('query') : null;
     $countWithdrawal = Transaction::where('type', Transaction::TYPE_WITHDRAWAL)->count();
     $countReward = Transaction::where('type', Transaction::TYPE_REWARD)->count();
     $sumWithdrawal = Transaction::where('type', Transaction::TYPE_WITHDRAWAL)->sum('amount');
     $sumReward = Transaction::where('type', Transaction::TYPE_REWARD)->sum('amount');
     $transaction = new Transaction();
     $transactions = $transaction->retrieveTransaction($filter_data, $filter_status, $filter_by, $filter_sort, $query)->paginate(10);
     return view('admin.transaction.index', compact('transactions', 'countWithdrawal', 'countReward', 'sumWithdrawal', 'sumReward'));
 }