%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Scopes/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Scopes/IndividualScope.php |
<?php namespace App\Scopes; use App\Enums\UsertypeEnum; use Illuminate\Database\Eloquent\Scope; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Builder; use Illuminate\Support\Facades\Auth; class IndividualScope implements Scope { /** * Apply the scope to a given Eloquent query builder. * * @param \Illuminate\Database\Eloquent\Builder $builder * @param \Illuminate\Database\Eloquent\Model $model * @return void */ public function apply(Builder $builder, Model $model) { if(php_sapi_name()!=="cli") { $user = auth()->user() ? auth()->user() : auth('api')->user(); $institutes = $user->institutes; $institutes_id = $institutes->map(function ($item, $key){ return $item->id; }); if($user->usertype->role === UsertypeEnum::PRINCIPAL) { $builder->whereHas('user', function($query) use ($institutes_id) { $query->whereHas('institutes', function ($query) use ($institutes_id) { $query->whereIn('institute_id', $institutes_id->all()); }); })->orWhereHas('minors', function($query) use ($user) { $query->where('active', true); $query->whereHas('classrooms', function($query) use ($user) { $query->where('active', 1)->whereHas('institute', function($query) use ($user) { $query->whereHas('users', function($query) use ($user) { $query->where('users.id', $user->id); }); }); }); }); } } } }