<?php
/**
 * API: Actualizar Configuración de Descuentos
 * Permite modificar los parámetros de un tipo de descuento
 */

header('Content-Type: application/json');
require_once '../../db_connection.php';

try {
    $input = json_decode(file_get_contents('php://input'), true);
    
    $tipo_descuento = $input['tipo_descuento'] ?? null;
    $porcentaje_descuento = isset($input['porcentaje_descuento']) ? floatval($input['porcentaje_descuento']) : null;
    $monto_fijo = isset($input['monto_fijo']) ? floatval($input['monto_fijo']) : null;
    $activo = isset($input['activo']) ? (int)$input['activo'] : null;
    $condicion_minima = isset($input['condicion_minima']) ? floatval($input['condicion_minima']) : null;
    
    // Validaciones
    if (!$tipo_descuento) {
        throw new Exception('El tipo de descuento es requerido');
    }
    
    if (!in_array($tipo_descuento, ['empleado', 'ayuda_social'])) {
        throw new Exception('Tipo de descuento inválido');
    }
    
    if ($porcentaje_descuento !== null && ($porcentaje_descuento < 0 || $porcentaje_descuento > 100)) {
        throw new Exception('El porcentaje debe estar entre 0 y 100');
    }
    
    // Construir query dinámicamente
    $updates = [];
    $params = [];
    
    if ($porcentaje_descuento !== null) {
        $updates[] = "porcentaje_descuento = ?";
        $params[] = $porcentaje_descuento;
    }
    
    if ($monto_fijo !== null) {
        $updates[] = "monto_fijo = ?";
        $params[] = $monto_fijo;
    }
    
    if ($activo !== null) {
        $updates[] = "activo = ?";
        $params[] = $activo;
    }
    
    if ($condicion_minima !== null) {
        $updates[] = "condicion_minima = ?";
        $params[] = $condicion_minima;
    }
    
    if (empty($updates)) {
        throw new Exception('No hay datos para actualizar');
    }
    
    $params[] = $tipo_descuento;
    
    $sql = "UPDATE descuentos_especiales SET " . implode(', ', $updates) . " WHERE tipo_descuento = ?";
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    
    if ($stmt->rowCount() === 0) {
        throw new Exception('No se encontró el tipo de descuento o no hubo cambios');
    }
    
    echo json_encode([
        'success' => true,
        'message' => 'Configuración actualizada correctamente'
    ]);
    
} catch (Exception $e) {
    http_response_code(400);
    echo json_encode([
        'success' => false,
        'error' => $e->getMessage()
    ]);
}
