Module: SpreeCmCommissioner::ExternalIntegrationsHelper

Defined in:
app/helpers/spree_cm_commissioner/external_integrations_helper.rb

Instance Method Summary collapse

Instance Method Details



21
22
23
24
25
26
27
# File 'app/helpers/spree_cm_commissioner/external_integrations_helper.rb', line 21

def integration_base_url_link(url)
  if url.present?
    link_to url, url, target: '_blank', rel: 'noopener', class: 'text-decoration-underline'
  else
    (:span, '', class: 'text-muted')
  end
end

#integration_conflict_strategy_badge(strategy) ⇒ Object



13
14
15
# File 'app/helpers/spree_cm_commissioner/external_integrations_helper.rb', line 13

def integration_conflict_strategy_badge(strategy)
  (:span, strategy.to_s.humanize, class: 'badge badge-pill badge-secondary')
end

#integration_interval_badge(value, unit) ⇒ Object



17
18
19
# File 'app/helpers/spree_cm_commissioner/external_integrations_helper.rb', line 17

def integration_interval_badge(value, unit)
  (:span, "#{value}#{unit}", class: 'badge badge-pill badge-info')
end


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'app/helpers/spree_cm_commissioner/external_integrations_helper.rb', line 29

def integration_mapping_internal_link(mapping)
  return mapping.internal_id if mapping.internal.blank?

  begin
    case mapping.internal_type
    when 'Spree::Taxon'
      taxon = mapping.internal
      taxonomy_id = taxon.taxonomy_id || taxon.taxonomy&.id
      if taxonomy_id
        link_to mapping.internal_id,
                edit_admin_taxonomy_taxon_path(taxonomy_id, taxon.id),
                class: 'text-primary'
      end
    when 'Spree::Product'
      link_to mapping.internal_id, edit_admin_product_path(mapping.internal), class: 'text-primary'
    when 'Spree::Variant'
      link_to mapping.internal_id, edit_admin_product_variant_path(mapping.internal.product_id, mapping.internal), class: 'text-primary'
    when 'Spree::Vendor'
      link_to mapping.internal_id, edit_admin_vendor_path(mapping.internal), class: 'text-primary'
    else
      # Try polymorphic route as fallback
      link_to mapping.internal_id, [:edit, :admin, mapping.internal], class: 'text-primary'
    end
  rescue StandardError => e
    Rails.logger.warn("Failed to generate link for mapping #{mapping.id}: #{e.message}")
    mapping.internal_id
  end
end

#integration_status_badge(status) ⇒ Object



3
4
5
6
7
8
9
10
11
# File 'app/helpers/spree_cm_commissioner/external_integrations_helper.rb', line 3

def integration_status_badge(status)
  badge_class = case status.to_s
                when 'active' then 'badge-success'
                when 'paused' then 'badge-warning'
                else 'badge-secondary'
                end

  (:span, status.to_s.humanize, class: "badge badge-pill #{badge_class}")
end