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({