13 lines
1.1 KiB
PHP
13 lines
1.1 KiB
PHP
<?php
|
|
namespace App\Modules\Purchasing;
|
|
use Tempo\Purchasing\Embedded\Models\Requisition;
|
|
use App\Shared\Context\CompanyContext;
|
|
|
|
/** One native record/book; admission is an explicit binding or an audited host origin. */
|
|
final class RequisitionAccess
|
|
{
|
|
public static function scope():string{$c=app(CompanyContext::class);return hash('sha256',json_encode($c->identifiers()+['unit_id'=>$c->unitId()],JSON_THROW_ON_ERROR));}
|
|
public static function ids(array $binding){return Requisition::query()->select('requisitions.id')->where(function($q)use($binding){$q->whereIn('requisitions.id',$binding['requisition_ids']??[]);if(config('receipt_qa.requests_enabled')===true)$q->orWhereExists(fn($a)=>$a->selectRaw('1')->from('audit_logs as ra')->whereColumn('ra.tenant_id','requisitions.tenant_id')->whereColumn('ra.requisition_id','requisitions.id')->where('ra.action','sgf.request.command')->where('ra.after->request_scope',self::scope()));});}
|
|
public static function allowed(int $id,array $binding):bool{return self::ids($binding)->where('requisitions.id',$id)->exists();}
|
|
}
|