<?php
// ajax/os_action.php — Ações rápidas em OS via AJAX
require_once __DIR__ . '/../config.php';
require_once __DIR__ . '/../auth.php';
require_once __DIR__ . '/../functions.php';

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

if (empty($_SESSION['usuario_id'])) {
    jsonResponse(['ok'=>false,'msg'=>'Não autenticado'], 401);
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    jsonResponse(['ok'=>false,'msg'=>'Método não permitido'], 405);
}

$input  = json_decode(file_get_contents('php://input'), true) ?? $_POST;
$action = $input['action'] ?? '';
$osId   = (int)($input['os_id'] ?? 0);

if (!$osId) jsonResponse(['ok'=>false,'msg'=>'OS não informada']);

$os = getOSById($osId);
if (!$os) jsonResponse(['ok'=>false,'msg'=>'OS não encontrada'], 404);

switch ($action) {
    case 'concluir':
        if (in_array($os['status'],['CONCLUIDA','CANCELADA'])) {
            jsonResponse(['ok'=>false,'msg'=>'OS já finalizada']);
        }
        $desc   = trim($input['descricao_servico'] ?? '');
        $solucao= trim($input['solucao'] ?? '');
        pdo()->prepare(
            "UPDATE ordens_servico SET status='CONCLUIDA', descricao_servico=?, solucao=?, data_fechamento=NOW() WHERE id=?"
        )->execute([$desc, $solucao, $osId]);
        jsonResponse(['ok'=>true,'msg'=>'OS concluída!','status'=>'CONCLUIDA']);
        break;

    case 'cancelar':
        if (in_array($os['status'],['CONCLUIDA','CANCELADA'])) {
            jsonResponse(['ok'=>false,'msg'=>'OS já finalizada']);
        }
        pdo()->prepare("UPDATE ordens_servico SET status='CANCELADA', data_fechamento=NOW() WHERE id=?")->execute([$osId]);
        jsonResponse(['ok'=>true,'msg'=>'OS cancelada.','status'=>'CANCELADA']);
        break;

    case 'status':
        $novoStatus = $input['status'] ?? '';
        $allowed    = ['ABERTA','AGENDADA','EM_ANDAMENTO'];
        if (!in_array($novoStatus, $allowed)) jsonResponse(['ok'=>false,'msg'=>'Status inválido']);
        pdo()->prepare("UPDATE ordens_servico SET status=? WHERE id=?")->execute([$novoStatus, $osId]);
        jsonResponse(['ok'=>true,'msg'=>"Status → $novoStatus",'status'=>$novoStatus]);
        break;

    default:
        jsonResponse(['ok'=>false,'msg'=>'Ação desconhecida']);
}
