<?php
/**
 * API: Guardar Receta Controlada
 * Sistema Sufarma - Fase 2.5
 * Inserta registros de receta para cada medicamento controlado vendido
 */

ini_set('display_errors', 0);
error_reporting(E_ALL);
header('Content-Type: application/json; charset=utf-8');

require_once '../../db_connection.php';

$response = ['success' => false];

try {
    // Solo aceptar POST
    if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
        throw new Exception('Método no permitido');
    }

    // Leer JSON del body
    $input = json_decode(file_get_contents('php://input'), true);

    if (!$input) {
        throw new Exception('Datos inválidos');
    }

    $venta_id = isset($input['venta_id']) ? $input['venta_id'] : null;
    $productos = isset($input['productos']) ? $input['productos'] : [];
    $nombre_medico = isset($input['nombre_medico']) ? trim($input['nombre_medico']) : null;
    $colegiado = isset($input['colegiado']) ? trim($input['colegiado']) : null;
    $nombre_paciente = isset($input['nombre_paciente']) ? trim($input['nombre_paciente']) : null;
    $dpi_paciente = isset($input['dpi_paciente']) ? trim($input['dpi_paciente']) : null;
    $fue_omitida = isset($input['fue_omitida']) ? (int)$input['fue_omitida'] : 0;
    $usuario_id = isset($input['usuario_id']) ? (int)$input['usuario_id'] : null;

    if (empty($productos) || !is_array($productos)) {
        throw new Exception('No se proporcionaron productos controlados');
    }

    // Insertar un registro por cada producto controlado
    $stmt = $pdo->prepare("INSERT INTO ventas_recetas 
        (venta_id, producto_id, nombre_medico, colegiado, nombre_paciente, dpi_paciente, fue_omitida, usuario_id)
        VALUES (:venta_id, :producto_id, :nombre_medico, :colegiado, :nombre_paciente, :dpi_paciente, :fue_omitida, :usuario_id)");

    $pdo->beginTransaction();

    foreach ($productos as $producto_id) {
        $stmt->execute([
            ':venta_id' => $venta_id,
            ':producto_id' => (int)$producto_id,
            ':nombre_medico' => $nombre_medico ?: null,
            ':colegiado' => $colegiado ?: null,
            ':nombre_paciente' => $nombre_paciente ?: null,
            ':dpi_paciente' => $dpi_paciente ?: null,
            ':fue_omitida' => $fue_omitida,
            ':usuario_id' => $usuario_id
        ]);
    }

    $pdo->commit();

    $response['success'] = true;
    $response['message'] = 'Receta(s) registrada(s) correctamente';
    $response['registros'] = count($productos);

} catch (Exception $e) {
    if ($pdo->inTransaction()) {
        $pdo->rollBack();
    }
    $response['success'] = false;
    $response['error'] = $e->getMessage();
}

echo json_encode($response, JSON_UNESCAPED_UNICODE);
?>
