* @since [v4.0] * @return bool */ public function requireAcceptance() { if ($this->license && $this->license->category) { return $this->license->category->require_acceptance; } return false; } public function getEula() { return $this->license->getEula(); } /** * Establishes the seat -> license relationship * * @author A. Gianotto * @since [v1.0] * @return \Illuminate\Database\Eloquent\Relations\Relation */ public function license() { return $this->belongsTo(\App\Models\License::class, 'license_id'); } /** * Establishes the seat -> assignee relationship * * @author A. Gianotto * @since [v1.0] * @return \Illuminate\Database\Eloquent\Relations\Relation */ public function user() { return $this->belongsTo(\App\Models\User::class, 'assigned_to')->withTrashed(); } /** * Establishes the seat -> asset relationship * * @author A. Gianotto * @since [v4.0] * @return \Illuminate\Database\Eloquent\Relations\Relation */ public function asset() { return $this->belongsTo(\App\Models\Asset::class, 'asset_id')->withTrashed(); } /** * Determines the assigned seat's location based on user * or asset its assigned to * * @author A. Gianotto * @since [v4.0] * @return string */ public function location() { if (($this->user) && ($this->user->location)) { return $this->user->location; } elseif (($this->asset) && ($this->asset->location)) { return $this->asset->location; } return false; } /** * Query builder scope to order on department * * @param \Illuminate\Database\Query\Builder $query Query builder instance * @param text $order Order * * @return \Illuminate\Database\Query\Builder Modified query builder */ public function scopeOrderDepartments($query, $order) { return $query->leftJoin('users as license_seat_users', 'license_seats.assigned_to', '=', 'license_seat_users.id') ->leftJoin('departments as license_user_dept', 'license_user_dept.id', '=', 'license_seat_users.department_id') ->whereNotNull('license_seats.assigned_to') ->orderBy('license_user_dept.name', $order); } }