tenantId; $role = $request->user->role ?? 'viewer'; $assignedCompanyId = $request->user->assigned_company_id ?? null; if ($role === 'super_admin') { $companies = $this->companyModel->findByTenant($tenantId); } else { // Filter by assigned company $db = \App\Core\Database::getInstance(); $stmt = $db->prepare("SELECT * FROM companies WHERE tenant_id = ? AND id = ? AND deleted_at IS NULL"); $stmt->execute([$tenantId, $assignedCompanyId]); $companies = $stmt->fetchAll(); } Response::json([ 'success' => true, 'data' => $companies ]); } public function create(Request $request): void { $data = $request->getBody(); $data['tenant_id'] = $request->tenantId; try { $companyId = $this->companyService->createCompany($data); Response::json([ 'success' => true, 'data' => ['id' => $companyId], 'message' => 'تم إضافة الشركة بنجاح' ], 201); } catch (Throwable $e) { Response::error('فشل إضافة الشركة', 'CREATE_FAILED', 500); } } public function updateJoFotara(Request $request, string $id): void { $data = [ 'jofotara_client_id' => $request->input('client_id'), 'jofotara_secret_key' => $request->input('secret_key'), 'is_jofotara_linked' => 1 ]; try { $this->companyService->createCompany(array_merge($data, ['id' => $id])); // Reuses encryption logic Response::json([ 'success' => true, 'message' => 'تم تحديث بيانات جو-فواتير بنجاح' ]); } catch (Throwable $e) { Response::error('فشل تحديث البيانات', 'UPDATE_FAILED', 500); } } }