diff --git a/app/controllers/claims/support/claims/claim_activities_controller.rb b/app/controllers/claims/support/claims/claim_activities_controller.rb index 333a78272..2ced7d612 100644 --- a/app/controllers/claims/support/claims/claim_activities_controller.rb +++ b/app/controllers/claims/support/claims/claim_activities_controller.rb @@ -18,6 +18,7 @@ def show end def resend_payer_email + authorize [:claims, claim_activity] case claim_activity.action when "payment_request_delivered" Claims::Payment::ResendEmail.call(payment: claim_activity.record) @@ -27,14 +28,13 @@ def resend_payer_email raise "Unknown action: #{claim_activity.action}" end - authorize [:claims, claim_activity] redirect_to claims_support_claims_claim_activity_path(claim_activity), flash: { success: true, heading: t(".success") } end def resend_provider_email + authorize [:claims, claim_activity] Claims::Sampling::ResendEmails.call(provider_sampling:) - authorize [:claims, claim_activity] redirect_to claims_support_claims_claim_activity_path(claim_activity), flash: { success: true, heading: t(".success", provider_name: provider_sampling.provider_name) } end diff --git a/app/models/claims/claim_activity.rb b/app/models/claims/claim_activity.rb index fef7588b3..8361c4452 100644 --- a/app/models/claims/claim_activity.rb +++ b/app/models/claims/claim_activity.rb @@ -45,4 +45,10 @@ class Claims::ClaimActivity < ApplicationRecord PAYMENT_AND_CLAWBACK_ACTIONS = %w[payment_request_delivered clawback_request_delivered clawback_response_uploaded].freeze SAMPLING_ACTIONS = %w[sampling_uploaded sampling_response_uploaded].freeze MANUAL_ACTIONS = %w[provider_approved_audit rejected_by_provider rejected_by_school clawback_requested rejected_by_payer paid_by_payer information_sent_to_payer].freeze + + def claims_by_provider + return {} unless record.respond_to?(:claims) + + record.claims.group_by(&:provider) + end end diff --git a/app/views/claims/support/claims/claim_activities/_payment_and_clawback_activities.html.erb b/app/views/claims/support/claims/claim_activities/_payment_and_clawback_activities.html.erb index 9c7c9982c..81e80c44a 100644 --- a/app/views/claims/support/claims/claim_activities/_payment_and_clawback_activities.html.erb +++ b/app/views/claims/support/claims/claim_activities/_payment_and_clawback_activities.html.erb @@ -9,7 +9,7 @@

<%= t(".providers") %>

-<% claim_activity.record.claims.group_by(&:provider).each do |provider, provider_claims| %> +<% claim_activity.claims_by_provider.each do |provider, provider_claims| %>

<%= provider.name %>

<%= govuk_table do |table| %> diff --git a/spec/models/claims/claim_activity_spec.rb b/spec/models/claims/claim_activity_spec.rb index 025361a5d..75231b68b 100644 --- a/spec/models/claims/claim_activity_spec.rb +++ b/spec/models/claims/claim_activity_spec.rb @@ -34,4 +34,33 @@ describe "delegations" do it { is_expected.to delegate_method(:full_name).to(:user).with_prefix(true).allow_nil } end + + describe "#claims_by_provider" do + context "when the record responds to claims" do + let(:provider) { build(:claims_provider) } + let(:claim_1) { build(:claim, provider: provider) } + let(:claim_2) { build(:claim, provider: provider) } + let(:provider_sampling) { build(:provider_sampling, provider:) } + let(:claim_activity) { create(:claim_activity, action: :sampling_uploaded, record: provider_sampling) } + + before do + create(:claims_provider_sampling_claim, claim: claim_1, provider_sampling: provider_sampling) + create(:claims_provider_sampling_claim, claim: claim_2, provider_sampling: provider_sampling) + end + + it "returns the claims grouped by provider" do + expect(claim_activity.claims_by_provider).to eq({ + provider => [claim_1, claim_2], + }) + end + end + + context "when the record does not respond to claims" do + it "returns an empty array" do + claim_activity = create(:claim_activity, action: :sampling_uploaded, record: create(:claim)) + + expect(claim_activity.claims_by_provider).to eq({}) + end + end + end end