From 7bb266fbb51f681017f53432b02108b6dbb5ea0f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Feb 2026 16:41:24 +0000 Subject: [PATCH 01/12] Bump rack from 3.1.18 to 3.1.20 in the bundler group across 1 directory Bumps the bundler group with 1 update in the / directory: [rack](https://github.com/rack/rack). Updates `rack` from 3.1.18 to 3.1.20 - [Release notes](https://github.com/rack/rack/releases) - [Changelog](https://github.com/rack/rack/blob/main/CHANGELOG.md) - [Commits](https://github.com/rack/rack/compare/v3.1.18...v3.1.20) --- updated-dependencies: - dependency-name: rack dependency-version: 3.1.20 dependency-type: indirect dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index 37c1fe9..13826a3 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -266,7 +266,7 @@ GEM puma (6.6.0) nio4r (~> 2.0) racc (1.8.1) - rack (3.1.18) + rack (3.1.20) rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) From d2197c91971830d2fc49470c3a00002dbf590280 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Feb 2026 13:45:40 +0000 Subject: [PATCH 02/12] Bump minimatch in the npm_and_yarn group across 1 directory Bumps the npm_and_yarn group with 1 update in the / directory: [minimatch](https://github.com/isaacs/minimatch). Updates `minimatch` from 3.1.2 to 3.1.4 - [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md) - [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.4) --- updated-dependencies: - dependency-name: minimatch dependency-version: 3.1.4 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e8f2440..966f03a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -529,9 +529,9 @@ micromatch@^4.0.4: picomatch "^2.3.1" minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + version "3.1.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.4.tgz#89d910ea3970a77ac8edfd30340ccd038b758079" + integrity sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw== dependencies: brace-expansion "^1.1.7" From 9b1de9d640bec07fd402c40152de64ce1d1d5271 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:32:08 +0000 Subject: [PATCH 03/12] Bump nokogiri in the bundler group across 1 directory Bumps the bundler group with 1 update in the / directory: [nokogiri](https://github.com/sparklemotion/nokogiri). Updates `nokogiri` from 1.18.9 to 1.19.1 - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.9...v1.19.1) --- updated-dependencies: - dependency-name: nokogiri dependency-version: 1.19.1 dependency-type: indirect dependency-group: bundler ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 13826a3..a6007c4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -233,18 +233,18 @@ GEM net-smtp (0.5.1) net-protocol nio4r (2.7.4) - nokogiri (1.18.9) + nokogiri (1.19.1) mini_portile2 (~> 2.8.2) racc (~> 1.4) - nokogiri (1.18.9-aarch64-linux-gnu) + nokogiri (1.19.1-aarch64-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-arm-linux-gnu) + nokogiri (1.19.1-arm-linux-gnu) racc (~> 1.4) - nokogiri (1.18.9-arm64-darwin) + nokogiri (1.19.1-arm64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-darwin) + nokogiri (1.19.1-x86_64-darwin) racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-gnu) + nokogiri (1.19.1-x86_64-linux-gnu) racc (~> 1.4) orm_adapter (0.5.0) pg (1.5.9) From c5909571f04eee290b1e0dc82497319ba6aad90a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Mar 2026 19:38:22 +0000 Subject: [PATCH 04/12] Bump immutable in the npm_and_yarn group across 1 directory Bumps the npm_and_yarn group with 1 update in the / directory: [immutable](https://github.com/immutable-js/immutable-js). Updates `immutable` from 4.3.5 to 4.3.8 - [Release notes](https://github.com/immutable-js/immutable-js/releases) - [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/immutable-js/immutable-js/compare/v4.3.5...v4.3.8) --- updated-dependencies: - dependency-name: immutable dependency-version: 4.3.8 dependency-type: indirect dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 966f03a..4c10751 100644 --- a/yarn.lock +++ b/yarn.lock @@ -461,9 +461,9 @@ ignore@^5.2.4: integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== immutable@^4.0.0: - version "4.3.5" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.5.tgz#f8b436e66d59f99760dc577f5c99a4fd2a5cc5a0" - integrity sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw== + version "4.3.8" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.8.tgz#02d183c7727fb2bb1d5d0380da0d779dce9296a7" + integrity sha512-d/Ld9aLbKpNwyl0KiM2CT1WYvkitQ1TSvmRtkcV8FKStiDoA7Slzgjmb/1G2yhKM1p0XeNOieaTbFZmU1d3Xuw== is-binary-path@~2.1.0: version "2.1.0" From dff1b3a50e68e0e88d0506e7a4ccf7b41f164555 Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 15:54:31 -0400 Subject: [PATCH 05/12] Refactor payment activity display in ActiveAdmin for clarity and consistency. Updated manual payment link to use user_id directly from application object. --- app/admin/applications.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/admin/applications.rb b/app/admin/applications.rb index 3bc5eff..0e26899 100644 --- a/app/admin/applications.rb +++ b/app/admin/applications.rb @@ -81,14 +81,14 @@ def load_index_batch_data total_cost = cost_lodging + cost_partner balance_due = total_cost - ttl_paid panel "Payment Activity -- [Balance Due: #{number_to_currency(balance_due)} Total Cost: #{number_to_currency(total_cost)}]" do - table_for application.user.payments.where(conf_year: application.conf_year) do #application.user.payments.current_conference_payments + table_for application.user.payments.where(conf_year: application.conf_year) do column(:id) { |aid| link_to(aid.id, admin_payment_path(aid.id)) } column(:account_type) { |atype| atype.account_type.titleize } column(:transaction_type) column(:transaction_date) {|td| Date.parse(td.transaction_date) } column(:total_amount) { |ta| number_to_currency(ta.total_amount.to_f / 100) } end - text_node link_to("[Add Manual Payment]", new_admin_payment_path(:user_id => application)) + text_node link_to("[Add Manual Payment]", new_admin_payment_path(user_id: application.user_id)) end From 9843d6abdb24086c342d28dfd874c9675fcf373f Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 15:54:47 -0400 Subject: [PATCH 06/12] Refactor ActiveAdmin payment parameters and filters for improved clarity. Removed commented-out code and streamlined user selection logic. --- app/admin/payments.rb | 31 +++---------------------------- 1 file changed, 3 insertions(+), 28 deletions(-) diff --git a/app/admin/payments.rb b/app/admin/payments.rb index b8478dd..587819d 100644 --- a/app/admin/payments.rb +++ b/app/admin/payments.rb @@ -5,35 +5,16 @@ end menu parent: "User Mangement", priority: 2 - # See permitted parameters documentation: - # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters - # - # Uncomment all parameters which should be permitted for assignment - # permit_params :transaction_type, :transaction_status, :transaction_id, :total_amount, :transaction_date, :account_type, :result_code, :result_message, :user_account, :payer_identity, :timestamp, :transaction_hash, :user_id, :conf_year - # - # or - # - # permit_params do - # permitted = [:transaction_type, :transaction_status, :transaction_id, :total_amount, :transaction_date, :account_type, :result_code, :result_message, :user_account, :payer_identity, :timestamp, :transaction_hash, :user_id] - # permitted << :other if params[:action] == 'create' && current_user.admin? - # permitted - # end - - # filter :user, as: :select, collection: -> { User.all.order(:email) } - # filter user.current_application, label: "Last Name (Starts with)" - # filter :application_first_name_start, label: "First Name (Starts with)" scope :current_conference_payments scope :all filter :user_id, as: :select, - # collection: -> { User.all.order(:email) }, collection: -> { Application.all.order(:last_name).map { |app| [app.display_name, app.user_id] } }, label: "Name" filter :conf_year, as: :select - index do selectable_column actions @@ -47,23 +28,17 @@ number_to_currency(amount.total_amount.to_f / 100) end column :transaction_status - # column :transaction_id - column :transaction_date column :account_type column :result_code column :result_message - # column :user_account - # column :payer_identity - # column :timestamp - # column :transaction_hash column :created_at column :updated_at end show do attributes_table do - row :user do |user| + row :user do |user| if (app = payment.user.applications.find_by(conf_year: ApplicationSetting.get_current_app_year)) link_to(app.display_name, admin_application_path(app)) else @@ -100,7 +75,7 @@ li "User: #{User.find(params[:user_id]).display_name}".html_safe f.input :user_id, input_html: {value: params[:user_id]}, as: :hidden else - f.input :user, as: :select, :collection => User.all.map { |u| ["#{u.email}", u.id] }.sort # Application.active_conference_applications.map { |a| ["#{a.display_name}", a.user_id] }.sort + f.input :user, as: :select, :collection => User.all.map { |u| ["#{u.email}", u.id] }.sort end li "Conf Year #{f.object.conf_year}" unless f.object.new_record? f.input :conf_year, input_html: {value: ApplicationSetting.get_current_app_year} unless f.object.persisted? @@ -112,7 +87,7 @@ f.input :account_type, collection: ['scholarship', 'special', 'other'] f.input :result_code, as: :hidden, :input_html => { value: "Manually Entered" } # 'Manually Entered' f.input :result_message, as: :hidden, :input_html => { value: "This was manually entered by #{current_admin_user.email}" } - f.input :timestamp, as: :hidden, :input_html => { value: DateTime.now.strftime("%Q").to_i } # DateTime.now.strftime("%Q").to_i + f.input :timestamp, as: :hidden, :input_html => { value: DateTime.now.strftime("%Q").to_i } end f.actions end From 754adc145c3f47a225ce369b8c458201bd9c2f2e Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 16:13:01 -0400 Subject: [PATCH 07/12] Add filters for user email, first name, and last name in ActiveAdmin applications --- app/admin/applications.rb | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/admin/applications.rb b/app/admin/applications.rb index 0e26899..b45bd2a 100644 --- a/app/admin/applications.rb +++ b/app/admin/applications.rb @@ -18,6 +18,15 @@ end filter :user_id, label: "User", as: :select, collection: -> { Application.all.map { |app| [app.display_name, app.user_id]}.uniq.sort} + filter :user_email, as: :select, + collection: -> { User.order(:email).pluck(:email) }, + label: "User Email" + filter :last_name, as: :select, + collection: -> { Application.order(:last_name).distinct.pluck(:last_name) }, + label: "Last Name" + filter :first_name, as: :select, + collection: -> { Application.order(:first_name).distinct.pluck(:first_name) }, + label: "First Name" filter :offer_status, as: :select filter :result_email_sent, as: :select filter :workshop_selection1, label: "workshop_selection1", as: :select, collection: -> { Workshop.all.map { |mapp| [mapp.instructor, mapp.instructor]}.sort } From a199c08c232d0eb3db47aea8d82145a441807acd Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 16:14:27 -0400 Subject: [PATCH 08/12] Remove user_id filter from ActiveAdmin applications for improved clarity and consistency. --- app/admin/applications.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/admin/applications.rb b/app/admin/applications.rb index b45bd2a..15102c8 100644 --- a/app/admin/applications.rb +++ b/app/admin/applications.rb @@ -17,7 +17,6 @@ button_to "Send Offer", send_offer_path(application) if application.offer_status == "not_offered" end - filter :user_id, label: "User", as: :select, collection: -> { Application.all.map { |app| [app.display_name, app.user_id]}.uniq.sort} filter :user_email, as: :select, collection: -> { User.order(:email).pluck(:email) }, label: "User Email" From b3c7945f3e1525c015e8c81fc78951ed232637fe Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 16:42:23 -0400 Subject: [PATCH 09/12] Enhance ActiveAdmin filters for payments and applications. Added filters for payer identity and payment conference year, while updating existing filters for user email, first name, and last name to ensure distinct values. Updated ransackable attributes in Payment model to include payments_conf_year. --- app/admin/applications.rb | 6 +++--- app/admin/payments.rb | 19 +++++++++++++++---- app/models/payment.rb | 8 +++++++- spec/models/payment_spec.rb | 2 +- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/admin/applications.rb b/app/admin/applications.rb index 15102c8..f53401b 100644 --- a/app/admin/applications.rb +++ b/app/admin/applications.rb @@ -18,13 +18,13 @@ end filter :user_email, as: :select, - collection: -> { User.order(:email).pluck(:email) }, + collection: -> { User.joins(:payments).distinct.order(:email).pluck(:email) }, label: "User Email" filter :last_name, as: :select, - collection: -> { Application.order(:last_name).distinct.pluck(:last_name) }, + collection: -> { Application.joins(user: :payments).distinct.order(:last_name).pluck(:last_name) }, label: "Last Name" filter :first_name, as: :select, - collection: -> { Application.order(:first_name).distinct.pluck(:first_name) }, + collection: -> { Application.joins(user: :payments).distinct.order(:first_name).pluck(:first_name) }, label: "First Name" filter :offer_status, as: :select filter :result_email_sent, as: :select diff --git a/app/admin/payments.rb b/app/admin/payments.rb index 587819d..ecceb40 100644 --- a/app/admin/payments.rb +++ b/app/admin/payments.rb @@ -10,10 +10,21 @@ scope :current_conference_payments scope :all - filter :user_id, as: :select, - collection: -> { Application.all.order(:last_name).map { |app| [app.display_name, app.user_id] } }, - label: "Name" - filter :conf_year, as: :select + # filter :user_id, as: :select, + # collection: -> { Application.all.order(:last_name).map { |app| [app.display_name, app.user_id] } }, + # label: "Name" + filter :payer_identity, as: :select, + collection: -> { Payment.order(:payer_identity).distinct.pluck(:payer_identity) }, + label: "User Email" + filter :user_applications_last_name, as: :select, + collection: -> { Application.joins(user: :payments).distinct.order(:last_name).pluck(:last_name) }, + label: "Last Name" + filter :user_applications_first_name, as: :select, + collection: -> { Application.joins(user: :payments).distinct.order(:first_name).pluck(:first_name) }, + label: "First Name" + filter :payments_conf_year, as: :select, + collection: -> { Payment.order(:conf_year).distinct.pluck(:conf_year) }, + label: "Payment Conf Year" index do selectable_column diff --git a/app/models/payment.rb b/app/models/payment.rb index 6d9177d..ba1fd8c 100644 --- a/app/models/payment.rb +++ b/app/models/payment.rb @@ -34,7 +34,13 @@ def self.ransackable_associations(auth_object = nil) end def self.ransackable_attributes(auth_object = nil) - ["account_type", "conf_year", "created_at", "id", "id_value", "payer_identity", "result_code", "result_message", "timestamp", "total_amount", "transaction_date", "transaction_hash", "transaction_id", "transaction_status", "transaction_type", "updated_at", "user_account", "user_id"] + ["account_type", "conf_year", "created_at", "id", "id_value", "payer_identity", "payments_conf_year", "result_code", "result_message", "timestamp", "total_amount", "transaction_date", "transaction_hash", "transaction_id", "transaction_status", "transaction_type", "updated_at", "user_account", "user_id"] + end + + # Disambiguate conf_year when joining associated tables in Ransack searches. + # This forces the filter to reference the payments table explicitly. + ransacker :payments_conf_year do |parent| + parent.table[:conf_year] end diff --git a/spec/models/payment_spec.rb b/spec/models/payment_spec.rb index 96eee72..f8d4495 100644 --- a/spec/models/payment_spec.rb +++ b/spec/models/payment_spec.rb @@ -79,7 +79,7 @@ it 'returns the correct attributes' do expected_attributes = [ "account_type", "conf_year", "created_at", "id", "id_value", - "payer_identity", "result_code", "result_message", "timestamp", + "payer_identity", "payments_conf_year", "result_code", "result_message", "timestamp", "total_amount", "transaction_date", "transaction_hash", "transaction_id", "transaction_status", "transaction_type", "updated_at", "user_account", "user_id" From 40382d2a8e64fffc38d6c245bc5f48060258ad4f Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 16:42:42 -0400 Subject: [PATCH 10/12] Remove commented-out user_id filter from ActiveAdmin payments for improved clarity. --- app/admin/payments.rb | 3 --- 1 file changed, 3 deletions(-) diff --git a/app/admin/payments.rb b/app/admin/payments.rb index ecceb40..88ef606 100644 --- a/app/admin/payments.rb +++ b/app/admin/payments.rb @@ -10,9 +10,6 @@ scope :current_conference_payments scope :all - # filter :user_id, as: :select, - # collection: -> { Application.all.order(:last_name).map { |app| [app.display_name, app.user_id] } }, - # label: "Name" filter :payer_identity, as: :select, collection: -> { Payment.order(:payer_identity).distinct.pluck(:payer_identity) }, label: "User Email" From 414a417d258d0437f39c0caa49f60afc1c25bbdb Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 17:03:11 -0400 Subject: [PATCH 11/12] Update ActiveAdmin application filters to use correct associations for user email, first name, and last name, ensuring distinct values are retrieved. --- app/admin/applications.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/admin/applications.rb b/app/admin/applications.rb index f53401b..2f23f53 100644 --- a/app/admin/applications.rb +++ b/app/admin/applications.rb @@ -18,13 +18,13 @@ end filter :user_email, as: :select, - collection: -> { User.joins(:payments).distinct.order(:email).pluck(:email) }, + collection: -> { User.joins(:applications).distinct.order(:email).pluck(:email) }, label: "User Email" filter :last_name, as: :select, - collection: -> { Application.joins(user: :payments).distinct.order(:last_name).pluck(:last_name) }, + collection: -> { Application.distinct.order(:last_name).pluck(:last_name) }, label: "Last Name" filter :first_name, as: :select, - collection: -> { Application.joins(user: :payments).distinct.order(:first_name).pluck(:first_name) }, + collection: -> { Application.distinct.order(:first_name).pluck(:first_name) }, label: "First Name" filter :offer_status, as: :select filter :result_email_sent, as: :select From 6405c1cac4a8c0c815fa7a23cfe6b2199a5cf245 Mon Sep 17 00:00:00 2001 From: rsmokeUM Date: Wed, 11 Mar 2026 17:18:40 -0400 Subject: [PATCH 12/12] Update app/admin/payments.rb spelling fix Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/admin/payments.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/payments.rb b/app/admin/payments.rb index 88ef606..d700870 100644 --- a/app/admin/payments.rb +++ b/app/admin/payments.rb @@ -3,7 +3,7 @@ action_item :delete_manual_payment, only: :show do link_to('Delete Manual Payment', delete_manual_payment_path(payment), method: :post, data: { confirm: 'Are you sure?' }) if payment.transaction_type == "ManuallyEntered" end - menu parent: "User Mangement", priority: 2 + menu parent: "User Management", priority: 2 permit_params :transaction_type, :transaction_status, :transaction_id, :total_amount, :transaction_date, :account_type, :result_code, :result_message, :user_account, :payer_identity, :timestamp, :transaction_hash, :user_id, :conf_year