<?php
require_once __DIR__ . '/../app.php';
!class_exists("Modulo") && require_once __DIR__ . '/../Models/moduloModel.php';

header("Content-Type: application/json; charset=utf-8");

$respuesta = (object)[];

App::verificarSesion();

$idUsuarioActual = App::obtenerIdUsuario();

if ($_SERVER['REQUEST_METHOD'] == 'GET') {
    $accion = isset($_GET['accion']) ? $_GET['accion'] : null;

    switch ($accion) {
        case 'obtenerTodos':
            $respuesta = Modulo::obtenerTodos();
            break;
        case 'obtenerTodosParaCombo':
            $respuesta = Modulo::obtenerTodosParaCombo();
            break;
        default:
            $respuesta->status = 400;
            $respuesta->message = "Acción no válida";
            break;
    }
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);
    !empty($_POST) && $input = $_POST;
    $accion = isset($input['accion']) ? $input['accion'] : null;

    switch ($accion) {
        case 'guardar':
            $modulo = new Modulo();
            $modulo->id = $input['modulo']['id'];
            $modulo->titulo = trim($input['modulo']['titulo']);
            $modulo->contenedor = trim($input['modulo']['contenedor']);
            $modulo->descripcion = trim($input['modulo']['descripcion']);
            $modulo->mantenimiento = $input['modulo']['mantenimiento'];
            $modulo->apartados = $input['modulo']['apartados'];

            $respuesta = $modulo->guardar($idUsuarioActual);
            break;
        case 'configurarMantenimiento':
            $modulo = new Modulo();
            $modulo->id = $input['id'];
            $modulo->mantenimiento = $input['mantenimiento'];

            $respuesta = $modulo->configurarMantenimiento($idUsuarioActual);
            break;
        case 'eliminar':
            $id = isset($input['id']) ? base64_decode($input['id']) : 0;

            $modulo = new Modulo();
            $modulo->id = $id;

            $respuesta = $modulo->eliminar($idUsuarioActual);
            break;
        default:
            $respuesta->status = 400;
            $respuesta->message = 'Acción no válida';
            break;
    }
}

$httpCode = isset($respuesta->status) ? $respuesta->status : 500;
http_response_code($httpCode);
echo json_encode($respuesta);
