1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?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");
- }
- }
|