<?php
/**
 * ICYLAB OS - Eliminación Masiva de Productos
 */
require_once '../../core/config.php';
require_once '../../core/session.php';
require_once '../../core/database.php';
require_once '../../services/crm/FactoService.php';
require_once '../../core/permissions.php'; // Agrega esto en los require

require_login();
require_permission('module.products'); // Agrega este candado

if ($_SERVER['REQUEST_METHOD'] !== 'POST') die('Método no permitido.');

$pdo = db();

// Recibimos los IDs
$product_ids_raw = $_POST['product_ids'] ?? '';
$ids = array_filter(array_map('intval', explode(',', $product_ids_raw)));

if (empty($ids)) {
    header('Location: /modules/products/index.php');
    exit;
}

try {
    // Generar placeholders (?,?,?)
    $inQuery = implode(',', array_fill(0, count($ids), '?'));
    
    // 1. Obtener los IDs de FACTO vinculados a estos productos locales
    $stmtGet = $pdo->prepare("SELECT facto_id FROM products WHERE id IN ($inQuery) AND facto_id IS NOT NULL");
    $stmtGet->execute($ids);
    $factoIds = $stmtGet->fetchAll(PDO::FETCH_COLUMN);

    // 2. Eliminar de FACTO (Si aplica)
    if (!empty($factoIds)) {
        $facto = new FactoService();
        foreach ($factoIds as $fId) {
            try {
                $facto->deleteProduct($fId);
            } catch (Exception $e) {
                // Si la API falla (ej: producto ya facturado y bloqueado en FACTO), 
                // lo ignoramos para poder continuar borrando el resto localmente.
            }
        }
    }

    // 3. Eliminar Maestro Local masivamente
    $stmtDel = $pdo->prepare("DELETE FROM products WHERE id IN ($inQuery)");
    $stmtDel->execute($ids);

} catch (Throwable $e) {
    die("Error crítico en eliminación masiva: " . $e->getMessage());
}

header('Location: /modules/products/index.php');
exit;