hasMany(Payment::class); } public function company() { return $this->belongsTo(Company::class); } public function scopeWhereCompany($query, $company_id) { $query->where('company_id', $company_id); } public function scopeWherePaymentMethod($query, $payment_id) { $query->orWhere('id', $payment_id); } public function scopeWhereSearch($query, $search) { $query->where('name', 'LIKE', '%'.$search.'%'); } public function scopeApplyFilters($query, array $filters) { $filters = collect($filters); if ($filters->get('method_id')) { $query->wherePaymentMethod($filters->get('method_id')); } if ($filters->get('company_id')) { $query->whereCompany($filters->get('company_id')); } if ($filters->get('search')) { $query->whereSearch($filters->get('search')); } } public function scopePaginateData($query, $limit) { if ($limit == 'all') { return collect(['data' => $query->get()]); } return $query->paginate($limit); } public static function createPaymentMethod($request) { $data = $request->validated(); $data['company_id'] = $request->header('company'); $paymentMethod = self::create($data); return $paymentMethod; } }