fix(ui): dropdown Vincular Unidade Pix mostra unit vinculada em cascata

Existem 3 mecanismos de vinculo inbox-unit no fork:
  1. captain_inboxes.captain_unit_id (fluxo Captain)
  2. captain_unit_inboxes (tabela join pura, usada pela UI nova)
  3. captain_units.inbox_id (legado direto)

O serializer lia so o #1 e retornava null nas outras, fazendo a UI
mostrar 'Nenhuma unidade vinculada' mesmo quando havia vinculo via
#2 ou #3. Agora o jbuilder cai em cascata nas 3 fontes.
This commit is contained in:
Rodribm10 2026-04-14 20:07:33 -03:00
parent 996704350b
commit a892e65300

View File

@ -22,7 +22,25 @@ json.sender_name_type resource.sender_name_type
json.business_name resource.business_name
json.typing_delay resource.typing_delay
json.captain_unit_id resource.captain_inbox&.captain_unit_id if defined?(CaptainInbox)
# captain_unit_id: cascata entre as 3 fontes de vínculo inbox↔unit existentes
# no fork (resultado de refatorações não finalizadas):
# 1. captain_inboxes.captain_unit_id (fluxo principal do Captain)
# 2. captain_unit_inboxes (tabela de join pura — usada pela UI nova)
# 3. captain_units.inbox_id (legado direto na Unit)
# A UI "Vincular Unidade Pix" agora mostra a unit ligada, independente de
# qual mecanismo foi usado pra gravar.
if defined?(CaptainInbox)
linked_unit_id = resource.captain_inbox&.captain_unit_id
if linked_unit_id.blank?
linked_unit_id = ActiveRecord::Base.connection.select_value(
ActiveRecord::Base.send(:sanitize_sql_array,
['SELECT captain_unit_id FROM captain_unit_inboxes WHERE inbox_id = ? LIMIT 1',
resource.id])
)
end
linked_unit_id ||= Captain::Unit.where(inbox_id: resource.id).limit(1).pick(:id) if defined?(Captain::Unit)
json.captain_unit_id linked_unit_id
end
if resource.portal.present?
json.help_center do