From 755107ec9f60034119cbabdf8c2b077aedd92fee Mon Sep 17 00:00:00 2001 From: Vishal Jain Date: Sun, 16 Oct 2022 13:39:32 +0530 Subject: [PATCH] Fix snail issue for all enterprise fees --- .../admin/enterprise_fees_controller.rb | 28 ++++++++++++++----- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/app/controllers/admin/enterprise_fees_controller.rb b/app/controllers/admin/enterprise_fees_controller.rb index f14612a2cd..8bd4793c5b 100644 --- a/app/controllers/admin/enterprise_fees_controller.rb +++ b/app/controllers/admin/enterprise_fees_controller.rb @@ -6,6 +6,7 @@ module Admin class EnterpriseFeesController < Admin::ResourceController before_action :load_enterprise_fee_set, only: :index before_action :load_data + before_action :check_enterprise_fee_input, only: [:bulk_update] def index @include_calculators = params[:include_calculators].present? @@ -35,13 +36,6 @@ module Admin end def bulk_update - @flat_percent_value = enterprise_fee_bulk_params.dig('collection_attributes', '0', 'calculator_attributes', 'preferred_flat_percent') - - unless @flat_percent_value.nil? || Float(@flat_percent_value, exception: false) - flash[:error] = I18n.t(:calculator_preferred_value_error) - return redirect_to redirect_path - end - @enterprise_fee_set = Sets::EnterpriseFeeSet.new(enterprise_fee_bulk_params) if @enterprise_fee_set.save @@ -105,5 +99,25 @@ module Admin ] ) end + + def check_enterprise_fee_input + enterprise_fee_bulk_params['collection_attributes'].each do |_, fee_row| + enterprise_fees = fee_row['calculator_attributes']&.slice( + :preferred_flat_percent, :preferred_amount, + :preferred_first_item, :preferred_additional_item, + :preferred_minimal_amount, :preferred_normal_amount, + :preferred_discount_amount, :preferred_per_unit + ) + + next unless enterprise_fees + + enterprise_fees.each do |_, enterprise_amount| + unless enterprise_amount.nil? || Float(enterprise_amount, exception: false) + flash[:error] = I18n.t(:calculator_preferred_value_error) + return redirect_to redirect_path + end + end + end + end end end