esp/api/api_sectores.php

92 lines
3.5 KiB
PHP

<?php
// Consolidated sectores API: handles get_sectores, add_sector, update_sector, delete_sector
// Expects $route from api/index.php and bootstrap loaded
$archivo = __DIR__ . '/../data/sectores.json';
switch ($route) {
case 'get_sectores': {
header('Content-Type: application/json');
echo file_exists($archivo) ? file_get_contents($archivo) : json_encode([]);
break;
}
case 'add_sector': {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'msg' => 'Método no permitido']);
break;
}
$entrada = json_decode(file_get_contents('php://input'), true);
$nuevo = trim($entrada['sector'] ?? '');
if ($nuevo === '') {
echo json_encode(['success' => false, 'msg' => 'Sector vacío']);
break;
}
$sectores = file_exists($archivo) ? json_decode(file_get_contents($archivo), true) : [];
if (in_array($nuevo, $sectores)) {
echo json_encode(['success' => false, 'msg' => 'Sector duplicado']);
break;
}
$sectores[] = $nuevo;
if (file_put_contents($archivo, json_encode($sectores, JSON_PRETTY_PRINT))) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'msg' => 'No se pudo guardar']);
}
break;
}
case 'update_sector': {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'msg' => 'Método no permitido']);
break;
}
$entrada = json_decode(file_get_contents('php://input'), true);
$viejo = trim($entrada['old_sector'] ?? '');
$nuevo = trim($entrada['new_sector'] ?? '');
if ($viejo === '' || $nuevo === '') {
echo json_encode(['success' => false, 'msg' => 'Datos inválidos']);
break;
}
$sectores = file_exists($archivo) ? json_decode(file_get_contents($archivo), true) : [];
$actualizado = false;
foreach ($sectores as &$sector) {
if ($sector === $viejo) { $sector = $nuevo; $actualizado = true; break; }
}
if (!$actualizado) {
echo json_encode(['success' => false, 'msg' => 'Sector no encontrado']);
break;
}
if (file_put_contents($archivo, json_encode($sectores, JSON_PRETTY_PRINT))) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'msg' => 'No se pudo guardar']);
}
break;
}
case 'delete_sector': {
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
echo json_encode(['success' => false, 'msg' => 'Método no permitido']);
break;
}
$entrada = json_decode(file_get_contents('php://input'), true);
$nombre = trim($entrada['sector'] ?? '');
if ($nombre === '') {
echo json_encode(['success' => false, 'msg' => 'Sector inválido']);
break;
}
$sectores = file_exists($archivo) ? json_decode(file_get_contents($archivo), true) : [];
$nuevaLista = array_values(array_filter($sectores, fn($s) => $s !== $nombre));
if (file_put_contents($archivo, json_encode($nuevaLista, JSON_PRETTY_PRINT))) {
echo json_encode(['success' => true]);
} else {
echo json_encode(['success' => false, 'msg' => 'No se pudo eliminar']);
}
break;
}
default:
json_error('Ruta no soportada en api_sectores', 404);
}