<?php
/**
 * API para Configurar Sistema Baseado no Tipo de Instalação
 */

require_once __DIR__ . '/../../config/bootstrap.php';

use ControleFrotas\Utils\Response;
use ControleFrotas\Utils\Logger;

header('Content-Type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

// Tratar OPTIONS (CORS preflight)
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(['success' => false, 'message' => 'Método não permitido']);
    exit;
}

try {
    $input = json_decode(file_get_contents('php://input'), true);
    
    $installationType = $input['installation_type'] ?? null; // 'gestor' ou 'motorista'
    $deviceId = $input['device_id'] ?? null;
    $appVersion = $input['app_version'] ?? '1.0.0';
    
    if (!$installationType) {
        Response::error('Tipo de instalação é obrigatório', 400);
    }
    
    if (!in_array($installationType, ['gestor', 'motorista'])) {
        Response::error('Tipo de instalação deve ser "gestor" ou "motorista"', 400);
    }
    
    // Configurar sistema baseado no tipo
    switch ($installationType) {
        case 'gestor':
            // Configurações para gestor
            $config = [
                'user_type' => 'gestor',
                'default_screen' => 'gestor_dashboard',
                'show_approval_buttons' => true,
                'can_approve_requests' => true,
                'can_view_reports' => true,
                'notification_types' => ['solicitacao_viagem', 'relatorio_diario'],
                'permissions' => [
                    'approve_requests' => true,
                    'deny_requests' => true,
                    'view_all_requests' => true,
                    'manage_drivers' => true,
                    'view_reports' => true
                ]
            ];
            break;
            
        case 'motorista':
            // Configurações para motorista
            $config = [
                'user_type' => 'motorista',
                'default_screen' => 'motorista_dashboard',
                'show_approval_buttons' => false,
                'can_approve_requests' => false,
                'can_view_reports' => false,
                'notification_types' => ['aprovacao_viagem', 'negacao_viagem', 'viagem_iniciada'],
                'permissions' => [
                    'create_requests' => true,
                    'start_trips' => true,
                    'end_trips' => true,
                    'view_own_requests' => true,
                    'view_own_trips' => true
                ]
            ];
            break;
    }
    
    // Salvar configuração no banco
    $configJson = json_encode($config);
    
    Database::execute(
        "INSERT INTO system_config (installation_type, device_id, app_version, config_data, created_at) 
         VALUES (?, ?, ?, ?, NOW())",
        [$installationType, $deviceId, $appVersion, $configJson]
    );
    
    // Registrar log de instalação
    Logger::info('Sistema instalado', [
        'installation_type' => $installationType,
        'device_id' => $deviceId,
        'app_version' => $appVersion
    ]);
    
    Response::success([
        'message' => 'Sistema configurado com sucesso',
        'installation_type' => $installationType,
        'config' => $config
    ]);
    
} catch (Exception $e) {
    Logger::error('Erro ao configurar sistema', [
        'error' => $e->getMessage(),
        'installation_type' => $installationType ?? null
    ]);
    
    Response::error('Erro interno: ' . $e->getMessage(), 500);
}
?> 
