prepare("SELECT id FROM food_merchant_users WHERE phone=? LIMIT 1"); $dupSt->execute([$ownerPhone]); if ($dupSt->fetch()) jsonError('A merchant account already uses this phone', 409); $food_con->beginTransaction(); try { $food_con->prepare( "INSERT INTO food_merchants (name_ar, name_en, city, address, latitude, longitude, category, commission_percent, status) VALUES (?,?,?,?,?,?,?,?,'pending_approval')" )->execute([$nameAr, $nameEn, $city, $address, $lat, $lng, $category, $commission]); $merchantId = (int)$food_con->lastInsertId(); $food_con->prepare( "INSERT INTO food_merchant_users (merchant_id, name, phone, role, password_hash) VALUES (?,?,?,'owner',?)" )->execute([$merchantId, $ownerName, $ownerPhone, password_hash($ownerPassword, PASSWORD_DEFAULT)]); $food_con->commit(); } catch (Throwable $e) { $food_con->rollBack(); appLog('[FOOD][ADMIN][merchant_create] ' . $e->getMessage(), 'ERROR'); jsonError('Failed to create merchant', 500); } jsonSuccess(['merchant_id' => $merchantId, 'status' => 'pending_approval'], 'Merchant created — awaiting approval');