Alterações de fotos da simpleroute
This commit is contained in:
@@ -32,8 +32,10 @@ class Admin::EdicaoLancamentosController < ApplicationController
|
||||
entrega = Entrega.por_nf(nf).first
|
||||
return render_erro("NF #{nf} não encontrada na base de rastreio.") if entrega.nil?
|
||||
|
||||
id = client.resolver_id(entrega)
|
||||
visita = client.visita(id)
|
||||
id = client.resolver_id(entrega)
|
||||
visita = client.visita(id)
|
||||
# Segunda fonte de imagens (POD). Não é obrigatória: se falhar, vem {}.
|
||||
detalhe = client.detalhe_visita(id)
|
||||
|
||||
render json: {
|
||||
ok: true,
|
||||
@@ -52,11 +54,9 @@ class Admin::EdicaoLancamentosController < ApplicationController
|
||||
planned_date: visita['planned_date'],
|
||||
contato: visita['contact_name'],
|
||||
telefone: visita['contact_phone'],
|
||||
# Fotos do card: fachada vem do rastreio (mesma foto do mapa de operações);
|
||||
# pictures/assinatura vêm da API. Só URLs http(s) chegam ao <img>.
|
||||
foto_fachada: url_imagem(entrega.try(:foto_da_fachada)),
|
||||
pictures: Array(visita['pictures']).filter_map { |u| url_imagem(u) },
|
||||
signature: url_imagem(visita['signature']),
|
||||
# Galeria unificada — TODAS as fotos do lançamento, de todas as fontes,
|
||||
# cada uma etiquetada para o ADM saber o que está conferindo.
|
||||
fotos: fotos_do_lancamento(entrega, visita, detalhe),
|
||||
motorista: entrega.driver,
|
||||
veiculo: entrega.vehicle
|
||||
},
|
||||
@@ -218,6 +218,31 @@ class Admin::EdicaoLancamentosController < ApplicationController
|
||||
url.match?(%r{\Ahttps?://}i) ? url : nil
|
||||
end
|
||||
|
||||
# Reúne as imagens das TRÊS fontes numa lista única e etiquetada:
|
||||
# 1. espelho de rastreio -> foto da fachada (mesma do mapa de operações)
|
||||
# 2. visita da API -> pictures[] + signature
|
||||
# 3. detalhe do POD -> pictures[] + signature (costuma ser mais completo)
|
||||
#
|
||||
# A mesma foto costuma aparecer em mais de uma fonte, então deduplica por URL
|
||||
# mantendo a primeira etiqueta (a ordem abaixo é a mais informativa).
|
||||
def fotos_do_lancamento(entrega, visita, detalhe)
|
||||
brutas = []
|
||||
brutas << [entrega.try(:foto_da_fachada), 'fachada', 'Rastreio']
|
||||
|
||||
[[visita, 'Visita'], [detalhe, 'Comprovante']].each do |fonte, origem|
|
||||
Array(fonte['pictures']).each { |u| brutas << [u, 'entrega', origem] }
|
||||
brutas << [fonte['signature'], 'assinatura', origem]
|
||||
end
|
||||
|
||||
vistas = Set.new
|
||||
brutas.filter_map do |valor, tipo, origem|
|
||||
url = url_imagem(valor)
|
||||
next if url.nil? || !vistas.add?(url)
|
||||
|
||||
{ url: url, tipo: tipo, origem: origem }
|
||||
end
|
||||
end
|
||||
|
||||
# Sem token não há o que fazer — avisa e volta.
|
||||
def garantir_configurado
|
||||
return if SimpliRoute.configurado?
|
||||
|
||||
Reference in New Issue
Block a user