diff --git a/lib/towerops_web/live/org/settings_live.ex b/lib/towerops_web/live/org/settings_live.ex index 85009f82..4cf47141 100644 --- a/lib/towerops_web/live/org/settings_live.ex +++ b/lib/towerops_web/live/org/settings_live.ex @@ -16,13 +16,10 @@ defmodule ToweropsWeb.Org.SettingsLive do require Logger + @billing_provider_ids ~w(gaiia sonar splynx visp) + @providers [ - %{ - id: "preseem", - name: "Preseem", - description: "QoE monitoring and subscriber experience analytics for wireless ISPs.", - icon: "hero-signal" - }, + # Billing providers (mutually exclusive — grouped first) %{ id: "gaiia", name: "Gaiia", @@ -30,20 +27,6 @@ defmodule ToweropsWeb.Org.SettingsLive do "Billing and subscriber management. Enables outage impact analysis, inventory reconciliation, and subscriber-aware monitoring.", icon: "hero-user-group" }, - %{ - id: "pagerduty", - name: "PagerDuty", - description: - "Incident management and on-call alerting. Automatically triggers, acknowledges, and resolves PagerDuty incidents from TowerOps alerts.", - icon: "hero-bell-alert" - }, - %{ - id: "netbox", - name: "NetBox", - description: - "Infrastructure source of truth. Sync devices, sites, IP addresses, and interfaces between TowerOps and your NetBox instance.", - icon: "hero-server-stack" - }, %{ id: "sonar", name: "Sonar", @@ -63,6 +46,27 @@ defmodule ToweropsWeb.Org.SettingsLive do name: "VISP", description: "Cloud-based ISP management. Sync subscribers, sites, equipment, and MRR data from VISP.", icon: "hero-cloud" + }, + # Other integrations + %{ + id: "preseem", + name: "Preseem", + description: "QoE monitoring and subscriber experience analytics for wireless ISPs.", + icon: "hero-signal" + }, + %{ + id: "pagerduty", + name: "PagerDuty", + description: + "Incident management and on-call alerting. Automatically triggers, acknowledges, and resolves PagerDuty incidents from TowerOps alerts.", + icon: "hero-bell-alert" + }, + %{ + id: "netbox", + name: "NetBox", + description: + "Infrastructure source of truth. Sync devices, sites, IP addresses, and interfaces between TowerOps and your NetBox instance.", + icon: "hero-server-stack" } ] @@ -94,6 +98,7 @@ defmodule ToweropsWeb.Org.SettingsLive do |> assign(:invite_form, to_form(%{"email" => "", "role" => "technician"})) # Integration assigns - loaded lazily when tab is selected |> assign(:providers, @providers) + |> assign(:billing_provider_ids, @billing_provider_ids) |> assign(:integrations, %{}) |> assign(:configuring, nil) |> assign(:integration_form, nil) diff --git a/lib/towerops_web/live/org/settings_live.html.heex b/lib/towerops_web/live/org/settings_live.html.heex index cb65cfd0..59a6450f 100644 --- a/lib/towerops_web/live/org/settings_live.html.heex +++ b/lib/towerops_web/live/org/settings_live.html.heex @@ -839,8 +839,29 @@ <%= if @active_tab == "integrations" do %>