<?php
/**
 * API de Recebimento de Notas Fiscais de Coleta
 * Endpoint: api/recNotasColeta.php
 */

header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');

include_once('./classes/conexao.php');

// Validar token
if(!isset($_GET['token'])){
    echo json_encode(['code' => '400', 'message' => 'Token não informado!'], JSON_UNESCAPED_UNICODE);
    die();
}

$token = 'ajr123';
$chave = $_GET['token'];

if($chave !== $token){
    echo json_encode(['code' => '401', 'message' => 'Token inválido!'], JSON_UNESCAPED_UNICODE);
    die();
}

try {
    // Receber dados JSON
    $json = file_get_contents("php://input");
    $dados = json_decode($json);
    
    if(!$dados || !is_array($dados) || count($dados) === 0){
        echo json_encode(['code' => '400', 'message' => 'Dados inválidos!'], JSON_UNESCAPED_UNICODE);
        die();
    }
    
    $sucesso = 0;
    $erros = 0;
    $mensagensErro = [];
    
    // Processar cada nota
    foreach($dados as $nota){
        $chave44 = isset($nota->chave44) ? trim($nota->chave44) : '';
        $coleta = isset($nota->coleta) ? trim($nota->coleta) : '';
        $filial = isset($nota->filial) ? trim($nota->filial) : '';
        $manserie = isset($nota->manserie) ? trim($nota->manserie) : '';
        $manfilial = isset($nota->manfilial) ? trim($nota->manfilial) : '';
        $manmanifesto = isset($nota->manmanifesto) ? trim($nota->manmanifesto) : '';
        $usuario = isset($nota->usuario) ? trim($nota->usuario) : '';
        $placa = isset($nota->placa) ? trim($nota->placa) : '';
        
        // Validações
        if(empty($chave44)){
            $erros++;
            $mensagensErro[] = "Chave da nota não informada";
            continue;
        }
        
        if(empty($coleta) || empty($filial)){
            $erros++;
            $mensagensErro[] = "Coleta ou filial não informada para nota $chave44";
            continue;
        }
        
        if(empty($placa)){
            $erros++;
            $mensagensErro[] = "Placa não informada para nota $chave44";
            continue;
        }
        
        try {
            // Inserir nota (ignora duplicatas)
            $sql = "INSERT INTO notascoleta 
                    (chave44, coleta, filial, manserie, manfilial, manmanifesto, datarecebimento, usuario, placa) 
                    VALUES 
                    (:chave44, :coleta, :filial, :manserie, :manfilial, :manmanifesto, NOW(), :usuario, :placa)";
            
            $stmt = $conn->prepare($sql);
            $stmt->bindParam(':chave44', $chave44, PDO::PARAM_STR);
            $stmt->bindParam(':coleta', $coleta, PDO::PARAM_STR);
            $stmt->bindParam(':filial', $filial, PDO::PARAM_STR);
            $stmt->bindParam(':manserie', $manserie, PDO::PARAM_STR);
            $stmt->bindParam(':manfilial', $manfilial, PDO::PARAM_STR);
            $stmt->bindParam(':manmanifesto', $manmanifesto, PDO::PARAM_STR);
            $stmt->bindParam(':usuario', $usuario, PDO::PARAM_STR);
            $stmt->bindParam(':placa', $placa, PDO::PARAM_STR);
            
            $stmt->execute();
            $sucesso++;
            
        } catch(PDOException $e) {
            // Se for erro de duplicata, ignora
            if($e->getCode() == 23000){
                $sucesso++; // Considera como sucesso pois já existe
            } else {
                $erros++;
                $mensagensErro[] = "Erro ao inserir nota $chave44: " . $e->getMessage();
            }
        }
    }
    
    // Retornar resultado
    $response = [
        'code' => '200',
        'message' => 'Processamento concluído',
        'sucesso' => $sucesso,
        'erros' => $erros
    ];
    
    if(count($mensagensErro) > 0){
        $response['detalhes'] = $mensagensErro;
    }
    
    echo json_encode($response, JSON_UNESCAPED_UNICODE);
    
} catch(Exception $e) {
    echo json_encode([
        'code' => '500',
        'message' => 'Erro interno: ' . $e->getMessage()
    ], JSON_UNESCAPED_UNICODE);
}
?>