diff --git a/app/helpers/user_helper.rb b/app/helpers/user_helper.rb
index 13eab0d14..397fbed7e 100644
--- a/app/helpers/user_helper.rb
+++ b/app/helpers/user_helper.rb
@@ -91,7 +91,7 @@ module UserHelper
end
def user_action_text(user, attribute)
- return "Change" if %w[role phone].include?(attribute) && user.send(attribute).present?
+ return "Change" if attribute == "phone_extension" || (%w[role phone].include?(attribute) && user.send(attribute).present?)
""
end
diff --git a/app/models/user.rb b/app/models/user.rb
index 92fd37dc8..31d503b86 100644
--- a/app/models/user.rb
+++ b/app/models/user.rb
@@ -334,12 +334,6 @@ class User < ApplicationRecord
save!(validate: false)
end
- def phone_with_extension
- return phone if phone_extension.blank?
-
- "#{phone}, Ext. #{phone_extension}"
- end
-
def assigned_to_lettings_logs
lettings_logs.where(assigned_to: self)
end
diff --git a/app/policies/user_policy.rb b/app/policies/user_policy.rb
index dc8aaf28e..48beb1216 100644
--- a/app/policies/user_policy.rb
+++ b/app/policies/user_policy.rb
@@ -26,6 +26,7 @@ class UserPolicy
%w[
edit_emails?
edit_telephone_numbers?
+ edit_extension_numbers?
edit_names?
].each do |method_name|
define_method method_name do
diff --git a/app/services/exports/user_export_constants.rb b/app/services/exports/user_export_constants.rb
index 9ce5840d9..15fa10ea0 100644
--- a/app/services/exports/user_export_constants.rb
+++ b/app/services/exports/user_export_constants.rb
@@ -6,6 +6,7 @@ module Exports::UserExportConstants
"email",
"name",
"phone",
+ "extension_number",
"organisation_id",
"organisation_name",
"role",
diff --git a/app/services/exports/user_export_service.rb b/app/services/exports/user_export_service.rb
index 0a8ebe34e..3a9f37417 100644
--- a/app/services/exports/user_export_service.rb
+++ b/app/services/exports/user_export_service.rb
@@ -64,7 +64,8 @@ module Exports
attribute_hash["role"] = user.role
attribute_hash["organisation_name"] = user.organisation.name
attribute_hash["active"] = user.active?
- attribute_hash["phone"] = [user.phone, user.phone_extension].compact.join(" ")
+ attribute_hash["phone"] = user.phone
+ attribute_hash["extension_number"] = user.phone_extension
attribute_hash["last_sign_in_at"] = user.last_sign_in_at&.iso8601
attribute_hash
end
diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb
index a1f104b10..d2ad8b182 100644
--- a/app/views/users/show.html.erb
+++ b/app/views/users/show.html.erb
@@ -65,6 +65,21 @@
end
end %>
+ <%= summary_list.with_row do |row|
+ row.with_key { "Extension number" }
+ row.with_value { user_details_html(@user, current_user, "phone_extension") }
+ if UserPolicy.new(current_user, @user).edit_extension_numbers?
+ row.with_action(
+ text: user_action_text(@user, "phone_extension"),
+ visually_hidden_text: "extension number",
+ href: aliased_user_edit(@user, current_user),
+ html_attributes: { "data-qa": "change-extension-number" },
+ )
+ else
+ row.with_action
+ end
+ end %>
+
<%= summary_list.with_row do |row|
row.with_key { "Password" }
row.with_value { "••••••••" }
diff --git a/spec/fixtures/exports/user.xml b/spec/fixtures/exports/user.xml
index 4c5286c68..1972e2a9d 100644
--- a/spec/fixtures/exports/user.xml
+++ b/spec/fixtures/exports/user.xml
@@ -8,7 +8,8 @@
5
2022-03-03T00:00:00+00:00
data_provider
- 1234512345123 123
+ 1234512345123
+ 123
false
false
true