feat: implement initial project, document, and resource management modules with routing, controllers, and UI components
This commit is contained in:
@@ -383,42 +383,7 @@ class MaterialRequisitionController extends Controller
|
||||
|
||||
private function availableProjectsQuery()
|
||||
{
|
||||
$query = Project::withoutGlobalScope(\App\Scopes\TenantScope::class);
|
||||
$user = auth()->user();
|
||||
$isSiteOperationsUser = $user && $user->hasAnyRole([
|
||||
'Site Technical',
|
||||
'Construction Supervisor',
|
||||
'Site Operations',
|
||||
'Site Engineer',
|
||||
'Site Supervisor',
|
||||
]);
|
||||
|
||||
if ($user?->contractor_id) {
|
||||
$contractorIds = DB::table('contractors')
|
||||
->where('id', $user->contractor_id)
|
||||
->orWhere('parent_id', $user->contractor_id)
|
||||
->pluck('id')
|
||||
->all();
|
||||
|
||||
$query->where(function ($projectQuery) use ($contractorIds, $user, $isSiteOperationsUser) {
|
||||
$projectQuery
|
||||
->whereIn('projects.contractor_id', $contractorIds)
|
||||
->orWhereHas('contractors', function ($contractorQuery) use ($contractorIds) {
|
||||
$contractorQuery->whereIn('contractors.id', $contractorIds);
|
||||
});
|
||||
|
||||
if ($isSiteOperationsUser) {
|
||||
$projectQuery->orWhereHas('personnel', function ($personnelQuery) use ($user) {
|
||||
$personnelQuery->where('users.id', $user->id);
|
||||
});
|
||||
}
|
||||
});
|
||||
} elseif ($isSiteOperationsUser) {
|
||||
$query->whereHas('personnel', function ($personnelQuery) use ($user) {
|
||||
$personnelQuery->where('users.id', $user->id);
|
||||
});
|
||||
}
|
||||
|
||||
return $query;
|
||||
// Project's TenantScope is the source of truth for project visibility.
|
||||
return Project::query();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user