diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index e18944a1f6..755a50ccac 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -1300,10 +1300,7 @@ class AssetsController extends Controller $total = $query->count(); - $offset = ($request->input('offset') > $total) ? $total : app('api_offset_value'); - $limit = app('api_limit_value'); - - $assets = $query->skip($offset)->take($limit)->get(); + $assets = $query->applyOffsetAndLimit($total)->get(); return (new AssetsTransformer)->transformAssets($assets, $total); } diff --git a/app/Models/SnipeModel.php b/app/Models/SnipeModel.php index f5a5a51cc0..6a4bdfee2c 100644 --- a/app/Models/SnipeModel.php +++ b/app/Models/SnipeModel.php @@ -3,8 +3,10 @@ namespace App\Models; use App\Helpers\Helper; +use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Facades\Request; class SnipeModel extends Model { @@ -156,6 +158,20 @@ class SnipeModel extends Model $this->attributes['status_id'] = $value; } + /** + * Applies offset (from request) and limit to query. + * + * @param Builder $query + * @param int $total + * @return void + */ + public function scopeApplyOffsetAndLimit(Builder $query, int $total) + { + $offset = (Request::input('offset') > $total) ? $total : app('api_offset_value'); + $limit = app('api_limit_value'); + + $query->skip($offset)->take($limit); + } protected function displayName(): Attribute {