<?php
// Mostra errori per il debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

include('include/headscript.php');
include('tools/mailer.php'); // Includi il file per l'invio delle email

// Connessione al database
$conn = new mysqli($servername, $username, $password, $database);

if ($conn->connect_error) {
    die("Errore di connessione: " . $conn->connect_error);
}

// Controlla se il metodo della richiesta è POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Recupera i dati dal form
    $idhome = isset($_POST['idhome']) ? (int)$_POST['idhome'] : 0;
    $shared_email = $conn->real_escape_string($_POST['shared_email']);
    $role_id = isset($_POST['role_id']) ? (int)$_POST['role_id'] : null;
    $sharing_type = $conn->real_escape_string($_POST['sharing_type']);
    $expiration_date = !empty($_POST['expiration_date']) ? $conn->real_escape_string($_POST['expiration_date']) : null;
    $shared_sections = isset($_POST['shared_sections']) ? $_POST['shared_sections'] : [];

    // Prepara le sezioni condivise come stringa JSON
    $sections_json = json_encode($shared_sections);

    // Recupera il nome e cognome dell'utente loggato
    $queryUserDetails = "SELECT first_name, last_name FROM auth_users WHERE id = ?";
    $stmtUserDetails = $conn->prepare($queryUserDetails);
    if ($stmtUserDetails === false) {
        die("Errore nella preparazione della query: " . $conn->error);
    }

    $stmtUserDetails->bind_param('i', $iduserlogin);
    $stmtUserDetails->execute();
    $resultUserDetails = $stmtUserDetails->get_result();
    $userDetails = $resultUserDetails->fetch_assoc();
    $userName = $userDetails['first_name'] . ' ' . $userDetails['last_name'];

    $stmtUserDetails->close();

    // Controlla se l'email è associata a un utente registrato
    $queryCheckUser = "SELECT id FROM auth_users WHERE email = ?";
    $stmtCheckUser = $conn->prepare($queryCheckUser);
    if ($stmtCheckUser === false) {
        die("Errore nella preparazione della query: " . $conn->error);
    }

    $stmtCheckUser->bind_param('s', $shared_email);
    $stmtCheckUser->execute();
    $resultCheckUser = $stmtCheckUser->get_result();

    // Determina lo stato e l'idshareduser
    if ($resultCheckUser->num_rows > 0) {
        $user = $resultCheckUser->fetch_assoc();
        $idshareduser = $user['id'];
        $status = 'accepted'; // Utente già registrato
    } else {
        $idshareduser = null;
        $status = 'pending'; // Utente non registrato
    }

    $stmtCheckUser->close();

    // Inserisce i dati nella tabella home_Sharing
    $query = "INSERT INTO home_sharing (idhome, iduser, shared_email, idshareduser, role_id, sharing_type, shared_sections, expiration_date, status) 
              VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";

    $stmt = $conn->prepare($query);
    if ($stmt === false) {
        die("Errore nella preparazione della query: " . $conn->error);
    }

    // Associa i parametri alla query
    $stmt->bind_param(
        'iisssssss',
        $idhome,
        $iduserlogin,
        $shared_email,
        $idshareduser,
        $role_id,
        $sharing_type,
        $sections_json,
        $expiration_date,
        $status
    );

    // Esegue la query e controlla il risultato
    if ($stmt->execute()) {
        // Recupera i dettagli dell'immobile
        $queryHome = $conn->prepare("SELECT name FROM home WHERE idhome = ?");
        $queryHome->bind_param('i', $idhome);
        $queryHome->execute();
        $resultHome = $queryHome->get_result();
        $home = $resultHome->fetch_assoc();
        $homeName = $home['name'];

        // Prepara i dettagli per l'email
        $subject = "Condivisione Immobile - CASADOC";
        $body = file_get_contents('templates/emails/shared_property_email.html');

        if ($idshareduser) {
            // Utente già registrato
            $body = str_replace(
                ['{EMAIL_SUBJECT}', '{EMAIL_MESSAGE}', '{EMAIL_CTA}'],
                [
                    "Condivisione Immobile",
                    "L'utente <strong>$userName</strong> ha condiviso con te l'immobile <strong>$homeName</strong>. Puoi trovarlo nella sezione 'Immobili Condivisi' su CASADOC.",
                    "<a href='https://casadoc.app/shared-properties' class='cta'>Visualizza Immobili</a>"
                ],
                $body
            );
        } else {
            // Utente non registrato
            $body = str_replace(
                ['{EMAIL_SUBJECT}', '{EMAIL_MESSAGE}', '{EMAIL_CTA}'],
                [
                    "Registrazione Necessaria",
                    "L'utente <strong>$userName</strong> ha condiviso con te un immobile, ma devi registrarti su CASADOC per visualizzarlo.",
                    "<a href='https://casadoc.app/register' class='cta'>Registrati Ora</a>"
                ],
                $body
            );
        }

        // Invia l'email
        $mailResult = sendEmail($shared_email, $subject, $body);

        if (!$mailResult['success']) {
            error_log("Errore nell'invio dell'email: " . $mailResult['message']);
        }

        // Reindirizza alla pagina delle condivisioni con il messaggio di successo
        header("Location: share-home.php?idhome=$idhome&success=1");
        exit();
    } else {
        // Reindirizza alla pagina delle condivisioni con il messaggio di errore
        header("Location: share-home.php?idhome=$idhome&error=1");
        exit();
    }

    $stmt->close();
} else {
    // Metodo non consentito
    header("HTTP/1.1 405 Method Not Allowed");
    echo "Metodo non consentito.";
    exit();
}

$conn->close();
