<?php
require_once __DIR__ . '/../../../config/session.php';
requireAdmin();
require_once __DIR__ . '/../../../config/config.php';
require_once __DIR__ . '/../../../functions/csrf.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    header('Location: ' . BASE_URL . '/admin/ibu_hamil/');
    exit;
}

if (!verifyCSRFToken($_POST['csrf_token'] ?? '')) {
    setFlash('error', 'Invalid CSRF Token.');
    header('Location: ' . BASE_URL . '/admin/ibu_hamil/');
    exit;
}

$db = getDB();

$action          = $_POST['action'] ?? 'tambah';
$id              = $_POST['id'] ?? null;
$ibu_hamil_id    = (int)($_POST['ibu_hamil_id'] ?? 0);
$tanggal         = $_POST['tanggal_kunjungan'] ?? '';
$usia_minggu     = $_POST['usia_kehamilan_minggu'] !== '' ? (int)$_POST['usia_kehamilan_minggu'] : null;
$tekanan_darah   = trim($_POST['tekanan_darah'] ?? '') ?: null;
$berat_badan     = $_POST['berat_badan'] !== '' ? (float)$_POST['berat_badan'] : null;
$tinggi_fundus   = $_POST['tinggi_fundus'] !== '' ? (float)$_POST['tinggi_fundus'] : null;
$letak_janin     = trim($_POST['letak_janin'] ?? '') ?: null;
$djj             = $_POST['denyut_jantung_janin'] !== '' ? (int)$_POST['denyut_jantung_janin'] : null;
$catatan         = trim($_POST['catatan'] ?? '') ?: null;

$back = $_POST['back'] ?? 'detail';

if (!$ibu_hamil_id || !$tanggal) {
    setFlash('error', 'Data ibu hamil & tanggal kunjungan wajib diisi.');
    header('Location: ' . BASE_URL . '/admin/ibu_hamil/detail.php?id=' . $ibu_hamil_id);
    exit;
}

try {
    if ($action === 'edit' && $id) {
        $stmt = $db->prepare("UPDATE kunjungan_posyandu SET tanggal_kunjungan=?, usia_kehamilan_minggu=?, tekanan_darah=?, berat_badan=?, tinggi_fundus=?, letak_janin=?, denyut_jantung_janin=?, catatan=? WHERE id=? AND ibu_hamil_id=?");
        $stmt->execute([$tanggal, $usia_minggu, $tekanan_darah, $berat_badan, $tinggi_fundus, $letak_janin, $djj, $catatan, $id, $ibu_hamil_id]);
        setFlash('success', 'Data kunjungan berhasil diperbarui.');
    } else {
        $stmt = $db->prepare("INSERT INTO kunjungan_posyandu (ibu_hamil_id, tanggal_kunjungan, usia_kehamilan_minggu, tekanan_darah, berat_badan, tinggi_fundus, letak_janin, denyut_jantung_janin, catatan, created_by) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        $stmt->execute([$ibu_hamil_id, $tanggal, $usia_minggu, $tekanan_darah, $berat_badan, $tinggi_fundus, $letak_janin, $djj, $catatan, $_SESSION['user_id'] ?? null]);
        setFlash('success', 'Data kunjungan berhasil ditambahkan.');
    }
} catch (PDOException $e) {
    setFlash('error', 'Gagal menyimpan kunjungan: ' . $e->getMessage());
}

$redirect = ($back === 'kunjungan')
    ? BASE_URL . '/admin/kunjungan/'
    : BASE_URL . '/admin/ibu_hamil/detail.php?id=' . $ibu_hamil_id;
header('Location: ' . $redirect);
exit;
