diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 7ca54cac2..46d7db6f0 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -355,6 +355,7 @@ private self.totchild = get_totchild self.totelder = get_totelder self.totadult = get_totadult + self.refused = get_refused if %i[brent scharge pscharge supcharg].any? { |f| public_send(f).present? } self.brent ||= 0 self.scharge ||= 0 @@ -448,6 +449,15 @@ private end end + def get_refused + return 1 if [age1_known, age2_known, age3_known, age4_known, age5_known, age6_known, age7_known, age8_known].any?(1) + return 1 if [sex1, sex2, sex3, sex4, sex5, sex6, sex7, sex8].any?("R") + return 1 if [relat2, relat3, relat4, relat5, relat6, relat7, relat8].any?(3) + return 1 if [ecstat1, ecstat2, ecstat3, ecstat4, ecstat5, ecstat6, ecstat7, ecstat8].any?(10) + + 0 + end + def get_inferred_la(postcode) postcode_lookup = nil begin diff --git a/db/migrate/20220317103029_add_refused_field.rb b/db/migrate/20220317103029_add_refused_field.rb new file mode 100644 index 000000000..26bbfc4ef --- /dev/null +++ b/db/migrate/20220317103029_add_refused_field.rb @@ -0,0 +1,7 @@ +class AddRefusedField < ActiveRecord::Migration[7.0] + def change + change_table :case_logs, bulk: true do |t| + t.column :refused, :integer + end + end +end diff --git a/db/schema.rb b/db/schema.rb index e6782acfb..50f8c62b5 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -229,6 +229,7 @@ ActiveRecord::Schema[7.0].define(version: 202202071123100) do t.integer "vmonth" t.integer "vyear" t.decimal "wchchrg", precision: 10, scale: 2 + t.integer "refused" t.index ["managing_organisation_id"], name: "index_case_logs_on_managing_organisation_id" t.index ["owning_organisation_id"], name: "index_case_logs_on_owning_organisation_id" end @@ -297,10 +298,10 @@ ActiveRecord::Schema[7.0].define(version: 202202071123100) do t.string "last_sign_in_ip" t.integer "role" t.string "old_user_id" + t.string "phone" t.integer "failed_attempts", default: 0 t.string "unlock_token" t.datetime "locked_at", precision: nil - t.string "phone" t.index ["email"], name: "index_users_on_email", unique: true t.index ["organisation_id"], name: "index_users_on_organisation_id" t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true diff --git a/spec/fixtures/exports/case_logs.xml b/spec/fixtures/exports/case_logs.xml index 49efe81b5..0e0553326 100644 --- a/spec/fixtures/exports/case_logs.xml +++ b/spec/fixtures/exports/case_logs.xml @@ -171,5 +171,6 @@ 11 2019 + 0 diff --git a/spec/models/case_log_spec.rb b/spec/models/case_log_spec.rb index 49f2ab188..e23a317d8 100644 --- a/spec/models/case_log_spec.rb +++ b/spec/models/case_log_spec.rb @@ -1378,6 +1378,25 @@ RSpec.describe CaseLog do end end + context "when answering the household characteristics questions" do + let!(:case_log) do + described_class.create({ + managing_organisation: organisation, + owning_organisation: organisation, + age1_known: 1, + sex1: "R", + relat2: 3, + ecstat1: 10, + }) + end + + it "correctly derives and saves refused" do + record_from_db = ActiveRecord::Base.connection.execute("select refused from case_logs where id=#{case_log.id}").to_a[0] + expect(record_from_db["refused"]).to eq(1) + expect(case_log["refused"]).to eq(1) + end + end + context "when the data provider is filling in household needs" do let!(:case_log) do described_class.create({