<?php
/**
 * POST — Crea o actualiza la tarifa de un examen. Requiere administrador.
 */
require_once __DIR__ . '/_helpers.php';
requireAdmin();
if ($_SERVER['REQUEST_METHOD'] !== 'POST') jsonError('Método no permitido', 405);

$d = inputJson();
$examId   = (int)($d['exam_tipo_id'] ?? 0);
$tarifaId = (int)($d['tarifa_id']    ?? 0);
if (!$examId || !$tarifaId) jsonError('exam_tipo_id y tarifa_id son requeridos');

$pdo = db();

if (!empty($d['_delete'])) {
    $pdo->prepare('DELETE FROM lab_tarifas WHERE exam_tipo_id = ? AND tarifa_id = ?')
        ->execute([$examId, $tarifaId]);
    jsonOk([], 'Precio eliminado');
}

$valor   = (float)($d['valor']       ?? 0);
$rec_urg = (float)($d['recargo_urg'] ?? 0);
$rec_fes = (float)($d['recargo_fes'] ?? 0);
$rec_esp = (float)($d['recargo_esp'] ?? 0);

$s = $pdo->prepare('SELECT COALESCE(codigo_legacy, codigo) FROM exam_tipos WHERE id = ?');
$s->execute([$examId]);
$leg = $s->fetchColumn();
if (!$leg) jsonError('Examen no encontrado', 404);

// Check if price row exists (no unique key in schema, so do it manually)
$s = $pdo->prepare('SELECT id FROM lab_tarifas WHERE exam_tipo_id = ? AND tarifa_id = ?');
$s->execute([$examId, $tarifaId]);
$precioId = $s->fetchColumn();

if ($precioId) {
    $pdo->prepare(
        'UPDATE lab_tarifas SET valor=?,recargo_urg=?,recargo_fes=?,recargo_esp=?,cod_examen_legacy=? WHERE id=?'
    )->execute([$valor, $rec_urg, $rec_fes, $rec_esp, $leg, $precioId]);
} else {
    $pdo->prepare(
        'INSERT INTO lab_tarifas (cod_examen_legacy,exam_tipo_id,tarifa_id,valor,recargo_urg,recargo_fes,recargo_esp)
         VALUES (?,?,?,?,?,?,?)'
    )->execute([$leg, $examId, $tarifaId, $valor, $rec_urg, $rec_fes, $rec_esp]);
}

jsonOk([], 'Precio guardado');
