diff --git a/app/assets/javascripts/assister_role.js b/app/assets/javascripts/assister_role.js index dd8b67e4e99..3cb711c79c7 100644 --- a/app/assets/javascripts/assister_role.js +++ b/app/assets/javascripts/assister_role.js @@ -30,28 +30,8 @@ function selectAssisterAgency(element) { document.getElementById('assister-staff-btn').disabled = false; } -$(document).on('click', 'a.select-assister-agency', function () { +$(document).on('click', 'select-assister-agency', function () { if ($('.table-responsive').length) { $('.assister-agency-submit').removeClass('hidden'); } }); - -function allowAssisterAgencyFormSubmission() { - var assister_attestation_fields = document.getElementsByClassName('assister-attestation-field'); - var form_button = document.getElementById('assister-btn'); - if ( - Array.from(assister_attestation_fields).every( - (form_element) => form_element.checked == true - ) == true - ) { - form_button.disabled = false; - } else { - form_button.disabled = true; - } -} - -$(function () { - $('.assister-attestation-field').on('change', function () { - allowAssisterAgencyFormSubmission(); - }); -}); \ No newline at end of file diff --git a/app/assets/javascripts/help_me_sign_up.js b/app/assets/javascripts/help_me_sign_up.js index 654b6b64577..1ba2ec08715 100644 --- a/app/assets/javascripts/help_me_sign_up.js +++ b/app/assets/javascripts/help_me_sign_up.js @@ -1,71 +1,154 @@ -$(document).on('click', '#search_for_plan_shopping_help', function() { - $.ajax({ - type: 'GET', - data: {firstname: $('#help_first_name').val(), lastname: $('#help_last_name').val(), type: $('#help_type').html(), - person: $('#help_requestor').html(), email: $('#help_requestor_email').html(), - first_name: $('#person_first_name').val(), last_name: $('#person_last_name').val(), - ssn: $('#person_ssn').val(), dob: $('#jq_datepicker_ignore_person_dob').val() - }, - url: '/exchanges/hbx_profiles/request_help.html?', - }).done(function(response) { - $('#help_status').html(JSON.parse(response)['status']) +(function ($) { + var REQUEST_HELP = '/exchanges/hbx_profiles/request_help.html?'; + + /** Shared GET fields for request_help (vanilla DOM reads match prior jQuery .val() / .html()). */ + function personPayload() { + function val(id) { + var el = document.getElementById(id); + return el ? el.value : ''; + } + function html(id) { + var el = document.getElementById(id); + return el ? el.innerHTML : ''; + } + return { + person: html('help_requestor'), + email: html('help_requestor_email'), + first_name: val('person_first_name'), + last_name: val('person_last_name'), + ssn: val('person_ssn'), + dob: val('jq_datepicker_ignore_person_dob') + }; + } + + function personPayloadSearchParams(extraPairs) { + var p = new URLSearchParams(); + if (extraPairs) { + for (var i = 0; i < extraPairs.length; i++) { + p.set(extraPairs[i][0], extraPairs[i][1]); + } + } + var fields = personPayload(); + Object.keys(fields).forEach(function (key) { + p.set(key, fields[key]); + }); + return p; + } + + $(document).on('click', '#search_for_plan_shopping_help', function () { + $.ajax({ + type: 'GET', + data: $.extend( + { + firstname: $('#help_first_name').val(), + lastname: $('#help_last_name').val(), + type: $('#help_type').html() + }, + personPayload() + ), + url: REQUEST_HELP + }).done(function (response) { + $('#help_status').html(JSON.parse(response).status); + }); + }); + + $(document).on('click', '.help_button', function () { + $.ajax({ + type: 'GET', + data: $.extend( + { + assister: this.getAttribute('data-assister'), + broker: this.getAttribute('data-broker') + }, + personPayload() + ), + url: REQUEST_HELP + }).done(function (response) { + var parsed = JSON.parse(response); + $('#help_index_status').html(parsed.status).removeClass('hide'); + $('#consumer_brokers_widget').html(parsed.broker); + }); + }); + + $(document).on('click', '.name_search_only', function () { + $('#help_list').addClass('hide'); + $('#help_search').removeClass('hide'); + $('#help_type').html(this.id); + $('#back_to_help').removeClass('hide'); }); -}) -$(document).on('click', '.help_button', function(){ -$.ajax({ - type: 'GET', - data: {assister: this.getAttribute('data-assister'), broker: this.getAttribute('data-broker'), - person: $('#help_requestor').html(), email: $('#help_requestor_email').html(), - first_name: $('#person_first_name').val(), last_name: $('#person_last_name').val(), - ssn: $('#person_ssn').val(), dob: $('#jq_datepicker_ignore_person_dob').val() - }, - url: '/exchanges/hbx_profiles/request_help.html?', - }).done(function(response) { - broker_status = JSON.parse(response) - var status = broker_status['status'] - var broker = broker_status['broker'] - $('#help_index_status').html(status).removeClass('hide') - $('#consumer_brokers_widget').html(broker) + $(document).on('click', '[data-target="#help_with_plan_shopping"]', function () { + $('.help_reset').addClass('hide'); + $('#help_list').removeClass('hide'); + $('#back_to_help').addClass('hide'); + $('#bottom_expert_link').removeClass('hide'); + $('#bottom_expert_assister_link').removeClass('hide'); }); -}) -$(document).on('click', '.name_search_only', function() { - $('#help_list').addClass('hide') - $('#help_search').removeClass('hide') - $('#help_type').html(this.id) - $('#back_to_help').removeClass('hide') -}) -$(document).on('click', '[data-target="#help_with_plan_shopping"]',function(){$('.help_reset').addClass("hide"); $('#help_list').removeClass("hide"); $('#back_to_help').addClass("hide"); $('#bottom_expert_link').removeClass("hide"); $('#bottom_expert_assister_link').removeClass("hide") }) + $(document).on('click', '#back_to_help', function () { + $('.help_reset').addClass('hide'); + $('#back_to_help').addClass('hide'); + $('#help_list').removeClass('hide'); + $('#help_status').html(''); + $('#help_sign_up_title').removeClass('hide'); + $('#help_from_expert_title').addClass('hide'); + }); + + function applyMyExpertSuccess(helperType, status) { + var form = document.getElementById('inbox_provider_form'); + if (form) form.style.display = 'none'; + + var tab = document.querySelector('#active_' + helperType + '_tab'); + if (!tab) return; + + var alertEl = tab.querySelector('.alert'); + if (alertEl) { + alertEl.classList.remove('alert-warning'); + alertEl.classList.add('alert-success'); + } + var iconEl = tab.querySelector('.icon'); + if (iconEl) { + iconEl.classList.remove('warning-icon'); + iconEl.classList.add('success-icon'); + } + var bodyEl = tab.querySelector('.warning-body'); + if (bodyEl) bodyEl.textContent = status; + + document.querySelectorAll('a.go-to-expert, button').forEach(function (el) { + el.classList.remove('hidden'); + el.classList.remove('hide'); + }); + tab.querySelectorAll('button').forEach(function (el) { + el.classList.add('hide'); + }); + } + + document.addEventListener('click', function (event) { + var trigger = event.target.closest('.select-broker, .select-assister'); + if (!trigger) return; + + var disableSelector = trigger.classList.contains('select-assister') ? '.select-assister' : '.select-broker'; + document.querySelectorAll(disableSelector).forEach(function (el) { + el.classList.add('disabled'); + }); -$(document).on('click', '#back_to_help', function(){ - $('.help_reset').addClass("hide"); - $("#back_to_help").addClass('hide'); - $('#help_list').removeClass("hide"); - $('#help_status').html('') - $('#help_sign_up_title').removeClass('hide'); - $('#help_from_expert_title').addClass('hide'); -}) + var helperType = trigger.getAttribute('data-assister') ? 'assister' : 'broker'; + var query = personPayloadSearchParams([ + ['my_expert', 'true'], + ['assister', trigger.getAttribute('data-assister') || ''], + ['broker', trigger.getAttribute('data-broker') || ''] + ]); -$(document).on('click', '.select-broker', function(){ - $('.select-broker').addClass('disabled'); - var helper_type = this.getAttribute('data-assister') ? "assister" : "broker"; - $.ajax({ - type: 'GET', - data: {assister: this.getAttribute('data-assister'), broker: this.getAttribute('data-broker'), - person: $('#help_requestor').html(), email: $('#help_requestor_email').html(), - first_name: $('#person_first_name').val(), last_name: $('#person_last_name').val(), - ssn: $('#person_ssn').val(), dob: $('#jq_datepicker_ignore_person_dob').val() - }, - url: '/exchanges/hbx_profiles/request_help.html?my_expert=true', - }).done(function(response) { - broker_status = JSON.parse(response); - var status = broker_status['status'] - $('#inbox_provider_form').hide(); - $('#active_'+helper_type+'_tab .alert').removeClass('alert-warning').addClass('alert-success') - $('#active_'+helper_type+'_tab .icon').removeClass('warning-icon').addClass('success-icon') - $('#active_'+helper_type+'_tab .warning-body').text(status) - $('a.go-to-expert, button').removeClass('hidden').removeClass('hide'); - $("#active_"+helper_type+"_tab button").addClass('hide') + fetch(REQUEST_HELP + query.toString(), { + method: 'GET', + headers: { 'X-Requested-With': 'XMLHttpRequest' }, + credentials: 'same-origin' + }) + .then(function (response) { + return response.text(); + }) + .then(function (responseText) { + applyMyExpertSuccess(helperType, JSON.parse(responseText).status); + }); }); -}) +})(jQuery); diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 90456b92810..38d19bb9e14 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -201,11 +201,11 @@ def broker_match?(user_person, writing_agent_id) def assister_match?(user_person, assister_agency_account) return false if assister_agency_account.blank? - writing_agent_id = assister_agency_account.writing_agent_id - return false if writing_agent_id.blank? + profile_id = assister_agency_account.benefit_sponsors_assister_agency_profile_id + return false if profile_id.blank? - user_person.assister_role&.active? && - user_person.assister_role.id == writing_agent_id + user_person.assister_role&.active? && user_person.assister_role.benefit_sponsors_assister_agency_profile_id == profile_id || + (user_person.assister_agency_staff_roles.active.any? { |staff| staff.benefit_sponsors_assister_agency_profile_id == profile_id }) end def redirect_if_prod diff --git a/app/controllers/exchanges/hbx_profiles_controller.rb b/app/controllers/exchanges/hbx_profiles_controller.rb index 96b90dd8967..09eb1ed3597 100644 --- a/app/controllers/exchanges/hbx_profiles_controller.rb +++ b/app/controllers/exchanges/hbx_profiles_controller.rb @@ -339,7 +339,7 @@ def request_help assister_role_id = agent.assister_role.id consumer = Person.find(params[:person]) family = consumer.primary_family - authorize family, :hire_broker_agency? + authorize family, :hire_assister_agency? family.hire_assister_agency(assister_role_id) role = l10n("assister") end diff --git a/app/controllers/insured/families_controller.rb b/app/controllers/insured/families_controller.rb index abf7e8b1a25..b20885a1dea 100644 --- a/app/controllers/insured/families_controller.rb +++ b/app/controllers/insured/families_controller.rb @@ -525,11 +525,17 @@ def delete_consumer_broker else redirect_to :action => "home", flash: {notice: "Unable to remove expert from this account"} end + rescue Pundit::NotAuthorizedError + redirect_back( + fallback_location: { action: "home" }, + allow_other_host: false, + flash: { error: l10n("not_authorized") } + ) end def delete_consumer_assister @family = Family.find(params[:id]) - authorize @family, :delete_consumer_broker? + authorize @family, :delete_consumer_assister? assister_agency = @family&.current_assister_agency @@ -539,6 +545,12 @@ def delete_consumer_assister else redirect_to :action => "home", flash: {notice: "Unable to remove expert from this account"} end + rescue Pundit::NotAuthorizedError + redirect_back( + fallback_location: { action: "home" }, + allow_other_host: false, + flash: { error: l10n("not_authorized") } + ) end def transition_family_members diff --git a/app/data_migrations/permissions/dc_define_permissions.rb b/app/data_migrations/permissions/dc_define_permissions.rb index 396a9a814ee..458160ddc58 100644 --- a/app/data_migrations/permissions/dc_define_permissions.rb +++ b/app/data_migrations/permissions/dc_define_permissions.rb @@ -394,5 +394,14 @@ def hbx_admin_can_edit_notice_templates Permission.hbx_staff.update_attributes!(can_edit_notice_templates: true) Permission.hbx_tier3.update_attributes!(can_edit_notice_templates: true) end + + def hbx_admin_can_create_assister_agency + Permission.hbx_staff.update_attributes!(can_create_assister_agency: true) + Permission.super_admin.update_attributes!(can_create_assister_agency: true) + Permission.hbx_tier3.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_supervisor.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_tier1.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_tier2.update_attributes!(can_create_assister_agency: false) + end end # rubocop:enable Metrics/ClassLength diff --git a/app/data_migrations/permissions/me_define_permissions.rb b/app/data_migrations/permissions/me_define_permissions.rb index 32aa4b08e94..25d84cd79c2 100644 --- a/app/data_migrations/permissions/me_define_permissions.rb +++ b/app/data_migrations/permissions/me_define_permissions.rb @@ -438,6 +438,15 @@ def hbx_admin_can_reprint_tax_documents Permission.hbx_read_only.update_attributes!(can_reprint_tax_documents: false) end + def hbx_admin_can_create_assister_agency + Permission.hbx_staff.update_attributes!(can_create_assister_agency: true) + Permission.super_admin.update_attributes!(can_create_assister_agency: true) + Permission.hbx_tier3.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_supervisor.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_tier1.update_attributes!(can_create_assister_agency: false) + Permission.hbx_csr_tier2.update_attributes!(can_create_assister_agency: false) + end + def hbx_admin_can_view_notice_templates Permission.super_admin.update_attributes!(can_view_notice_templates: true) Permission.hbx_staff.update_attributes!(can_view_notice_templates: true) diff --git a/app/models/permission.rb b/app/models/permission.rb index 1a47def4ed0..c54921b75f9 100644 --- a/app/models/permission.rb +++ b/app/models/permission.rb @@ -68,6 +68,7 @@ class Permission field :can_edit_notice_templates, type: Boolean, default: false field :can_view_audit_log, type: Boolean, default: false field :can_reprint_tax_documents, type: Boolean, default: false + field :can_create_assister_agency, type: Boolean, default: false class << self def hbx_staff diff --git a/app/policies/application_policy.rb b/app/policies/application_policy.rb index e90786cb25a..e5b4203665e 100644 --- a/app/policies/application_policy.rb +++ b/app/policies/application_policy.rb @@ -216,8 +216,7 @@ def active_associated_individual_market_family_assister? assister_agency_account = family&.active_assister_agency_account return false if assister_agency_account.blank? - assister_agency_account.benefit_sponsors_assister_agency_profile_id == assister.benefit_sponsors_assister_agency_profile_id && - assister_agency_account.writing_agent_id == assister.id + assister_agency_account.benefit_sponsors_assister_agency_profile_id == assister.benefit_sponsors_assister_agency_profile_id end # Determines if the current user is an admin in the individual market. @@ -282,8 +281,7 @@ def active_associated_coverall_market_family_assister? assister_agency_account = family.active_assister_agency_account return false if assister_agency_account.blank? - assister_agency_account.benefit_sponsors_assister_agency_profile_id == assister.benefit_sponsors_assister_agency_profile_id && - assister_agency_account.writing_agent_id == assister.id + assister_agency_account.benefit_sponsors_assister_agency_profile_id == assister.benefit_sponsors_assister_agency_profile_id end # Checks if the account holder is an admin in the coverall market. diff --git a/app/policies/family_policy.rb b/app/policies/family_policy.rb index 2dd441b2929..ccbadbb5047 100644 --- a/app/policies/family_policy.rb +++ b/app/policies/family_policy.rb @@ -262,6 +262,7 @@ def delete_consumer_broker? def delete_consumer_assister? return true if individual_market_primary_family_member? + return true if individual_market_non_ridp_primary_family_member? return true if individual_market_admin? return true if shop_market_primary_family_member? diff --git a/app/views/exchanges/bulk_notices/preview.html.erb b/app/views/exchanges/bulk_notices/preview.html.erb index ec1c7741a0e..b42482f0341 100644 --- a/app/views/exchanges/bulk_notices/preview.html.erb +++ b/app/views/exchanges/bulk_notices/preview.html.erb @@ -66,7 +66,7 @@ Important:

<%= l10n("admin_actions.bulk_upload.new.description_sub_text") %>

<%= form_for(@bulk_notice, url: exchanges_bulk_notice_path(@bulk_notice)) do |f| %> - <%= f.select :audience_type, { 'Broker Agency' => :broker_agency, 'Assister Agency' => :assister_agency, 'Employer' => :employer, 'General Agency' => :general_agency, 'Employee' => :employee }, { selected: @bulk_notice.audience_type }, class: 'form-control col-2', data: { reflex: 'change->BulkNotice#audience_select' } %> + <%= f.select :audience_type, { 'Broker Agency' => :broker_agency, 'Assister Organization' => :assister_agency, 'Employer' => :employer, 'General Agency' => :general_agency, 'Employee' => :employee }, { selected: @bulk_notice.audience_type }, class: 'form-control col-2', data: { reflex: 'change->BulkNotice#audience_select' } %> diff --git a/app/views/insured/families/_consumer_assister.html.erb b/app/views/insured/families/_consumer_assister.html.erb index 9210145484b..7ef6bd89ccb 100644 --- a/app/views/insured/families/_consumer_assister.html.erb +++ b/app/views/insured/families/_consumer_assister.html.erb @@ -1,31 +1,30 @@ <% if @bs4 %> - <% writing_agent = @person&.primary_family&.current_assister_agency&.writing_agent %> + <% writing_agent = @person&.primary_family&.current_assister_agency&.coordinator %>
<%= l10n('my_assister') %> -

<%= writing_agent&.person&.first_name&.capitalize %> <%= writing_agent&.person&.last_name&.capitalize %>

+

<%= @person.primary_family.current_assister_agency.assister_agency_profile.legal_name.titleize %>

- <%= l10n("insured.assisters.remove_assister") %> + <%= l10n("remove_expert") %>
-
+
-
<%= l10n("insured.assisters.agency") %>:
-
<%= @person.primary_family.current_assister_agency.assister_agency_profile.legal_name.titleize %>
-
<%= l10n("insured.assisters.assignment_date") %>:
-
<% date = @person.primary_family.current_assister_agency.start_on.in_time_zone('Eastern Time (US & Canada)') %> - <%= format_date(date) %> <%= date.strftime("%-I:%M%p") %>
+
<%= l10n("phone") %>:
+
<%= writing_agent.phone %>
+
<%= l10n("email") %>:
+
<%= writing_agent.email&.address %>
+
-
+
-
<%= l10n("phone") %>:
-
<%= @person.primary_family.current_assister_agency.writing_agent.phone %>
-
<%= l10n("email") %>:
-
<%= @person.primary_family.current_assister_agency.writing_agent.email.address %>
+
<%= l10n("insured.assisters.assignment_date") %>:
+
<% date = @person.primary_family.current_assister_agency.start_on.in_time_zone('Eastern Time (US & Canada)') %> + <%= format_date(date) %> <%= date.strftime("%-I:%M%p") %>
@@ -51,7 +50,7 @@
- <%= h(link_to(l10n("insured.assisters.removal_confirm"), delete_consumer_assister_insured_family_path(@family), method: :delete, class: 'button'+ pundit_class(Family,:updateable?))) %> + <%= h(link_to(l10n("insured.assisters.removal_confirm"), delete_consumer_assister_insured_family_path(@family), method: :delete, class: 'button'+ pundit_class(Family,:updateable?), data: { cuke: "confirm-remove-assister" })) %>
diff --git a/app/views/insured/families/_consumer_broker.html.erb b/app/views/insured/families/_consumer_broker.html.erb index 33bc62c4f33..7b07e212dd6 100644 --- a/app/views/insured/families/_consumer_broker.html.erb +++ b/app/views/insured/families/_consumer_broker.html.erb @@ -8,7 +8,7 @@

<%= writing_agent&.person&.first_name&.capitalize %> <%= writing_agent&.person&.last_name&.capitalize %>

- <%= l10n("insured.brokers.remove_broker") %> + <%= l10n("remove_expert") %>
@@ -53,7 +53,7 @@
- <%= h(link_to(l10n("insured.brokers.removal_confirm"), delete_consumer_broker_insured_family_path(@family), method: :delete, class: 'button'+ pundit_class(Family,:updateable?))) %> + <%= h(link_to(l10n("insured.brokers.removal_confirm"), delete_consumer_broker_insured_family_path(@family), method: :delete, class: 'button'+ pundit_class(Family,:updateable?), data: { cuke: "confirm-remove-broker" })) %>
diff --git a/app/views/insured/families/brokers.html.erb b/app/views/insured/families/brokers.html.erb index ca8f72d7a18..148e96cbaae 100644 --- a/app/views/insured/families/brokers.html.erb +++ b/app/views/insured/families/brokers.html.erb @@ -8,21 +8,31 @@ <% else %> <% has_broker = @person&.primary_family&.current_broker_agency&.writing_agent %> - <% has_assister = @person&.primary_family&.current_assister_agency&.writing_agent %> + <% has_assister = @person&.primary_family&.current_assister_agency %> <% page_title = (has_broker && has_assister) ? l10n('my_experts') : l10n('my_expert')%>

<%= page_title %>

-
- <% if @person.has_active_employee_role? && has_writing_agent?(@employee_role) %> + <% if @person.has_active_employee_role? && has_writing_agent?(@employee_role) %> +
<%= render 'employee_broker', title: nil %> - <% elsif @person.has_consumer_role? %> - <% if @person&.primary_family&.current_broker_agency&.writing_agent %> - <%= render 'consumer_broker', title: nil %> - <% end %> - <% if @person&.primary_family&.current_assister_agency&.writing_agent %> - <%= render 'consumer_assister', title: nil %> - <% end %> +
+ <% elsif @person.has_consumer_role? %> + <% if @person&.primary_family&.current_broker_agency&.writing_agent %> +
+ <% if has_broker && has_assister %>

<%= l10n("broker") %>

<% end %> +
+ <%= render 'consumer_broker', title: nil %> +
+
<% end %> -
+ <% if @person&.primary_family&.current_assister_agency&.writing_agent %> +
+ <% if has_broker && has_assister %>

<%= l10n("assister") %>

<% end %> +
+ <%= render 'consumer_assister', title: nil %> +
+
+ <% end %> + <% end %> <% end %> <% if assister_agency_is_enabled? && (!has_broker || !has_assister) %> @@ -31,15 +41,14 @@ <%= l10n(button_text_key) %> <%= render partial: './ui-components/v1/modals/help_with_plan_in_my_expert'%> - -     <% end %> diff --git a/app/views/shared/assisters/_assister_fields.html.erb b/app/views/shared/assisters/_assister_fields.html.erb index 568f1d9bd35..4531e165e4c 100644 --- a/app/views/shared/assisters/_assister_fields.html.erb +++ b/app/views/shared/assisters/_assister_fields.html.erb @@ -39,10 +39,6 @@
<%= f.fields_for :assister_role do |assister_role_fields| %> <% disabled = assister_or_staff_role.active? ? true : false %> - <%= assister_role_fields.text_area :reason, placeholder: "#{l10n('write_here')}...", rows: 6, disabled: disabled, id: "reason", class:"w-100" %> <% end %> diff --git a/app/views/ui-components/bs4/v1/forms/assister/_attestation_agreement_fields.html.erb b/app/views/ui-components/bs4/v1/forms/assister/_attestation_agreement_fields.html.erb deleted file mode 100644 index ba2da941f32..00000000000 --- a/app/views/ui-components/bs4/v1/forms/assister/_attestation_agreement_fields.html.erb +++ /dev/null @@ -1,8 +0,0 @@ -

<%= l10n("agreements") %>

- -
- <%= check_box_tag :all_marketplace_required_trainings, nil, false, class: "assister-attestation-field" %> - -
\ No newline at end of file diff --git a/app/views/ui-components/v1/modals/_help_with_plan.html.erb b/app/views/ui-components/v1/modals/_help_with_plan.html.erb index a4f68fe152d..35e10e41e07 100644 --- a/app/views/ui-components/v1/modals/_help_with_plan.html.erb +++ b/app/views/ui-components/v1/modals/_help_with_plan.html.erb @@ -67,7 +67,11 @@ <% if assister_agency_is_enabled? %> <%= h(link_to l10n("assister_agencies.assister"), benefit_sponsors.staff_index_profiles_assister_agencies_assister_agency_profiles_path(bs4: @bs4), remote: true, class: "expert_link button", id: "bottom_expert_assister_link") %> <% end %> - <%= h(link_to l10n("insured.assign_an_expert"), benefit_sponsors.staff_index_profiles_broker_agencies_broker_agency_profiles_path(bs4: @bs4), remote: true, class: "expert_link button", id: "bottom_expert_link") %> + <% if assister_agency_is_enabled? %> + <%= h(link_to l10n("broker_agencies.select_a_broker"), benefit_sponsors.staff_index_profiles_broker_agencies_broker_agency_profiles_path(bs4: @bs4), remote: true, class: "expert_link button", id: "bottom_expert_link") %> + <% else %> + <%= h(link_to l10n("insured.assign_an_expert"), benefit_sponsors.staff_index_profiles_broker_agencies_broker_agency_profiles_path(bs4: @bs4), remote: true, class: "expert_link button", id: "bottom_expert_link") %> + <% end %> diff --git a/app/views/ui-components/v1/navs/_primary_nav.html.erb b/app/views/ui-components/v1/navs/_primary_nav.html.erb index 7a0e5aac368..f3cc63db578 100644 --- a/app/views/ui-components/v1/navs/_primary_nav.html.erb +++ b/app/views/ui-components/v1/navs/_primary_nav.html.erb @@ -73,7 +73,8 @@ <% end %> diff --git a/app/views/welcome/index.html.erb b/app/views/welcome/index.html.erb index 47c9fe879c1..cf4c9b18a4e 100644 --- a/app/views/welcome/index.html.erb +++ b/app/views/welcome/index.html.erb @@ -30,6 +30,7 @@ <%= link_to_with_noopener_noreferrer(l10n(".general_agency_portal"), benefit_sponsors.new_profiles_registration_path(:profile_type => :general_agency, portal: true), class: "btn btn-outline-primary mr-2 mb-2", data: { cuke: "general_agency_portal_link", turbolinks: "#{genesys_feature_enabled ? false : true}" }) %> <% end %> <% if assister_agency_is_enabled? %> + <%= link_to_with_noopener_noreferrer(l10n("welcome.index.assister_agency_registration"), benefit_sponsors.new_profiles_assister_agencies_assister_agency_staff_role_path, class: "btn btn-outline-primary mr-2 mb-2", data: { cuke: "assister_agency_registration_portal_link" }) %> <%= link_to_with_noopener_noreferrer(l10n("welcome.index.assister_agency_portal"), benefit_sponsors.new_profiles_registration_path(:profile_type => :assister_agency, portal: true), class: "btn btn-outline-primary mr-2 mb-2") %> <% end %> <%= link_to_with_noopener_noreferrer(l10n(".hbx_portal"), exchanges_hbx_profiles_root_path, class: "btn btn-outline-primary mr-2 mb-2 hbx-portal", data: { cuke: "hbx_portal_link", turbolinks: "#{genesys_feature_enabled ? false : true}" } )%> @@ -38,9 +39,6 @@ <% if general_agency_enabled? %> <%= link_to_with_noopener_noreferrer(l10n("general_agency_registration"), benefit_sponsors.new_profiles_registration_path(:profile_type => :general_agency), class: "btn btn-outline-primary mr-2 mb-2", data: { cuke: "general_agency_registration_portal_link" }) %> <% end %> - <% if assister_agency_enabled? %> - <%= link_to_with_noopener_noreferrer(l10n("welcome.index.assister_agency_registration"), benefit_sponsors.new_profiles_registration_path(:profile_type => :assister_agency), class: "btn btn-outline-primary mr-2 mb-2") %> - <% end %> <% end %> diff --git a/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles_controller.rb b/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles_controller.rb index f90efd8b0e4..5abdb382927 100644 --- a/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles_controller.rb +++ b/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles_controller.rb @@ -46,30 +46,44 @@ def show def staff_index # a specific instance of BenefitSponsors::Organizations::AssisterAgencyProfile is not needed to test this endpoint authorize BenefitSponsors::Organizations::AssisterAgencyProfile - bs4 = params.permit(:bs4)[:bs4] - @bs4 = bs4 == "true" if bs4 - @q = params.permit(:q)[:q] + permitted_params = params.permit(:utf8, :q, :bs4, :page) + @bs4 = permitted_params[:bs4] + @q = permitted_params[:q] @staff = eligible_assisters + @organizations = BenefitSponsors::Organizations::Organization.assister_agency_profiles.approved_assister_agencies.assister_agencies_by_market_kind(['both', person_market_kind]) @page_alphabets = if EnrollRegistry.feature_enabled?(:bs4_consumer_flow) - grouped_alphabet(@staff, "last_name") + grouped_alphabet(@organizations, "legal_name") else - page_alphabets(@staff, "last_name") + page_alphabets(@organizations, "legal_name") end @alph_labels = @page_alphabets.map{|alph| [alph.first, alph.last].join("–")} if EnrollRegistry.feature_enabled?(:bs4_consumer_flow) page_no = cur_page_no(@page_alphabets.first) - @staff = if @q.nil? - @staff.where(last_name: /^#{page_no}/i) - elsif @q.blank? - @staff.uniq.sort_by(&:last_name) - else - assister_profile_ids = BenefitSponsors::Organizations::Organization.where(legal_name: /^#{Regexp.escape(@q)}/i).map(&:profiles).flatten.map(&:id) - find_by_agency_name = @staff.where(:'assister_role.benefit_sponsors_assister_agency_profile_id'.in => assister_profile_ids) - search_hash = @staff.search_hash(@q) - find_by_search_hash = @staff.where(search_hash) - unsorted_search = find_by_agency_name + find_by_search_hash - unsorted_search.sort_by(&:last_name).uniq - end + @organizations = if @q.nil? + page_letters = Array(page_no).map(&:to_s) + # Avoid regex-based queries here (Brakeman DoS warning). Instead, match on the + # first character of `legal_name` using an aggregation pipeline. + allowed_letters = ('A'..'Z').to_a + safe_letters = (page_letters.map(&:upcase) & allowed_letters).uniq + + if safe_letters.empty? + [] + else + selector = @organizations.selector + ids = @organizations.collection.aggregate([ + { '$match' => selector }, + { '$addFields' => { '_first_char' => { '$toUpper' => { '$substrCP' => ['$legal_name', 0, 1] } } } }, + { '$match' => { '_first_char' => { '$in' => safe_letters } } }, + { '$project' => { '_id' => 1 } } + ]).map { |doc| doc['_id'] } + + @organizations.where(:_id.in => ids).order_by(legal_name: 1).to_a + end + elsif @q.blank? + @organizations.order_by(legal_name: 1).to_a + else + @organizations.where(legal_name: /#{Regexp.escape(@q)}/i)&.to_a + end end # TODO: need to refactor for cases around SHOP assister agencies @@ -161,7 +175,6 @@ def messages # don't use current_user # messages are different for current_user is admin and assister account login @assister_agency_profile = ::BenefitSponsors::Organizations::AssisterAgencyProfile.find(params[:id]) - @assister_provider = @assister_agency_profile&.primary_assister_role&.person authorize @assister_agency_profile respond_to do |format| @@ -171,20 +184,10 @@ def messages def inbox @sent_box = true - if params["id"].present? - provider_id = params["id"] - @assister_agency_provider = Person.find(provider_id) - @assister_agency_profile = @assister_agency_provider.assister_role.assister_agency_profile - authorize @assister_agency_profile - elsif params['profile_id'].present? - provider_id = params['profile_id'] - @assister_agency_provider = find_assister_agency_profile(BSON::ObjectId(provider_id)) - authorize @assister_agency_provider - end + @provider = ::BenefitSponsors::Organizations::AssisterAgencyProfile.find(params[:id]) + authorize @provider @folder = (params[:folder] || 'Inbox').capitalize - - @provider = (current_user.person._id.to_s == provider_id) ? current_user.person : @assister_agency_provider end # no auth required for this action: it is used to send an email for prospective assisters, which can be non-users @@ -222,8 +225,12 @@ def user_not_authorized(exception) def send_general_agency_assign_msg(general_agency, employer_profile, status); end def eligible_assisters - assister_profile_ids = BenefitSponsors::Organizations::Organization.assister_agency_profiles.approved_assister_agencies.assister_agencies_by_market_kind(['both', person_market_kind]).map(&:assister_agency_profile).pluck(:id) - Person.where(:"assister_role.benefit_sponsors_assister_agency_profile_id".in => assister_profile_ids, :"assister_role.aasm_state" => "active") + profiles = BenefitSponsors::Organizations::Organization.assister_agency_profiles + .approved_assister_agencies + .assister_agencies_by_market_kind(['both', person_market_kind]) + .map(&:assister_agency_profile) + .pluck(:primary_assister_role_id) + Person.where(:"assister_role._id".in => profiles, :"assister_role.aasm_state" => "active") end def update_ga_for_employers(assister_agency_profile, old_default_ga = nil); end diff --git a/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/registrations_controller.rb b/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/registrations_controller.rb index cff692c2832..a3d7d34fd61 100644 --- a/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/registrations_controller.rb +++ b/components/benefit_sponsors/app/controllers/benefit_sponsors/profiles/registrations_controller.rb @@ -20,6 +20,7 @@ def new @agency = BenefitSponsors::Organizations::OrganizationForms::RegistrationForm.for_new(profile_type: profile_type, portal: params[:portal]) authorize @agency authorize @agency, :redirect_home? + authorize @agency, :can_create_assister_agency? respond_to do |format| format.html { render layout: 'bs4_application' if @bs4 } format.js @@ -30,6 +31,7 @@ def new def create #rubocop:disable Metrics/CyclomaticComplexity @agency = BenefitSponsors::Organizations::OrganizationForms::RegistrationForm.for_create(registration_params) authorize @agency + begin saved, result_url = verify_recaptcha_if_needed && @agency.save if saved && is_employer_profile? @@ -83,7 +85,7 @@ def update flash[:notice] = 'Employer successfully Updated.' if is_employer_profile? flash[:notice] = 'Broker Agency Profile successfully Updated.' if is_broker_profile? flash[:notice] = 'General Agency Profile successfully Updated.' if is_general_agency_profile? - flash[:notice] = 'Assister Agency Profile successfully Updated.' if is_assister_profile? + flash[:notice] = 'Assister Organization Profile successfully Updated.' if is_assister_profile? else org_error_msg = @agency.errors.full_messages.join(",").humanize if @agency.errors.present? diff --git a/components/benefit_sponsors/app/helpers/benefit_sponsors/application_helper.rb b/components/benefit_sponsors/app/helpers/benefit_sponsors/application_helper.rb index 519570f223c..a5883d02d83 100644 --- a/components/benefit_sponsors/app/helpers/benefit_sponsors/application_helper.rb +++ b/components/benefit_sponsors/app/helpers/benefit_sponsors/application_helper.rb @@ -201,7 +201,7 @@ def total_assister_messages(record_id) if profile.primary_assister_role.present? person = profile.primary_assister_role.person - person.inbox.unread_messages.count + person.inbox.messages.where(message_read: false, folder: "inbox").count else 0 end diff --git a/components/benefit_sponsors/app/models/benefit_sponsors/accounts/assister_agency_account.rb b/components/benefit_sponsors/app/models/benefit_sponsors/accounts/assister_agency_account.rb index ae8159ab6dc..669ca734a57 100644 --- a/components/benefit_sponsors/app/models/benefit_sponsors/accounts/assister_agency_account.rb +++ b/components/benefit_sponsors/app/models/benefit_sponsors/accounts/assister_agency_account.rb @@ -72,6 +72,11 @@ def writing_agent return @writing_agent if defined? @writing_agent @writing_agent = AssisterRole.find(writing_agent_id) end + + def coordinator + return @coordinator if defined? @coordinator + @coordinator = assister_agency_profile.primary_assister_role + end end end end diff --git a/components/benefit_sponsors/app/models/benefit_sponsors/forms/assister_candidate.rb b/components/benefit_sponsors/app/models/benefit_sponsors/forms/assister_candidate.rb index 15058a62dc6..c72a9aace0a 100644 --- a/components/benefit_sponsors/app/models/benefit_sponsors/forms/assister_candidate.rb +++ b/components/benefit_sponsors/app/models/benefit_sponsors/forms/assister_candidate.rb @@ -71,9 +71,9 @@ def match_or_create_person def validate_assister_agency if self.assister_agency_id.blank? - errors.add(:base, "Please select your assister agency.") + errors.add(:base, "Please select your assister organization.") elsif BenefitSponsors::Organizations::AssisterAgencyProfile.find(self.assister_agency_id).blank? - errors.add(:base, "Unable to locate the assister agnecy. Please contact HBX.") + errors.add(:base, "Unable to locate the assister organization. Please contact HBX.") end end diff --git a/components/benefit_sponsors/app/models/benefit_sponsors/services/staff_role_service.rb b/components/benefit_sponsors/app/models/benefit_sponsors/services/staff_role_service.rb index a5568feb891..95f3bb48381 100644 --- a/components/benefit_sponsors/app/models/benefit_sponsors/services/staff_role_service.rb +++ b/components/benefit_sponsors/app/models/benefit_sponsors/services/staff_role_service.rb @@ -137,9 +137,9 @@ def persist_assister_agency_staff_role!(profile) terminated_assisters_with_same_profile.assister_agency_pending! [true, person] elsif pending_assisters_with_same_profile.present? - [false, "your application status was in pending with this Assister Agency"] + [false, "your application status was in pending with this Assister Organization"] elsif active_assisters_with_same_profile.present? - [false, "you are already associated with this Assister Agency"] + [false, "you are already associated with this Assister Organization"] else person.assister_agency_staff_roles << ::AssisterAgencyStaffRole.new({assister_agency_profile: profile}) person.save! @@ -289,10 +289,10 @@ def deactivate_assister_agency_staff_role(person_id, assister_agency_profile_id) (role.benefit_sponsors_assister_agency_profile_id.to_s || role.assister_agency_profile_id.to_s) == assister_agency_profile_id.to_s && role.is_open? end - return false, 'No matching Assister Agency Staff role' if assister_agency_staff_role.blank? + return false, 'No matching Assister Organization Staff role' if assister_agency_staff_role.blank? assister_agency_staff_role.assister_agency_terminate! - [true, 'Assister Agency Staff Role is inactive'] + [true, 'Assister Organization Staff Role is inactive'] end def deactivate_general_agency_staff_role(person_id, general_agency_profile_id) diff --git a/components/benefit_sponsors/app/policies/benefit_sponsors/organizations/organization_forms/registration_form_policy.rb b/components/benefit_sponsors/app/policies/benefit_sponsors/organizations/organization_forms/registration_form_policy.rb index adc4646f3e6..a7fa228c033 100644 --- a/components/benefit_sponsors/app/policies/benefit_sponsors/organizations/organization_forms/registration_form_policy.rb +++ b/components/benefit_sponsors/app/policies/benefit_sponsors/organizations/organization_forms/registration_form_policy.rb @@ -114,6 +114,13 @@ def redirect_home? true end + + def can_create_assister_agency? + return true unless is_assister_profile? + role = user&.person&.hbx_staff_role + return false unless role + role.permission&.can_create_assister_agency + end end end end diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_assister_help.html.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_assister_help.html.erb index 5ec6ef855bd..a82a4e28b5c 100644 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_assister_help.html.erb +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_assister_help.html.erb @@ -17,8 +17,7 @@ -

<%= active_assister.person.full_name %>

-

<%= assister_agency_profile.legal_name %>

+

<%= assister_agency_profile.legal_name %>

<%= l10n("phone")%>:
<%= active_assister.phone ? active_assister.phone.to_s : l10n("assister_agencies.profiles.no_phone_number") %>
@@ -44,9 +43,11 @@
<%= l10n("language")%>:
<%= assister_agency_profile.languages %>
- - <%= h(link_to "Go To My Expert", main_app.brokers_insured_families_path(tab: l10n("assisters_tab")), class: "button hidden go-to-expert mt-4") %> - +
+ + <%= h(link_to l10n("go_to_my_expert"), main_app.brokers_insured_families_path(tab: l10n("assisters_tab")), class: "button hidden go-to-expert mt-4") %> + +
<% else %>
diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff.html.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff.html.erb index ce70b8ec4df..64f4cbc7619 100644 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff.html.erb +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff.html.erb @@ -11,12 +11,11 @@ <%= render 'benefit_sponsors/shared/profiles/assister_agency/alph_paginate_remote', url: benefit_sponsors.staff_index_profiles_assister_agencies_assister_agency_profiles_path(bs4: @bs4), alphs: @page_alphabets, alph_labels: @alph_labels %>
-
-
- <% @staff.each do |staff| - @staff = staff - @assister = staff.assister_role %> - <%= render 'benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/assister_help', locals: {:active_assister => @assister} %> +
+
+ <% @organizations.each do |organization| %> + <% @assister = organization.assister_agency_profile.primary_assister_role %> + <%= render 'benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/assister_help', locals: {active_assister: @assister} %> <% end %>
<% else %> diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff_table.html.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff_table.html.erb index 7ebb8add970..a3f95bc27d4 100644 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff_table.html.erb +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/_staff_table.html.erb @@ -1,22 +1,16 @@ <% if @bs4 %>
- - - <% @staff.each do |staff| %> - <% organization = BenefitSponsors::Organizations::Organization.where(:"profiles._id" => staff.assister_role.benefit_sponsors_assister_agency_profile_id).first %> + <% @organizations.each do |organization| %> - - - - - + + + <% end %> <% else %> diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/messages.js.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/messages.js.erb index 1fd38593d9a..ab9dcc14979 100644 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/messages.js.erb +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_profiles/messages.js.erb @@ -1,4 +1,4 @@ -setTabContent("<%= escape_javascript render partial: 'benefit_sponsors/shared/inboxes/message_list', locals: { provider: @assister_provider } %>"); +setTabContent("<%= escape_javascript render partial: 'benefit_sponsors/shared/inboxes/message_list', locals: { provider: @assister_agency_provider } %>"); set_active_ontab("#inbox-tab"); var bs4 = document.documentElement.dataset.bs4 == "true"; if (!bs4) { diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.erb new file mode 100644 index 00000000000..69fa08d4cb3 --- /dev/null +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.erb @@ -0,0 +1,87 @@ +<% if @bs4 %> + <%= render partial: 'new_staff_applicant' %> +<% else %> + +
+

<%= l10n("assister_agency_staff") %>

+
+ +
+

<%= l10n("assister_agency_staff") %>

+ + <% flash.each do |key, value| %> + + <% end %> + + <%= form_for(@staff, as: :staff, url: { action: "create" }, remote: true, html: { class: "needs-ajax-validation s508", id: "assister_staff_registration_form", novalidate: true }) do |f| %> +
+ <%= render partial: "./ui-components/v1/forms/assister_registration/assister_agency_staff_information", locals: { f: f } %> + <% end %> + + <%= form_for(@staff, as: :staff, url: { action: "create" }, remote: true, html: { class: "needs-ajax-validation s508", id: "assister_staff_registration_form", novalidate: true }) do |f| %> +
+ <%= render partial: "./ui-components/v1/forms/assister_registration/assister_agency_staff_information", locals: { f: f } %> + +
+ + + + +
+
+ +
+
+
+
+
+ + +
+
+
+
+ <% end %> + + <%= javascript_tag do %> + validateAjaxForm(); + <% end %> +
+<% end %> diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.slim b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.slim deleted file mode 100644 index 05690e1ccc8..00000000000 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/assister_agencies/assister_agency_staff_roles/new.html.slim +++ /dev/null @@ -1,51 +0,0 @@ -.assister-staff-registration-container.mt-4.pt-4.pl-3.pr-3.pb-3 - h1.heading-text#loaded = l10n("assister_agency_staff") -.assister-staff-registration-container.mt-4.pt-4.pl-3.pr-3.pb-3 - h1.heading-text#loaded = l10n("assister_agency_staff") - - flash.each do |key, value| - div class="alert alert-#{key} alert-dismissible" role="alert" - button.close type="button" data-dismiss="alert" aria-label="Close" - span aria-hidden="true" × - - value.to_a.flatten.each do |v| - = raw v - = form_for @staff, as: :staff, url: {action: "create"}, remote: true, html: {class: "needs-ajax-validation s508", id: 'assister_staff_registration_form', novalidate:true} do |f| - div#assister_staff - = render partial: './ui-components/v1/forms/assister_registration/assister_agency_staff_information', locals: {f: f} - = form_for @staff, as: :staff, url: {action: "create"}, remote: true, html: {class: "needs-ajax-validation s508", id: 'assister_staff_registration_form', novalidate:true} do |f| - div#assister_staff - = render partial: './ui-components/v1/forms/assister_registration/assister_agency_staff_information', locals: {f: f} - .row - .col-md-9.col-sm-9.col-xs-12.assister-agency-search - .col-md-9.col-sm-9.col-xs-12.assister-agency-search - .row.search-dropdown-wrapper - .col-md-12.col-sm-12.col-xs-12 - h4 - = l10n("assister_agencies.assister_roles.select_your_assister_agency") - = l10n("assister_agencies.assister_roles.select_your_assister_agency") - .col-md-4.col-sm-6.col-xs-12.input-group.input-no-pd - = f.hidden_field :profile_id - = f.hidden_field :profile_type, value: "assister_agency_staff" - = f.hidden_field :is_assister_registration_page, value: true - = f.text_field :agency_search, placeholder: "#{l10n('assister_agencies.assister_roles.agency_name_placeholder')}", class: 'form-control' - = f.hidden_field :profile_type, value: "assister_agency_staff" - = f.hidden_field :is_assister_registration_page, value: true - = f.text_field :agency_search, placeholder: "#{l10n('assister_agencies.assister_roles.agency_name_placeholder')}", class: 'form-control' - .input-group-btn - button.btn.btn-select.search.aa-search-btn[href="#" data-loading-text="Loading..."] - i.fa.fa-search - = l10n("search").to_s.downcase - .result - - - br - .row - .col-md-9.col-sm-9.col-xs-12 - .row.no-buffer - .col-md-4.col-sm-4.col-xs-12.form-group-lg.no-pd - br - button.btn.btn-primary[type="submit" disabled='disabled' id= 'assister-staff-btn'] - button.btn.btn-primary[type="submit" disabled='disabled' id= 'assister-staff-btn'] - = l10n("submit_application") - -javascript: - validateAjaxForm(); diff --git a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/registrations/_assister_registration_form.html.erb b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/registrations/_assister_registration_form.html.erb index 053ecdc5ca1..b093ce73538 100644 --- a/components/benefit_sponsors/app/views/benefit_sponsors/profiles/registrations/_assister_registration_form.html.erb +++ b/components/benefit_sponsors/app/views/benefit_sponsors/profiles/registrations/_assister_registration_form.html.erb @@ -16,9 +16,6 @@ <%= render partial: "benefit_sponsors/shared/profiles/broker_agency/bank_information", locals: {f: f} %> <% end %> <%= render partial: './ui-components/bs4/v1/forms/broker/contact_information/contact_info_fields', locals: { f: f, registration: true } %> - <% if EnrollRegistry.feature_enabled?(:broker_attestation_fields) %> - <%= render partial: './ui-components/bs4/v1/forms/assister/attestation_agreement_fields' %> - <% end %> <% if (aca_broker_routing_information && @agency.profile_type == "broker_agency") %>
<%= l10n("broker_agencies.broker_roles.broker_registration_text", site_short_name: site_short_name, site_brokers_agreement_path: site_brokers_agreement_path) %> @@ -29,7 +26,7 @@ <% if registration_recaptcha_enabled?(@profile_type) %> <%= recaptcha_tags %> <% end %> - <%= f.submit l10n('assister_agencies.new_assister_agency_form.create_assister_agency'), class: 'btn btn-primary', id: 'assister-btn', disabled: EnrollRegistry.feature_enabled?(:broker_attestation_fields) %> + <%= f.submit l10n('assister_agencies.new_assister_agency_form.create_assister_agency'), class: 'btn btn-primary', id: 'assister-btn' %> <% end %>
<%= l10n("expert_name")%> <%= l10n("agency_name")%><%= l10n("market_kind")%>
<%= staff.first_name + ' ' + staff.last_name %><%= organization.legal_name %><% market_kind = organization.assister_agency_profile.market_kind.to_s %> - <%= (market_kind.eql? "both") ? l10n("shop_and_individual") : market_kind.titleize %><%= l10n("market")%><%= l10n("select")%>
<%= organization.legal_name %><%= l10n("select")%>