diff --git a/app/admin/case_logs.rb b/app/admin/case_logs.rb index c3716ad6d..f32cff52b 100644 --- a/app/admin/case_logs.rb +++ b/app/admin/case_logs.rb @@ -2,7 +2,7 @@ ActiveAdmin.register CaseLog do # See permitted parameters documentation: # https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters permit_params do - permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armed_forces ecstat1 hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured armed_forces_partner medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date property_major_repairs property_major_repairs_date property_number_of_times_relet property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known] + permitted = %i[status tenant_code age1 sex1 tenant_ethnic_group tenant_nationality previous_housing_situation armed_forces ecstat1 hhmemb relat2 age2 sex2 ecstat2 relat3 age3 sex3 ecstat3 relat4 age4 sex4 ecstat4 relat5 age5 sex5 ecstat5 relat6 age6 sex6 ecstat6 relat7 age7 person_7_gender ecstat7 relat8 age8 sex8 ecstat8 homelessness reason benefit_cap_spare_room_subsidy armed_forces_active armed_forces_injured armed_forces_partner medical_conditions pregnancy accessibility_requirements condition_effects tenancy_code tenancy_start_date starter_tenancy fixed_term_tenancy tenancy_type letting_type letting_provider la previous_postcode property_relet property_vacancy_reason property_reference property_unit_type property_building_type property_number_of_bedrooms property_void_date majorrepairs mrcdate property_number_of_times_relet property_wheelchair_accessible net_income net_income_frequency net_income_uc_proportion hb rent_frequency basic_rent service_charge personal_service_charge support_charge total_charge tshortfall time_lived_in_la time_on_la_waiting_list prevloc property_postcode reasonable_preference reasonable_preference_reason cbl_letting chr_letting cap_letting hbrentshortfall other_reason accessibility_requirements_fully_wheelchair_accessible_housing accessibility_requirements_wheelchair_access_to_essential_rooms accessibility_requirements_level_access_housing accessibility_requirements_other_disability_requirements accessibility_requirements_no_disability_requirements accessibility_requirements_do_not_know accessibility_requirements_prefer_not_to_say condition_effects_vision condition_effects_hearing condition_effects_mobility condition_effects_dexterity condition_effects_stamina condition_effects_learning condition_effects_memory condition_effects_mental_health condition_effects_social_or_behavioral condition_effects_other condition_effects_prefer_not_to_say reasonable_preference_reason_homeless reasonable_preference_reason_unsatisfactory_housing reasonable_preference_reason_medical_grounds reasonable_preference_reason_avoid_hardship reasonable_preference_reason_do_not_know other_tenancy_type override_net_income_validation net_income_known] permitted end diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index cc2a4b484..8eb60af6a 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -103,6 +103,12 @@ private form = FormHandler.instance.get_form("2021_2022") form.expected_responses_for_page(page).each_with_object({}) do |(question_key, question_info), result| question_params = params["case_log"][question_key] + if question_info["type"] == "date" + day = params["case_log"]["#{question_key}(3i)"] + month = params["case_log"]["#{question_key}(2i)"] + year = params["case_log"]["#{question_key}(1i)"] + result[question_key] = Date.new(year.to_i, month.to_i, day.to_i) + end next unless question_params if %w[checkbox validation_override].include?(question_info["type"]) diff --git a/app/models/case_log.rb b/app/models/case_log.rb index aae1d2741..c646fad2e 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -171,6 +171,26 @@ class CaseLog < ApplicationRecord IncomeRange::ALLOWED[ecstat1.to_sym] end + def mrcday + if mrcdate.present? + mrcdate.day + end + end + + def mrcmonth + if mrcdate.present? + mrcdate.month + end + end + + def mrcyear + if mrcdate.present? + mrcdate.year + end + end + + + private def update_status! diff --git a/config/forms/2021_2022.json b/config/forms/2021_2022.json index 52d80f8ee..f28753d14 100644 --- a/config/forms/2021_2022.json +++ b/config/forms/2021_2022.json @@ -112,7 +112,7 @@ } } }, - "letting_type": { + "rent_type": { "header": "About this log", "description": "", "questions": { @@ -1585,10 +1585,10 @@ "1": "No" }, "conditional_for": { - "property_major_repairs_date": ["Yes"] + "mrcdate": ["Yes"] } }, - "property_major_repairs_date": { + "mrcdate": { "check_answer_label": "What was the major repairs completion date?", "header": "What was the major repairs completion date?", "hint_text": "For example, 27 3 2007", diff --git a/db/migrate/20211110140928_add_mrc_dates.rb b/db/migrate/20211110140928_add_mrc_dates.rb new file mode 100644 index 000000000..08c1c70d3 --- /dev/null +++ b/db/migrate/20211110140928_add_mrc_dates.rb @@ -0,0 +1,21 @@ +class AddMrcDates < ActiveRecord::Migration[6.1] + def up + change_table :case_logs, bulk: true do |t| + t.remove :property_major_repairs_date + t.column :mrcdate, :datetime + t.column :mrcday, :integer + t.column :mrcmonth, :integer + t.column :mrcyear, :integer + end + end + + def down + change_table :case_logs, bulk: true do |t| + t.column :property_major_repairs_date, :string + t.remove :mrcdate + t.remove :mrcday + t.remove :mrcmonth + t.remove :mrcyear + end + end +end diff --git a/db/schema.rb b/db/schema.rb index a1b19f7f2..ba9b956dd 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 2021_11_08_134601) do +ActiveRecord::Schema.define(version: 2021_11_10_140928) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -78,7 +78,6 @@ ActiveRecord::Schema.define(version: 2021_11_08_134601) do t.string "property_building_type" t.integer "beds" t.string "property_void_date" - t.string "property_major_repairs_date" t.integer "offered" t.integer "wchair" t.integer "earnings" @@ -149,6 +148,10 @@ ActiveRecord::Schema.define(version: 2021_11_08_134601) do t.string "ppostc1" t.string "ppostc2" t.integer "property_relet" + t.datetime "mrcdate" + t.integer "mrcday" + t.integer "mrcmonth" + t.integer "mrcyear" t.index ["discarded_at"], name: "index_case_logs_on_discarded_at" end diff --git a/docs/api/DLUHC-CORE-Data.v1.json b/docs/api/DLUHC-CORE-Data.v1.json index 654307a59..e13ad4f17 100644 --- a/docs/api/DLUHC-CORE-Data.v1.json +++ b/docs/api/DLUHC-CORE-Data.v1.json @@ -318,8 +318,8 @@ "property_building_type": "dummy", "beds": 3, "property_void_date": "03/11/2019", - "property_major_repairs": "Yes", - "property_major_repairs_date": "05/05/2020", + "majorrepairs": "Yes", + "mrcdate": "05/05/2020", "offered": 2, "wchair": true, "earnings": 1000, @@ -871,11 +871,11 @@ "type": "string", "minLength": 1 }, - "property_major_repairs": { + "majorrepairs": { "type": "string", "minLength": 1 }, - "property_major_repairs_date": { + "mrcdate": { "type": "string", "minLength": 1 }, @@ -1107,8 +1107,8 @@ "property_building_type", "beds", "property_void_date", - "property_major_repairs", - "property_major_repairs_date", + "majorrepairs", + "mrcdate", "offered", "wchair", "earnings", diff --git a/spec/controllers/case_logs_controller_spec.rb b/spec/controllers/case_logs_controller_spec.rb index 40d93cc59..007b76f8c 100644 --- a/spec/controllers/case_logs_controller_spec.rb +++ b/spec/controllers/case_logs_controller_spec.rb @@ -177,6 +177,28 @@ RSpec.describe CaseLogsController, type: :controller do expect(case_log.ppostc2).to eq("2AE") end end + + context "partition date" do + let(:case_log_with_date) do + { + :"mrcdate(1i)" => "2021", + :"mrcdate(2i)" => "05", + :"mrcdate(3i)" => "04", + :page => "major_repairs_date", + } + end + it "saves full and partial dates" do + post :submit_form, params: { id: id, case_log: case_log_with_date } + case_log.reload + + expect(case_log.mrcdate.day).to eq(4) + expect(case_log.mrcdate.month).to eq(5) + expect(case_log.mrcdate.year).to eq(2021) + expect(case_log.mrcday).to eq(4) + expect(case_log.mrcmonth).to eq(5) + expect(case_log.mrcyear).to eq(2021) + end + end end describe "get_next_page_path" do diff --git a/spec/fixtures/complete_case_log.json b/spec/fixtures/complete_case_log.json index 7bca4a575..97afaeaa0 100644 --- a/spec/fixtures/complete_case_log.json +++ b/spec/fixtures/complete_case_log.json @@ -63,8 +63,11 @@ "property_building_type": "dummy", "beds": 3, "property_void_date": "03/11/2019", - "property_major_repairs": "Yes", - "property_major_repairs_date": "05/05/2020", + "majorrepairs": "Yes", + "mrcdate": "05/05/2020", + "mrcday": 5, + "mrcmonth": 5, + "mrcyear": 2020, "offered": 2, "wchair": "Yes", "net_income_known": "Yes", diff --git a/spec/fixtures/forms/test_form.json b/spec/fixtures/forms/test_form.json index 15764300b..95ac050da 100644 --- a/spec/fixtures/forms/test_form.json +++ b/spec/fixtures/forms/test_form.json @@ -510,6 +510,16 @@ "type": "text" } } + }, + "major_repairs_date": { + "questions": { + "mrcdate": { + "check_answer_label": "What was the major repairs completion date?", + "header": "What was the major repairs completion date?", + "hint_text": "For example, 27 3 2007", + "type": "date" + } + } } } } diff --git a/spec/models/form_handler_spec.rb b/spec/models/form_handler_spec.rb index ff6d4dc0f..f998c5557 100644 --- a/spec/models/form_handler_spec.rb +++ b/spec/models/form_handler_spec.rb @@ -15,7 +15,7 @@ RSpec.describe FormHandler do form_handler = FormHandler.instance form = form_handler.get_form("test_form") expect(form).to be_a(Form) - expect(form.all_pages.count).to eq(22) + expect(form.all_pages.count).to eq(23) end end