<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
    http_response_code(200);
    exit;
}

header("Content-Type: application/json; charset=UTF-8");
include_once 'db_connect.php';

$json = json_decode(file_get_contents("php://input"), true);

if ($json) {
    try {
        // 1. التحقق مما إذا كان رقم الهاتف موجوداً مسبقاً
        $checkStmt = $conn->prepare("SELECT id FROM users WHERE phone = ?");
        $checkStmt->execute([$json['phone']]);
        
        if ($checkStmt->rowCount() > 0) {
            // إذا وجد الرقم، نرسل رسالة خطأ مفهومة
            echo json_encode(["status" => "error", "message" => "عذراً، رقم الهاتف هذا مسجل مسبقاً"]);
            exit;
        }

        $conn->beginTransaction();
        $conn->exec("set names utf8mb4");

// التحقق من وجود باسوورد قادم من التطبيق، وإلا نستخدم رقم الهاتف كاحتياط
$password_to_hash = !empty($json['password']) ? $json['password'] : $json['phone'];
$hashed_password = password_hash($password_to_hash, PASSWORD_DEFAULT);

        // 2. إدخال البيانات في جدول users
        $stmt = $conn->prepare("INSERT INTO users (full_name, email, phone, password, address, role_id, status) VALUES (?, ?, ?, ?, ?, ?, ?)");
        $stmt->execute([
            $json['full_name'], 
            $json['phone'] . "@sehatkom.com", 
            $json['phone'], 
            $hashed_password,
            $json['address'], 
            4, 
            'active'
        ]);
        
        $user_id = $conn->lastInsertId();

        // 3. إدخال البيانات في جدول patients
        $stmt2 = $conn->prepare("INSERT INTO patients (user_id, gender, birth_date, blood_group) VALUES (?, ?, ?, ?)");
        $stmt2->execute([
            $user_id, 
            $json['gender'], 
            $json['birth_date'],
            $json['blood_group']
        ]);

        $conn->commit();
        echo json_encode(["status" => "success", "user_id" => $user_id]);

    } catch (Exception $e) {
        if ($conn->inTransaction()) {
            $conn->rollBack();
        }
        echo json_encode(["status" => "error", "message" => "حدث خطأ غير متوقع، يرجى المحاولة لاحقاً"]);
    }
}
?>