<?php

require 'vendor/autoload.php';  // Para cargar las dependencias instaladas por Composer
use Google\Cloud\Storage\StorageClient;

require_once __DIR__ . '/../models/FileModel.php';
require_once __DIR__ . '/../models/MateriaModel.php';  

class FileController {

    private $model;
    private $materiaModel;
    private $bucket;

    public function __construct($db) {
        $this->model = new FileModel($db);
        $this->materiaModel = new MateriaModel($db);

        // Inicializar Firebase Storage
        $storage = new StorageClient([
            'keyFilePath' => __DIR__ . '/../config/proyecto-final-36fcc-firebase-adminsdk-ljp12-f322757d5c.json'
        ]);
        $this->bucket = $storage->bucket('proyecto-final-36fcc.appspot.com');
    }

    public function showDocumentForm($materiaId) {
        
        $materia = $this->model->getMateriaById($materiaId);
        $archivos = $this->model->getArchivosByMateria($materiaId);
        require 'Views/uploadForm.php';
    }
    
    

    // Subir archivos
    public function upload($materiaId) {
        if (isset($_FILES['file'])) {
            $nombre = $_POST['nombre'];
            $descripcion = $_POST['descripcion'];
            $archivo = basename($_FILES['file']['name']);
            $archivoTemp = $_FILES['file']['tmp_name'];

            // Subir archivo a Firebase Storage
            $firebaseArchivo = $this->bucket->upload(fopen($archivoTemp, 'r'), [
                'name' => 'Uploads/' . $archivo
            ]);

            if ($firebaseArchivo) {
                $this->model->subirArchivo($nombre, $descripcion, $archivo, $materiaId, $_SESSION['user_id']);
                echo "<script>alert('Archivo subido exitosamente.'); window.location.href='index.php';</script>";
            } else {
                echo "<script>alert('Hubo un error al subir el archivo.'); window.location.href='index.php';</script>";
            }
        }
    }
  
    public function download($fileName) {
        $object = $this->bucket->object('Uploads/' . basename($fileName));
    if ($object->exists()) {
        // Descargar archivo desde Firebase storage
        $object->downloadToFile('ruta-temporal/' . $fileName);
    
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($fileName) . '"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize('ruta-temporal/' . $fileName));
        readfile('ruta-temporal/' . $fileName);
        exit;
    } else {
        echo "<script>alert('El archivo no existe en Firebase.'); window.location.href='index.php';</script>";
    }
    }
    


}

?>
