From 2897f547323033a6e4792b0c982d860eccb9bc92 Mon Sep 17 00:00:00 2001 From: baarkerlounger Date: Mon, 14 Mar 2022 10:01:45 +0000 Subject: [PATCH] Unify calculation so we can remove case statement --- app/models/case_log.rb | 38 +++++--------------------------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/app/models/case_log.rb b/app/models/case_log.rb index e43c8a32f..1a66ee7eb 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -40,17 +40,7 @@ class CaseLog < ApplicationRecord RENT_TYPE_MAPPING_LABELS = { 1 => "Social Rent", 2 => "Affordable Rent", 3 => "Intermediate Rent" }.freeze HAS_BENEFITS_OPTIONS = [0, 1, 2, 3].freeze STATUS = { "not_started" => 0, "in_progress" => 1, "completed" => 2 }.freeze - RENT_AND_CHARGES_PERIOD_LABEL = { - 0 => "Every 2 weeks", - 1 => "Every 4 weeks", - 2 => "Every calendar month", - 3 => "Weekly for 50 weeks", - 4 => "Weekly for 49 weeks", - 5 => "Weekly for 48 weeks", - 6 => "Weekly for 47 weeks", - 7 => "Weekly for 46 weeks", - 8 => "Weekly for 52 weeks", - }.freeze + NUM_OF_WEEKS_FROM_PERIOD = { 0 => 26, 1 => 13, 2 => 12, 3 => 50, 4 => 49, 5 => 48, 6 => 47, 7 => 46, 8 => 52 }.freeze enum status: STATUS def form @@ -97,28 +87,10 @@ class CaseLog < ApplicationRecord end def weekly_value(field_value) - return unless field_value && period - - case RENT_AND_CHARGES_PERIOD_LABEL[period] - when "Every 2 weeks" - field_value / 2 - when "Every 4 weeks" - field_value / 4 - when "Every calendar month" - field_value * 12 / 52 - when "Weekly for 50 weeks" - field_value / 52 * 50 - when "Weekly for 49 weeks" - field_value / 52 * 49 - when "Weekly for 48 weeks" - field_value / 52 * 48 - when "Weekly for 47 weeks" - field_value / 52 * 47 - when "Weekly for 46 weeks" - field_value / 52 * 46 - when "Weekly for 52 weeks" - field_value - end + num_of_weeks = NUM_OF_WEEKS_FROM_PERIOD[period] + return unless field_value && num_of_weeks + + field_value / 52 * num_of_weeks end def applicable_income_range