<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: Content-Type");
header("Access-Control-Allow-Methods: POST, OPTIONS");
header("Content-Type: application/json");
if ($_SERVER["REQUEST_METHOD"] === "OPTIONS") exit;
require "../../config/database.php";
require "../../helpers/response.php";

$input = json_decode(file_get_contents("php://input"), true);
$sppgId = isset($input["sppg_id"]) ? (int)$input["sppg_id"] : 0;
$sekolahId = isset($input["sekolah_id"]) ? (int)$input["sekolah_id"] : 0;
$jumlahOmprengan = isset($input["jumlah_omprengan"]) ? (int)$input["jumlah_omprengan"] : 0;
$namaKurir = trim($input["nama_kurir"] ?? "");
$kendaraan = trim($input["kendaraan"] ?? "");
$platNomor = trim($input["plat_nomor"] ?? "");
$catatanSppg = trim($input["catatan_sppg"] ?? "");

if ($sppgId <= 0) response(false, "ID SPPG tidak valid", null);
if ($sekolahId <= 0) response(false, "Sekolah tujuan wajib dipilih", null);

$stmtSekolah = $conn->prepare("SELECT id,sppg_id,nama_sekolah,alamat,jumlah_siswa FROM sekolah WHERE id=? LIMIT 1");
if (!$stmtSekolah) response(false, "Query sekolah gagal disiapkan: " . $conn->error, null);
$stmtSekolah->bind_param("i", $sekolahId);
$stmtSekolah->execute();
$resSekolah = $stmtSekolah->get_result();
if (!$resSekolah || $resSekolah->num_rows === 0) response(false, "Data sekolah tidak ditemukan", null);

$sekolah = $resSekolah->fetch_assoc();
if ((int)$sekolah["sppg_id"] !== $sppgId) {
    response(false, "Sekolah ini tidak terhubung dengan SPPG yang sedang login", [
        "sekolah_sppg_id" => (int)$sekolah["sppg_id"],
        "login_sppg_id" => $sppgId
    ]);
}

$namaSekolah = trim($sekolah["nama_sekolah"] ?? "");
$tujuanAlamat = trim($sekolah["alamat"] ?? "");
$jumlahPorsi = (int)($sekolah["jumlah_siswa"] ?? 0);

if ($namaSekolah === "") response(false, "Nama sekolah masih kosong di database", null);
if ($jumlahPorsi <= 0) response(false, "Jumlah siswa sekolah masih 0. Isi jumlah_siswa dulu di tabel sekolah.", null);
if ($tujuanAlamat === "") $tujuanAlamat = "Alamat sekolah belum diisi";

$kodeKonfirmasi = strtoupper(substr(md5(uniqid((string)mt_rand(), true)), 0, 6));

$sql = "INSERT INTO tracking_pengiriman
(sppg_id,sekolah_id,nama_sekolah,tujuan_alamat,jumlah_porsi,jumlah_omprengan,nama_kurir,kendaraan,plat_nomor,status,catatan_sppg,kode_konfirmasi,waktu_persiapan,created_at,updated_at)
VALUES (?,?,?,?,?,?,?,?,?,'persiapan',?,?,NOW(),NOW(),NOW())";

$stmt = $conn->prepare($sql);
if (!$stmt) response(false, "Query tracking gagal disiapkan: " . $conn->error, null);

$stmt->bind_param("iissiisssss", $sppgId,$sekolahId,$namaSekolah,$tujuanAlamat,$jumlahPorsi,$jumlahOmprengan,$namaKurir,$kendaraan,$platNomor,$catatanSppg,$kodeKonfirmasi);

if (!$stmt->execute()) response(false, "Gagal membuat pengiriman: " . $stmt->error, null);

response(true, "Pengiriman berhasil dibuat dari data SPPG dan sekolah asli", [
    "id" => $stmt->insert_id,
    "sppg_id" => $sppgId,
    "sekolah_id" => $sekolahId,
    "nama_sekolah" => $namaSekolah,
    "alamat" => $tujuanAlamat,
    "jumlah_porsi" => $jumlahPorsi,
    "kode_konfirmasi" => $kodeKonfirmasi,
    "status" => "persiapan"
]);
?>