<?php
session_start();
// Verificar si el usuario está logueado y tiene los roles permitidos
if (!isset($_SESSION['usuario_id']) || 
    empty($_SESSION['usuario_id']) || 
    !in_array($_SESSION['rol'], ['admin', 'registrador_de_productos'])) {
    header('Location: ../login.php');
    exit;
}

require_once '../includes/config.php';
require_once '../includes/db.php';

$db = new Database();

if (isset($_GET['id']) && is_numeric($_GET['id'])) {
    $id = intval($_GET['id']);
    
    // Verificar si el proveedor existe
    $stmt = $db->prepare("SELECT id, nombre FROM proveedores WHERE id = ?");
    $stmt->execute([$id]);
    $proveedor = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if ($proveedor) {
        // Verificar si hay productos asociados
        $stmt = $db->prepare("SELECT COUNT(*) as total FROM productos WHERE id_proveedor = ?");
        $stmt->execute([$id]);
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
        
        if ($result['total'] > 0) {
            header("Location: proveedores.php?mensaje=<strong>" . urlencode($proveedor['nombre']) . "</strong> no puede ser eliminado porque tiene productos asociados&tipo=warning");
            exit;
        }
        
        try {
            // Eliminar el proveedor si no tiene productos
            $stmt = $db->prepare("DELETE FROM proveedores WHERE id = ?");
            $stmt->execute([$id]);
            
            header("Location: proveedores.php?mensaje=Proveedor eliminado correctamente&tipo=success");
            exit;
        } catch (PDOException $e) {
            header("Location: proveedores.php?mensaje=Error al eliminar el proveedor&tipo=error");
            exit;
        }
    } else {
        header("Location: proveedores.php?mensaje=Proveedor no encontrado&tipo=error");
        exit;
    }
} else {
    header("Location: proveedores.php?mensaje=ID de proveedor no válido&tipo=error");
    exit;
}
?>
