Advertisement
darth-vader

Untitled

Jun 10th, 2020
836
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.08 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Filters;
  4.  
  5. use Mi\Core\Filters\BaseFilter;
  6.  
  7. class Status extends BaseFilter
  8. {
  9.     /**
  10.      * Apply the filter
  11.      *
  12.      * @param \Illuminate\Database\Eloquent\Model $model
  13.      * @param mixed $input
  14.      * @return mixed
  15.      */
  16.     public static function apply($model, $input)
  17.     {
  18.         $crits = explode(',', $input);
  19.        
  20.         if (count($crits) == 0) {
  21.             return $model;
  22.         }
  23.  
  24.         return $model->where(function ($query) use ($crits) {
  25.             foreach ($crits as $value) {
  26.                 $query = $this->applyFilter($query, $value);
  27.             }
  28.  
  29.             return $query;
  30.         });
  31.     }
  32.  
  33.     private function applyFilter($query, $input)
  34.     {
  35.         switch($input) {
  36.             case 'paid':
  37.                 return $query->orWhereNotNull('paid_at');
  38.             case 'unpaid':
  39.                 return $query->orWhereNull('paid_at');
  40.             case 'canceled':
  41.                 return $query->orWhereNotNull('canceled_at');
  42.             default:
  43.                 return $query;
  44.         }
  45.     }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement