getQuery('type', ''))); $country = trim((string)$request->getQuery('country', '')); $city = trim((string)$request->getQuery('city', '')); $search = trim((string)$request->getQuery('search', '')); $pdo = Database::getConnection(); $sql = 'SELECT id, type, name_ar, name_en, category, country, city, discount_percentage, address, phone, latitude, longitude FROM partners WHERE is_active = 1'; $params = []; if (!empty($type)) { $sql .= ' AND type = :type'; $params[':type'] = $type; } if (!empty($country)) { $sql .= ' AND country = :country'; $params[':country'] = $country; } if (!empty($city)) { $sql .= ' AND city = :city'; $params[':city'] = $city; } if (!empty($search)) { $sql .= ' AND (name_ar LIKE :search OR name_en LIKE :search OR category LIKE :search)'; $params[':search'] = '%' . $search . '%'; } $sql .= ' ORDER BY discount_percentage DESC, id DESC'; $stmt = $pdo->prepare($sql); $stmt->execute($params); $partners = $stmt->fetchAll(PDO::FETCH_ASSOC); Response::success($partners, 'Partners directory retrieved.'); } /** * GET /api/v1/partners/{id} */ public function getPartner(Request $request, array $params): void { $partnerId = (int)($params['id'] ?? 0); $pdo = Database::getConnection(); $stmt = $pdo->prepare('SELECT * FROM partners WHERE id = :id AND is_active = 1 LIMIT 1'); $stmt->execute([':id' => $partnerId]); $partner = $stmt->fetch(PDO::FETCH_ASSOC); if (!$partner) { Response::notFound('Partner not found.'); } Response::success($partner, 'Partner details retrieved.'); } }