Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

EntryPoint 400 - Modelos e Boas Praticas

Papel do EntryPoint 400

O EntryPoint 400 monta os dados base da galeria da Home.
O backend da API transforma esses dados em contrato leve (previewUrl/fullUrl).

Modelo recomendado (simplificado)

try {
    $disabled = xDS::getParametroConteudo('HOME_GALLERY_DISABLED', false);
    if ($disabled || !xDS::existNfsTabela('APONTAMENTO_FOTO')) {
        return;
    }

    $quantidadeFotos = (int) xDS::getParametroConteudo('HOME_GALLERY_PHOTO_QTY', 10);
    $quantidadeFotos = max(1, min($quantidadeFotos, 30));

    $fotos = Dao::table('APONTAMENTO_FOTO')
        ->select(['SEQ_DB', 'INI_DH', 'CODIGO_OS', 'OS_CRIADA', 'OS_SEQ_DB'])
        ->where('FOTO_HAS = 1')
        ->orderBy('SEQ_DB', 'DESC')
        ->limit($quantidadeFotos)
        ->get();

    $itens = [];
    foreach ($fotos as $foto) {
        $seqDb = (int) $foto['SEQ_DB'];
        $codOs = $foto['CODIGO_OS'] ?? '';

        $itens[] = [
            'image' => ImageService::getImageFromMobile('FOTO', 'APONTAMENTO_FOTO', $seqDb),
            'text' => ($foto['INI_DH'] ?? '') . ' OS:' . $codOs,
            'onclick' => !empty($foto['OS_CRIADA'])
                ? "nfsui.newWindow({'url':'/g/OS_OFFLINE/dados/{$foto['OS_CRIADA']}'})"
                : "nfsui.newWindow({'url':'/g/OS/dados/{$foto['OS_SEQ_DB']}'})",
            'table' => 'APONTAMENTO_FOTO',
            'seqDb' => $seqDb,
        ];
    }

    $gallery = new \stdClass();
    $gallery->title = 'Ultimas fotos';
    $gallery->itens = $itens;
    $this->param = $gallery;
} catch (\Throwable $th) {
    NfsLogger::error($th->getMessage(), __METHOD__, $th);
}

Boas praticas

  1. Alinhar limite de query com parametro
    • evitar limit fixo (ex.: limit(8)) quando existe HOME_GALLERY_PHOTO_QTY.
  2. Titulo sem prometer quantidade exata
    • preferir "Ultimas fotos" ou montar titulo com count($itens).
  3. Tratar excecao corretamente
    • usar a variavel correta no catch ($th).
  4. Evitar calculos incorretos de contagem
    • count($itens) em vez de count($itens[$ultimoIndice]).

Armadilhas comuns

  • texto mostra "Ultimas 10", mas retorno tem 4 itens (filtro de dados);
  • titulo baseado em configuracao e nao em retorno real;
  • limit hardcoded diferente do parametro;
  • falta de dados elegiveis com FOTO_HAS = 1.