public function search($input)
 {
     $query = BarcodeProcess::query();
     $query->select('barcode_processes.*');
     $query->leftJoin('shelves', 'barcode_processes.shelf_id', '=', 'shelves.id');
     $columns = Schema::getColumnListing('barcode_processes');
     $attributes = array();
     foreach ($columns as $attribute) {
         $attributes[$attribute] = null;
         if (isset($input[$attribute]) and !empty($input[$attribute])) {
             $query->where($attribute, $input[$attribute]);
             $attributes[$attribute] = $input[$attribute];
         }
     }
     /**
      * Filter
      */
     $this->filter($input, $query);
     /**
      * Get count
      */
     $total = $query->count();
     /**
      * Pagination
      */
     $this->pagination($input, $query);
     /**
      * Order
      */
     $this->order($input, $query);
     return [$query->get(), $attributes, 'total' => $total];
 }