<?php

declare(strict_types=1);

function uploadImagem(array $file): ?string
{
    if (empty($file['name']) || $file['error'] !== UPLOAD_ERR_OK) {
        return null;
    }

    $ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
    $permitidas = ['jpg', 'jpeg', 'png', 'webp'];

    if (!in_array($ext, $permitidas, true)) {
        throw new RuntimeException('Formato de imagem inválido.');
    }

    $maxBytes = MAX_UPLOAD_MB * 1024 * 1024;
    if (($file['size'] ?? 0) > $maxBytes) {
        throw new RuntimeException('Arquivo excede o tamanho permitido.');
    }

    if (!is_dir(UPLOAD_PATH)) {
        mkdir(UPLOAD_PATH, 0775, true);
    }

    $publicUploadPath = dirname(__DIR__, 2) . '/public/uploads/ocorrencias/';
    if (!is_dir($publicUploadPath)) {
        mkdir($publicUploadPath, 0775, true);
    }

    $novoNome = uniqid('occ_', true) . '.' . $ext;
    $destino = UPLOAD_PATH . $novoNome;
    $destinoPublico = $publicUploadPath . $novoNome;

    if (!move_uploaded_file($file['tmp_name'], $destino)) {
        throw new RuntimeException('Falha ao enviar imagem.');
    }

    if (!@copy($destino, $destinoPublico)) {
        throw new RuntimeException('Falha ao publicar imagem enviada.');
    }

    return $novoNome;
}
