accessibleAdminSiteIds(); if ($siteIds === null) { return; } if ($siteIds === []) { $query->whereRaw('0 = 1'); return; } $query->whereIn($periodsAlias.'.admin_site_id', $siteIds); } public static function applyToBillsQuery(Builder $query, AdminUser $admin, string $billsAlias = 'settlement_bills'): void { $siteIds = $admin->accessibleAdminSiteIds(); if ($siteIds === null) { return; } if ($siteIds === []) { $query->whereRaw('0 = 1'); return; } $query->whereExists(function (Builder $sub) use ($siteIds, $billsAlias): void { $sub->selectRaw('1') ->from('settlement_periods') ->whereColumn('settlement_periods.id', $billsAlias.'.settlement_period_id') ->whereIn('settlement_periods.admin_site_id', $siteIds); }); } public static function periodAccessible(AdminUser $admin, int $settlementPeriodId): bool { $siteIds = $admin->accessibleAdminSiteIds(); if ($siteIds === null) { return true; } if ($siteIds === []) { return false; } return \Illuminate\Support\Facades\DB::table('settlement_periods') ->where('id', $settlementPeriodId) ->whereIn('admin_site_id', $siteIds) ->exists(); } public static function siteAccessible(AdminUser $admin, int $adminSiteId): bool { $siteIds = $admin->accessibleAdminSiteIds(); if ($siteIds === null) { return true; } return in_array($adminSiteId, $siteIds, true); } public static function billAccessible(AdminUser $admin, int $settlementBillId): bool { $siteIds = $admin->accessibleAdminSiteIds(); if ($siteIds === null) { return true; } if ($siteIds === []) { return false; } return \Illuminate\Support\Facades\DB::table('settlement_bills') ->join('settlement_periods', 'settlement_periods.id', '=', 'settlement_bills.settlement_period_id') ->where('settlement_bills.id', $settlementBillId) ->whereIn('settlement_periods.admin_site_id', $siteIds) ->exists(); } }