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
- Alinhar limite de query com parametro
- evitar
limitfixo (ex.:limit(8)) quando existeHOME_GALLERY_PHOTO_QTY.
- evitar
- Titulo sem prometer quantidade exata
- preferir "Ultimas fotos" ou montar titulo com
count($itens).
- preferir "Ultimas fotos" ou montar titulo com
- Tratar excecao corretamente
- usar a variavel correta no catch (
$th).
- usar a variavel correta no catch (
- Evitar calculos incorretos de contagem
count($itens)em vez decount($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.