<?php
// Abilita la visualizzazione degli errori per il debug
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// Collegamento al database
require_once('../Connections/yogiwherequery.php');
$conn = new mysqli($servername, $username, $password, $database);
// Verifica se la connessione al database è avvenuta correttamente
if ($conn->connect_error) {
    echo json_encode(['success' => false, 'message' => 'Errore di connessione al database: ' . $conn->connect_error]);
    exit;
}

// Controllo se il file è stato inviato tramite POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Verifica se il file e l'ID della scuola sono presenti
    if (isset($_FILES['file']) && isset($_POST['idyogaschool'])) {
        $file = $_FILES['file'];
        $idyogaschool = $_POST['idyogaschool'];

        // Estrai le informazioni del file
        $originalName = $file['name'];
        $tempPath = $file['tmp_name'];
        $fileType = $file['type'];
        $fileSize = $file['size'];

        // Verifica l'estensione del file (solo JPG e PNG)
        $validExtensions = ['image/jpeg', 'image/png', 'image/jpg'];
        if (!in_array($fileType, $validExtensions)) {
            echo json_encode(['success' => false, 'message' => 'Formato file non valido. Solo JPG, JPEG e PNG sono consentiti.']);
            exit;
        }

        // Limita il numero di immagini a 5 per questa scuola
        $query = $conn->prepare("SELECT COUNT(*) AS photo_count FROM photoyogaschool WHERE idyogaschool = ?");
        $query->bind_param("i", $idyogaschool);
        $query->execute();
        $result = $query->get_result();
        $data = $result->fetch_assoc();

        if ($data['photo_count'] >= 5) {
            echo json_encode(['success' => false, 'message' => 'Numero massimo di 5 foto raggiunto.']);
            exit;
        }

        // Rinomina il file
        $timestamp = time();
        $newFileName = $idyogaschool . '-' . $timestamp . '-' . basename($originalName);

        // Definisci il percorso di salvataggio
        $uploadDir = 'uploadphotoschool/';
        $uploadPath = $uploadDir . $newFileName;

        // Verifica se la directory di upload è scrivibile
        if (!is_dir($uploadDir) || !is_writable($uploadDir)) {
            echo json_encode(['success' => false, 'message' => 'Directory di upload non esistente o non scrivibile.']);
            exit;
        }

        // Funzione per ridimensionare l'immagine
        function resizeImage($file, $fileType, $maxWidth, $maxHeight)
        {
            list($width, $height) = getimagesize($file);
            $ratio = $width / $height;

            if ($width > $maxWidth || $height > $maxHeight) {
                if ($width > $height) {
                    $newWidth = $maxWidth;
                    $newHeight = $maxWidth / $ratio;
                } else {
                    $newHeight = $maxHeight;
                    $newWidth = $maxHeight * $ratio;
                }
            } else {
                $newWidth = $width;
                $newHeight = $height;
            }

            // Crea una nuova immagine ridimensionata
            if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
                $src = imagecreatefromjpeg($file);
            } elseif ($fileType === 'image/png') {
                $src = imagecreatefrompng($file);
            } else {
                return false; // Tipo di file non supportato
            }

            $dst = imagecreatetruecolor($newWidth, $newHeight);
            imagecopyresampled($dst, $src, 0, 0, 0, 0, $newWidth, $newHeight, $width, $height);

            return $dst;
        }

        // Ridimensiona l'immagine prima di salvarla
        $resizedImage = resizeImage($tempPath, $fileType, 800, 600);
        if (!$resizedImage) {
            echo json_encode(['success' => false, 'message' => 'Errore durante il ridimensionamento dell\'immagine.']);
            exit;
        }

        // Salva l'immagine ridimensionata
        if ($fileType === 'image/jpeg' || $fileType === 'image/jpg') {
            if (!imagejpeg($resizedImage, $uploadPath)) {
                echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file JPEG.']);
                exit;
            }
        } elseif ($fileType === 'image/png') {
            if (!imagepng($resizedImage, $uploadPath)) {
                echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio del file PNG.']);
                exit;
            }
        }

        // Libera la memoria occupata dall'immagine ridimensionata
        imagedestroy($resizedImage);

        // Salva le informazioni nel database
        $query = $conn->prepare("INSERT INTO photoyogaschool (photofilename, idyogaschool) VALUES (?, ?)");
        $query->bind_param("si", $newFileName, $idyogaschool);
        if ($query->execute()) {
            echo json_encode(['success' => true, 'message' => 'File caricato e salvato con successo.']);
        } else {
            echo json_encode(['success' => false, 'message' => 'Errore durante il salvataggio nel database.']);
        }
    } else {
        echo json_encode(['success' => false, 'message' => 'Nessun file o ID scuola ricevuto.']);
    }
} else {
    echo json_encode(['success' => false, 'message' => 'Richiesta non valida.']);
}
