<?php
try {
    include "../database.php";
    
    // Log dei dati ricevuti
    error_log("=== INIZIO send_new_stamp ===");
    error_log("POST ricevuto: " . print_r($_POST, true));
    error_log("SESSION id: " . (isset($_SESSION['id']) ? $_SESSION['id'] : 'NON SETTATO'));
    
    if (!isset($_SESSION['id'])) {
        error_log("ERRORE: Sessione non valida");
        echo "error";
        exit;
    }
    
    $stamp_type  = isset($_POST["stamp_type"]) ? $_POST["stamp_type"] : "";
    $stamp_note  = isset($_POST["stamp_note"]) ? addslashes($_POST["stamp_note"]) : "";
    
    $stamp_date = "";
    if (isset($_POST["stamp_date"]) && !empty($_POST["stamp_date"])) {
        $date_timestamp = strtotime($_POST["stamp_date"]);
        if ($date_timestamp !== false) {
            $stamp_date = date("Y-m-d", $date_timestamp);
        } else {
            $stamp_date = $_POST["stamp_date"];
        }
    }
    
    $stamp_time = "";
    if (isset($_POST["stamp_time"]) && !empty($_POST["stamp_time"])) {
        $time_timestamp = strtotime($_POST["stamp_time"]);
        if ($time_timestamp !== false) {
            $stamp_time = date("H:i", $time_timestamp);
        } else {
            // Se strtotime fallisce, prova a usare direttamente il valore se è già in formato H:i
            if (preg_match('/^\d{2}:\d{2}$/', $_POST["stamp_time"])) {
                $stamp_time = $_POST["stamp_time"];
            }
        }
    }
    
    $datetime    = date("Y-m-d H:i:s");
    $user_id     = $_SESSION['id'];
    $in_transfer = isset($_POST["in_transfer"]) ? $_POST["in_transfer"] : false;
    $transfer_location = isset($_POST["transfer_location"]) ? addslashes($_POST["transfer_location"]) : "";
    $secure      = rand(100000, 1000000);
    
    error_log("Dati processati - type: $stamp_type, date: $stamp_date, time: $stamp_time, user_id: $user_id, in_transfer: " . var_export($in_transfer, true));
    
    // Converti in_transfer in 0 o 1
    if ($in_transfer === true || $in_transfer === "true" || $in_transfer === 1 || $in_transfer === "1") {
        $in_transfer = 1;
    } else {
        $in_transfer = 0;
    }
    
    $stamp_datetime = $stamp_date." ".$stamp_time;
    
    // Validazione finale
    if (empty($stamp_type) || empty($stamp_date) || empty($stamp_time)) {
        error_log("ERRORE: Dati mancanti - type: '$stamp_type', date: '$stamp_date', time: '$stamp_time'");
        echo "error";
        exit;
    }
    
    // Struttura tabella: id, user_id, type, date, time, note, stamp_datetime, in_transfer, badge, transfer_location, delete_request, delete_request_rejected, secure, delete_motivation
    $sql_insert = "INSERT INTO stamps VALUES (NULL,$user_id,'$stamp_type','$stamp_date','$stamp_time','$stamp_note','$datetime', $in_transfer, 0, '$transfer_location',0,0,'$secure','')";
    error_log("Query SQL: " . $sql_insert);
    
    $result = $con->query($sql_insert);
    if ($result === true) {
        $id = $con->insert_id;
        error_log("Stamp inserito con ID: $id");
        
        $sql_insert = "INSERT INTO tbl_events VALUES (NULL,'$stamp_type', '$stamp_datetime', '$stamp_datetime', $user_id, 0, '#2196f3', 'Timbratura', $id)";
        error_log("Query eventi: " . $sql_insert);
        $result_event = $con->query($sql_insert);
        if ($result_event === true) {
            error_log("Evento inserito con successo");
            echo "ok";
        } else {
            $error_msg = "Errore inserimento evento: " . $con->error . " (Errno: " . $con->errno . ")";
            error_log($error_msg);
            echo "error|" . $error_msg;
        }
    } else {
        $error_msg = "Errore inserimento stamp: " . $con->error . " (Errno: " . $con->errno . ")";
        error_log($error_msg);
        echo "error|" . $error_msg;
    }
    
    error_log("=== FINE send_new_stamp ===");
    $con->close();
} catch (Exception $e) {
    error_log("ECCEZIONE in send_new_stamp: " . $e->getMessage());
    error_log("Stack trace: " . $e->getTraceAsString());
    echo "error";
}
