<?php namespace App\Models; use App\Models\Enums\LibraryACL; use App\Models\Scopes\CompanyScope; use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\Auth; /** * @method static \Illuminate\Database\Eloquent\Builder allowed() */ class Library extends Model { use HasFactory, Filterable; protected $guarded = [ 'id' ]; protected $casts = [ 'created_at' => 'datetime:Y-m-d H:i:s', 'updated_at' => 'datetime:Y-m-d H:i:s', ]; protected static function booted(): void { static::addGlobalScope(new CompanyScope); } public function scopeAllowed(Builder $query): void { $query->where(function (Builder $query) { return $query->where('acl', LibraryACL::PRIVATE->value)->where('created_by', Auth::id()); })->orWhere(function (Builder $query) { return $query->where('acl', LibraryACL::CUSTOM->value)->where('whitelist', 'like', '%,' . Auth::id() . ',%'); }); } public function container(): \Illuminate\Database\Eloquent\Relations\HasMany { return $this->hasMany(Container::class, "library_id"); } }