diff --git a/app/models/case_log.rb b/app/models/case_log.rb index 2862eb087..2cb25397d 100644 --- a/app/models/case_log.rb +++ b/app/models/case_log.rb @@ -117,6 +117,81 @@ class CaseLogValidator < ActiveModel::Validator validate_other_field(record, "tenancy_type", "other_tenancy_type") end + def validate_other_household_members(record) + index = 0 + number_of_other_members = record.household_number_of_other_members + partner = false + + while index < number_of_other_members + + member_number = index+2 + relationship = record["person_#{member_number}_relationship"] + age = record["person_#{member_number}_age"] + gender = record["person_#{member_number}_gender"] + economic_status = record["person_#{member_number}_economic_status"] + + binding.pry + if relationship || age || gender || economic_status + if relationship.nil? || age.nil? || gender.nil? || economic_status.nil? + record.errors.add "person_#{member_number}_age", "If any of the person is filled out it must all be filled" + end + end + + if age<1 || age>120 + record.errors.add "person_#{member_number}_age", "Tenant #{member_number} age must be between 1 and 120 (i.e. infants must be entered as 1)" + end + + if age>70 && economic_status != "Retired" + record.errors.add "person_#{member_number}_economic_status", "Tenant #{member_number} must be retired if over 70" + end + + if gender=="Male" && economic_status == "Retired" && age<65 + record.errors.add "person_#{member_number}_age", "Male tenant who is retired must be 65 or over" + end + + if gender=="Female" && economic_status == "Retired" && age<60 + record.errors.add "person_#{member_number}_age", "Female tenant who is retired must be 60 or over" + end + + if age>70 && economic_status != "Retired" + record.errors.add "person_#{member_number}_economic_status", "Tenant #{member_number} must be retired if over 70" + end + + if age<16 + if relationship != "Child - includes young adult and grown-up" + record.errors.add "person_#{member_number}_relationship", "Tenant #{member_number}'s relationship to tenant 1 must be Child if their age is under 16" + end + if economic_status != "Child under 16" + record.errors.add "person_#{member_number}_economic_status", "Tenant #{member_number} economic status must be Child under 16 if their age is under 16" + end + end + + if relationship == "Partner" + if partner + record.errors.add "person_#{member_number}_relationship", "Tenant can not have multiple partners" + elsif age<16 || economic_status == "Child under 16" + record.errors.add "person_#{member_number}_relationship", "Tenant can not be tenant 1's partner if they are under 16" + else + partner = true + end + end + + if relationship == "Child - includes young adult and grown-up" + if economic_status!="Unable to work because of long term sick or disability" || economic_status!="Other" || economic_status!="Prefer not to say" + record.errors.add "person_#{member_number}_economic_status", "This is not a valid economic status for a child" + end + + if age>=16 && age<=19 + if economic_status != "Full-time student" || economic_status != "Prefer not to say" + record.errors.add "person_#{member_number}_economic_status", "If relationship is child and age is between 16 and 19 - tenant #{member_number} must be a full time student or prefer not to say." + end + end + end + + index = index+1 + end + end + def validate(record) # If we've come from the form UI we only want to validate the specific fields # that have just been submitted. If we're submitting a log via API or Bulk Upload