<?php
// Izinkan akses dari aplikasi mobile
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");

require_once '../config/database.php';

// Tangkap data JSON dari aplikasi HP
$data = json_decode(file_get_contents("php://input"));

// Pastikan data inti tidak kosong
if (!empty($data->user_id) && !empty($data->type) && !empty($data->image)) {
    
    // Sanitasi data
    $user_id = filter_var($data->user_id, FILTER_VALIDATE_INT);
    $type = htmlspecialchars($data->type); // Isinya 'in' atau 'out'
    $lat = htmlspecialchars($data->lat ?? ''); // Latitude GPS
    $lng = htmlspecialchars($data->lng ?? ''); // Longitude GPS
    $img_base64 = $data->image;

    // Bersihkan header base64 jika terbawa dari aplikasi HP
    if (strpos($img_base64, ',') !== false) {
        @list($type_img, $img_base64) = explode(',', $img_base64);
    }
    
    // Ubah teks Base64 kembali menjadi file gambar fisik
    $img_data = base64_decode(str_replace(' ', '+', $img_base64));

    if (!$img_data) {
        http_response_code(400);
        echo json_encode(["status" => "error", "message" => "Format gambar tidak valid."]);
        exit();
    }

    // Buat nama file unik dan tentukan lokasi simpan (mundur 1 folder ke assets)
    $filename = "absent_" . $type . "_" . $user_id . "_" . time() . ".jpg";
    $filepath = "../assets/img/attendance/" . $filename;

    try {
        // Simpan gambar fisik ke server hosting
        if (file_put_contents($filepath, $img_data)) {
            // Simpan data nama file dan GPS ke database
            $stmt = $pdo->prepare("INSERT INTO attendance (user_id, type, photo, latitude, longitude, attendance_time) VALUES (?, ?, ?, ?, ?, NOW())");
            $stmt->execute([$user_id, $type, $filename, $lat, $lng]);

            echo json_encode([
                "status" => "success", 
                "message" => "Absensi ". strtoupper($type) ." dan Lokasi GPS berhasil disimpan!"
            ]);
        } else {
            http_response_code(500);
            echo json_encode(["status" => "error", "message" => "Gagal menyimpan file gambar ke server. Cek folder permissions."]);
        }
    } catch (PDOException $e) {
        http_response_code(500);
        echo json_encode(["status" => "error", "message" => "Database Error: " . $e->getMessage()]);
    }

} else {
    // Jika aplikasi HP tidak mengirim data yang lengkap
    http_response_code(400);
    echo json_encode(["status" => "error", "message" => "Data tidak lengkap! (user_id, type, dan image wajib dikirim)"]);
}
?>