From 45c973774df19acd9a085d8167e4768d9f86a320 Mon Sep 17 00:00:00 2001 From: Mo Seedat Date: Wed, 28 Sep 2022 10:12:24 +0100 Subject: [PATCH] Use Sidekiq rather than Resque --- Rakefile | 3 - app/controllers/lettings_test_controller.rb | 10 +- .../imports/lettings_logs_import_service.rb | 742 ++++++++++++++++++ config/environments/development.rb | 4 +- dump.rdb | Bin 39386 -> 162492 bytes 5 files changed, 745 insertions(+), 14 deletions(-) create mode 100644 app/services/imports/lettings_logs_import_service.rb diff --git a/Rakefile b/Rakefile index 494ab0046..9a5ea7383 100644 --- a/Rakefile +++ b/Rakefile @@ -2,8 +2,5 @@ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. require_relative "config/application" -require 'resque/tasks' - -task 'resque:setup' => :environment Rails.application.load_tasks diff --git a/app/controllers/lettings_test_controller.rb b/app/controllers/lettings_test_controller.rb index f7f1e7670..831523c74 100644 --- a/app/controllers/lettings_test_controller.rb +++ b/app/controllers/lettings_test_controller.rb @@ -6,16 +6,10 @@ class LettingsTestController < ApplicationController def index folder = '/Users/mohseeadmin/development-meta/CORE/CLDC-1222' stash_folder = Time.now.to_i.to_s - generate_fixtures(folder, stash_folder, 50) - - - LettingsLog.connection.truncate(LettingsLog.table_name) + generate_fixtures(folder, stash_folder, 500) - - - + LettingsLog.connection.truncate(LettingsLog.table_name) Imports::LettingsLogsImportService.new(Storage::S3Service).local_load("#{folder}/#{stash_folder}") - end def node(xml_document, namespace, field) diff --git a/app/services/imports/lettings_logs_import_service.rb b/app/services/imports/lettings_logs_import_service.rb new file mode 100644 index 000000000..1bc741e96 --- /dev/null +++ b/app/services/imports/lettings_logs_import_service.rb @@ -0,0 +1,742 @@ +require 'securerandom' +require 'json' + +module Imports + class LettingsLogsImportService < ImportService + include Wisper::Publisher + + def initialize(storage_service, logger = Rails.logger) + super + + Wisper.subscribe(LettingsLogImportListener.new, prefix: :on) + end + + def create_logs(folder) + import_from(folder, :create_log) + if @logs_with_discrepancies.count.positive? + @logger.warn("The following lettings logs had status discrepancies: [#{@logs_with_discrepancies.join(', ')}]") + end + end + + def local_load(folder) + filenames = Dir["#{folder}/**/*.xml"] + puts "FILENAMES (#{filenames.size}): #{filenames}" + + @run_id = SecureRandom.uuid.to_s + logs_import = LogsImport.create!( + run_id: @run_id, + started_at: Time.zone.now, + total: filenames.size, + discrepancies: [], + filenames: filenames + ) + + redis = Redis.new + redis.set(@run_id, Marshal.dump(logs_import)) + + + broadcast(::Import::STARTED, @run_id) + + filenames.each do |filename| + puts "Loading filename: #{filename}" + Rack::MiniProfiler.step("Start Processing file #{filename}") do + # Generate background job to process file completely + xml_document = Nokogiri::XML(File.open(filename)) + + + LettingsLogImportJob.perform_now(@run_id, xml_document.to_s) + #send(:create_log, xml_document) + end + rescue StandardError => e + @logger.error "#{e.class} in #{filename}: #{e.message}. Caller: #{e.backtrace.first}" + end + + if @logs_with_discrepancies.count.positive? + @logger.warn("The following lettings logs had status discrepancies: [#{@logs_with_discrepancies.join(', ')}]") + end + end + end + + + class LettingsLogsImportProcessor + FORM_NAME_INDEX = { + start_year: 0, + rent_type: 2, + needs_type: 3, + }.freeze + + GN_SH = { + general_needs: 1, + supported_housing: 2, + }.freeze + + SR_AR_IR = { + social_rent: 1, + affordable_rent: 2, + intermediate_rent: 3, + }.freeze + + # For providertype, values are reversed!!! + PRP_LA = { + private_registered_provider: 1, + local_authority: 2, + }.freeze + + IRPRODUCT = { + rent_to_buy: 1, + london_living_rent: 2, + other_intermediate_rent_product: 3, + }.freeze + + # These must match our form + RENT_TYPE = { + social_rent: 0, + affordable_rent: 1, + london_affordable_rent: 2, + rent_to_buy: 3, + london_living_rent: 4, + other_intermediate_rent_product: 5, + }.freeze + + attr_reader :xml_doc, :logs_with_discrepancies, :logs_overridden, :discrepancy, :old_id + + def initialize(xml_doc) + @xml_doc = xml_doc + @discrepancy = false + @old_id = '' + + @logs_with_discrepancies = Set.new + @logs_overridden = Set.new + + end + + def create_log(xml_doc) + attributes = {} + + previous_status = field_value(xml_doc, "meta", "status") + + Rack::MiniProfiler.step("Loading attributes") do + # Required fields for status complete or logic to work + # Note: order matters when we derive from previous values (attributes parameter) + attributes["startdate"] = compose_date(xml_doc, "DAY", "MONTH", "YEAR") + attributes["owning_organisation_id"] = find_organisation_id(xml_doc, "OWNINGORGID") + attributes["managing_organisation_id"] = find_organisation_id(xml_doc, "MANINGORGID") + attributes["joint"] = unsafe_string_as_integer(xml_doc, "joint") + attributes["startertenancy"] = unsafe_string_as_integer(xml_doc, "_2a") + attributes["tenancy"] = unsafe_string_as_integer(xml_doc, "Q2b") + attributes["tenancycode"] = string_or_nil(xml_doc, "_2bTenCode") + attributes["tenancyother"] = string_or_nil(xml_doc, "Q2ba") + attributes["tenancylength"] = safe_string_as_integer(xml_doc, "_2cYears") + attributes["needstype"] = needs_type(xml_doc) + attributes["lar"] = london_affordable_rent(xml_doc) + attributes["irproduct"] = unsafe_string_as_integer(xml_doc, "IRProduct") + attributes["irproduct_other"] = string_or_nil(xml_doc, "IRProductOther") + attributes["rent_type"] = rent_type(xml_doc, attributes["lar"], attributes["irproduct"]) + attributes["hhmemb"] = household_members(xml_doc, previous_status) + (1..8).each do |index| + attributes["age#{index}"] = safe_string_as_integer(xml_doc, "P#{index}Age") + attributes["age#{index}_known"] = age_known(xml_doc, index, attributes["hhmemb"]) + attributes["sex#{index}"] = sex(xml_doc, index) + attributes["ecstat#{index}"] = unsafe_string_as_integer(xml_doc, "P#{index}Eco") + end + (2..8).each do |index| + attributes["relat#{index}"] = relat(xml_doc, index) + attributes["details_known_#{index}"] = details_known(index, attributes) + + # Trips validation + if attributes["age#{index}"].present? && attributes["age#{index}"] < 16 && attributes["relat#{index}"].present? && attributes["relat#{index}"] != "C" && attributes["relat#{index}"] != "R" + attributes["age#{index}"] = nil + attributes["relat#{index}"] = nil + end + end + attributes["ethnic"] = unsafe_string_as_integer(xml_doc, "P1Eth") + attributes["ethnic_group"] = ethnic_group(attributes["ethnic"]) + attributes["national"] = unsafe_string_as_integer(xml_doc, "P1Nat") + attributes["preg_occ"] = unsafe_string_as_integer(xml_doc, "Preg") + + attributes["armedforces"] = unsafe_string_as_integer(xml_doc, "ArmedF") + attributes["leftreg"] = unsafe_string_as_integer(xml_doc, "LeftAF") + attributes["reservist"] = unsafe_string_as_integer(xml_doc, "Inj") + + attributes["hb"] = unsafe_string_as_integer(xml_doc, "Q6Ben") + attributes["benefits"] = unsafe_string_as_integer(xml_doc, "Q7Ben") + attributes["earnings"] = safe_string_as_decimal(xml_doc, "Q8Money") + attributes["net_income_known"] = net_income_known(xml_doc, attributes["earnings"]) + attributes["incfreq"] = unsafe_string_as_integer(xml_doc, "Q8a") + + attributes["reason"] = unsafe_string_as_integer(xml_doc, "Q9a") + attributes["reasonother"] = string_or_nil(xml_doc, "Q9aa") + attributes["underoccupation_benefitcap"] = unsafe_string_as_integer(xml_doc, "_9b") + %w[a b c f g h].each do |letter| + attributes["housingneeds_#{letter}"] = housing_needs(xml_doc, letter) + end + attributes["housingneeds"] = 1 if [attributes["housingneeds_a"], attributes["housingneeds_b"], attributes["housingneeds_c"], attributes["housingneeds_f"]].any? { |housingneed| housingneed == 1 } + attributes["housingneeds"] = 2 if attributes["housingneeds_g"] == 1 + attributes["housingneeds"] = 3 if attributes["housingneeds_h"] == 1 + attributes["housingneeds_type"] = 0 if attributes["housingneeds_a"] == 1 + attributes["housingneeds_type"] = 1 if attributes["housingneeds_b"] == 1 + attributes["housingneeds_type"] = 2 if attributes["housingneeds_c"] == 1 + attributes["housingneeds_type"] = 3 if attributes["housingneeds_f"] == 1 && [attributes["housingneeds_a"], attributes["housingneeds_b"], attributes["housingneeds_c"]].all? { |housingneed| housingneed != 1 } + attributes["housingneeds_other"] = attributes["housingneeds_f"] == 1 ? 1 : 0 + + attributes["illness"] = unsafe_string_as_integer(xml_doc, "Q10ia") + (1..10).each do |index| + attributes["illness_type_#{index}"] = illness_type(xml_doc, index, attributes["illness"]) + end + attributes["illness_type_0"] = 1 if (1..10).all? { |idx| attributes["illness_type_#{idx}"].nil? || attributes["illness_type_#{idx}"].zero? } + + attributes["prevten"] = unsafe_string_as_integer(xml_doc, "Q11") + attributes["prevloc"] = string_or_nil(xml_doc, "Q12aONS") + attributes["ppostcode_full"] = compose_postcode(xml_doc, "PPOSTC1", "PPOSTC2") + attributes["ppcodenk"] = previous_postcode_known(xml_doc, attributes["ppostcode_full"], attributes["prevloc"]) + attributes["layear"] = unsafe_string_as_integer(xml_doc, "Q12c") + attributes["waityear"] = unsafe_string_as_integer(xml_doc, "Q12d") + attributes["homeless"] = unsafe_string_as_integer(xml_doc, "Q13") + + attributes["reasonpref"] = unsafe_string_as_integer(xml_doc, "Q14a") + attributes["rp_homeless"] = unsafe_string_as_integer(xml_doc, "Q14b1").present? ? 1 : nil + attributes["rp_insan_unsat"] = unsafe_string_as_integer(xml_doc, "Q14b2").present? ? 1 : nil + attributes["rp_medwel"] = unsafe_string_as_integer(xml_doc, "Q14b3").present? ? 1 : nil + attributes["rp_hardship"] = unsafe_string_as_integer(xml_doc, "Q14b4").present? ? 1 : nil + attributes["rp_dontknow"] = unsafe_string_as_integer(xml_doc, "Q14b5").present? ? 1 : nil + + # Trips validation + if attributes["homeless"] == 1 && attributes["rp_homeless"] == 1 + attributes["homeless"] = nil + attributes["rp_homeless"] = nil + end + + attributes["cbl"] = allocation_system(unsafe_string_as_integer(xml_doc, "Q15CBL")) + attributes["chr"] = allocation_system(unsafe_string_as_integer(xml_doc, "Q15CHR")) + attributes["cap"] = allocation_system(unsafe_string_as_integer(xml_doc, "Q15CAP")) + attributes["letting_allocation_unknown"] = allocation_system_unknown(attributes["cbl"], attributes["chr"], attributes["cap"]) + + attributes["referral"] = unsafe_string_as_integer(xml_doc, "Q16") + attributes["period"] = unsafe_string_as_integer(xml_doc, "Q17") + + attributes["brent"] = safe_string_as_decimal(xml_doc, "Q18ai") + attributes["scharge"] = safe_string_as_decimal(xml_doc, "Q18aii") + attributes["pscharge"] = safe_string_as_decimal(xml_doc, "Q18aiii") + attributes["supcharg"] = safe_string_as_decimal(xml_doc, "Q18aiv") + attributes["tcharge"] = safe_string_as_decimal(xml_doc, "Q18av") + + attributes["hbrentshortfall"] = unsafe_string_as_integer(xml_doc, "Q18d") + attributes["tshortfall"] = safe_string_as_decimal(xml_doc, "Q18dyes") + attributes["tshortfall_known"] = tshortfall_known?(xml_doc, attributes) + + attributes["voiddate"] = compose_date(xml_doc, "VDAY", "VMONTH", "VYEAR") + attributes["mrcdate"] = compose_date(xml_doc, "MRCDAY", "MRCMONTH", "MRCYEAR") + attributes["majorrepairs"] = if attributes["mrcdate"].present? && previous_status.include?("submitted") + 1 + elsif previous_status.include?("submitted") + 0 + end + + attributes["offered"] = safe_string_as_integer(xml_doc, "Q20") + attributes["propcode"] = string_or_nil(xml_doc, "Q21a") + attributes["beds"] = safe_string_as_integer(xml_doc, "Q22") + attributes["unittype_gn"] = unsafe_string_as_integer(xml_doc, "Q23") + attributes["builtype"] = unsafe_string_as_integer(xml_doc, "Q24") + attributes["wchair"] = unsafe_string_as_integer(xml_doc, "Q25") + attributes["unitletas"] = unsafe_string_as_integer(xml_doc, "Q26") + attributes["rsnvac"] = unsafe_string_as_integer(xml_doc, "Q27") + attributes["renewal"] = renewal(attributes["rsnvac"]) + + attributes["la"] = string_or_nil(xml_doc, "Q28ONS") + attributes["postcode_full"] = compose_postcode(xml_doc, "POSTCODE", "POSTCOD2") + attributes["postcode_known"] = postcode_known(attributes) + + # Not specific to our form but required for consistency (present in import) + attributes["old_form_id"] = safe_string_as_integer(xml_doc, "FORM") + attributes["created_at"] = Time.zone.parse(field_value(xml_doc, "meta", "created-date")) + attributes["updated_at"] = Time.zone.parse(field_value(xml_doc, "meta", "modified-date")) + attributes["old_id"] = field_value(xml_doc, "meta", "document-id") + @old_id = attributes["old_id"] + + # Required for our form invalidated questions (not present in import) + attributes["previous_la_known"] = attributes["prevloc"].nil? ? 0 : 1 + attributes["is_la_inferred"] = attributes["postcode_full"].present? + attributes["first_time_property_let_as_social_housing"] = first_time_let(attributes["rsnvac"]) + attributes["declaration"] = declaration(xml_doc) + + set_partial_charges_to_zero(attributes) + + # Supported Housing fields + if attributes["needstype"] == GN_SH[:supported_housing] + location_old_visible_id = safe_string_as_integer(xml_doc, "_1cschemecode") + scheme_old_visible_id = safe_string_as_integer(xml_doc, "_1cmangroupcode") + + schemes = Scheme.where(old_visible_id: scheme_old_visible_id, owning_organisation_id: attributes["owning_organisation_id"]) + location = Location.find_by(old_visible_id: location_old_visible_id, scheme: schemes) + raise "No matching location for scheme #{scheme_old_visible_id} and location #{location_old_visible_id} (visible IDs)" if location.nil? + + # Set the scheme via location, because the scheme old visible ID can be duplicated at import + attributes["location_id"] = location.id + attributes["scheme_id"] = location.scheme.id + attributes["sheltered"] = unsafe_string_as_integer(xml_doc, "Q1e") + attributes["chcharge"] = safe_string_as_decimal(xml_doc, "Q18b") + attributes["household_charge"] = household_charge(xml_doc) + attributes["is_carehome"] = is_carehome(location.scheme) + end + + # Handles confidential schemes + if attributes["postcode_full"] == "******" + attributes["postcode_known"] = 0 + attributes["postcode_full"] = nil + end + + # Soft validations can become required answers, set them to yes by default + attributes["pregnancy_value_check"] = 0 + attributes["major_repairs_date_value_check"] = 0 + attributes["void_date_value_check"] = 0 + attributes["retirement_value_check"] = 0 + attributes["rent_value_check"] = 0 + attributes["net_income_value_check"] = 0 + + # Sets the log creator + owner_id = field_value(xml_doc, "meta", "owner-user-id").strip + if owner_id.present? + user = LegacyUser.find_by(old_user_id: owner_id)&.user + @logger.warn "Missing user! We expected to find a legacy user with old_user_id #{owner_id}" unless user + + attributes["created_by"] = user + end + end # ENDPROFILER + + Rack::MiniProfiler.step("Saving...") do + apply_date_consistency!(attributes) + apply_household_consistency!(attributes) + + lettings_log = save_lettings_log(attributes) + compute_differences(lettings_log, attributes) + check_status_completed(lettings_log, previous_status) unless @logs_overridden.include?(lettings_log.old_id) + end # ENDPROFILER + end + + def save_lettings_log(attributes) + lettings_log = LettingsLog.new(attributes) + begin + lettings_log.save! + lettings_log + rescue ActiveRecord::RecordNotUnique + legacy_id = attributes["old_id"] + record = LettingsLog.find_by(old_id: legacy_id) + @logger.info "Updating lettings log #{record.id} with legacy ID #{legacy_id}" + record.update!(attributes) + record + rescue ActiveRecord::RecordInvalid => e + rescue_validation_or_raise(lettings_log, attributes, e) + end + end + + def rescue_validation_or_raise(lettings_log, attributes, exception) + if lettings_log.errors.of_kind?(:referral, :internal_transfer_non_social_housing) + @logger.warn("Log #{lettings_log.old_id}: Removing internal transfer referral since previous tenancy is a non social housing") + @logs_overridden << lettings_log.old_id + attributes.delete("referral") + save_lettings_log(attributes) + elsif lettings_log.errors.of_kind?(:referral, :internal_transfer_fixed_or_lifetime) + @logger.warn("Log #{lettings_log.old_id}: Removing internal transfer referral since previous tenancy is fixed terms or lifetime") + @logs_overridden << lettings_log.old_id + attributes.delete("referral") + save_lettings_log(attributes) + else + raise exception + end + end + + def compute_differences(lettings_log, attributes) + differences = [] + attributes.each do |key, value| + lettings_log_value = lettings_log.send(key.to_sym) + next if fields_not_present_in_softwire_data.include?(key) + + if value != lettings_log_value + differences.push("#{key} #{value.inspect} #{lettings_log_value.inspect}") + end + end + @logger.warn "Differences found when saving log #{lettings_log.old_id}: #{differences}" unless differences.empty? + end + + def fields_not_present_in_softwire_data + %w[majorrepairs illness_type_0 tshortfall_known pregnancy_value_check retirement_value_check rent_value_check net_income_value_check major_repairs_date_value_check void_date_value_check housingneeds_type housingneeds_other] + end + + def check_status_completed(lettings_log, previous_status) + if previous_status.include?("submitted") && lettings_log.status != "completed" + @logger.warn "lettings log #{lettings_log.id} is not completed" + @logger.warn "lettings log with old id:#{lettings_log.old_id} is incomplete but status should be complete" + @logs_with_discrepancies << lettings_log.old_id + @discrepancy = true + end + end + + # Safe: A string that represents only an integer (or empty/nil) + def safe_string_as_integer(xml_doc, attribute) + str = field_value(xml_doc, "xmlns", attribute) + Integer(str, exception: false) + end + + # Safe: A string that represents only a decimal (or empty/nil) + def safe_string_as_decimal(xml_doc, attribute) + str = string_or_nil(xml_doc, attribute) + if str.nil? + nil + else + BigDecimal(str, exception: false) + end + end + + # Unsafe: A string that has more than just the integer value + def unsafe_string_as_integer(xml_doc, attribute) + str = string_or_nil(xml_doc, attribute) + if str.nil? + nil + else + str.to_i + end + end + + def compose_date(xml_doc, day_str, month_str, year_str) + day = Integer(field_value(xml_doc, "xmlns", day_str), exception: false) + month = Integer(field_value(xml_doc, "xmlns", month_str), exception: false) + year = Integer(field_value(xml_doc, "xmlns", year_str), exception: false) + if day.nil? || month.nil? || year.nil? + nil + else + Time.zone.local(year, month, day) + end + end + + def get_form_name_component(xml_doc, index) + form_name = field_value(xml_doc, "meta", "form-name") + form_type_components = form_name.split("-") + form_type_components[index] + end + + def needs_type(xml_doc) + gn_sh = get_form_name_component(xml_doc, FORM_NAME_INDEX[:needs_type]) + case gn_sh + when "GN" + GN_SH[:general_needs] + when "SH" + GN_SH[:supported_housing] + else + raise "Unknown needstype value: #{gn_sh}" + end + end + + # This does not match renttype (CDS) which is derived by lettings log logic + def rent_type(xml_doc, lar, irproduct) + sr_ar_ir = get_form_name_component(xml_doc, FORM_NAME_INDEX[:rent_type]) + + case sr_ar_ir + when "SR" + RENT_TYPE[:social_rent] + when "AR" + if lar == 1 + RENT_TYPE[:london_affordable_rent] + else + RENT_TYPE[:affordable_rent] + end + when "IR" + if irproduct == IRPRODUCT[:rent_to_buy] + RENT_TYPE[:rent_to_buy] + elsif irproduct == IRPRODUCT[:london_living_rent] + RENT_TYPE[:london_living_rent] + elsif irproduct == IRPRODUCT[:other_intermediate_rent_product] + RENT_TYPE[:other_intermediate_rent_product] + end + else + raise "Could not infer rent type with '#{sr_ar_ir}'" + end + end + + def find_organisation_id(xml_doc, id_field) + old_visible_id = unsafe_string_as_integer(xml_doc, id_field) + organisation = Organisation.find_by(old_visible_id:) + raise "Organisation not found with legacy ID #{old_visible_id}" if organisation.nil? + + organisation.id + end + + def sex(xml_doc, index) + sex = string_or_nil(xml_doc, "P#{index}Sex") + case sex + when "Male" + "M" + when "Female" + "F" + when "Other", "Non-binary" + "X" + when "Refused" + "R" + end + end + + def relat(xml_doc, index) + relat = string_or_nil(xml_doc, "P#{index}Rel") + case relat + when "Child" + "C" + when "Partner" + "P" + when "Other", "Non-binary" + "X" + when "Refused" + "R" + end + end + + def age_known(xml_doc, index, hhmemb) + return nil if hhmemb.present? && index > hhmemb + + age_refused = string_or_nil(xml_doc, "P#{index}AR") + if age_refused.present? + if age_refused.casecmp?("AGE_REFUSED") || age_refused.casecmp?("No") + return 1 # No + else + return 0 # Yes + end + end + 0 + end + + def details_known(index, attributes) + return nil if attributes["hhmemb"].nil? || index > attributes["hhmemb"] + + if attributes["age#{index}_known"] == 1 && + attributes["sex#{index}"] == "R" && + attributes["relat#{index}"] == "R" && + attributes["ecstat#{index}"] == 10 + 1 # No + else + 0 # Yes + end + end + + def previous_postcode_known(xml_doc, previous_postcode, prevloc) + previous_postcode_known = string_or_nil(xml_doc, "Q12bnot") + if previous_postcode_known == "Temporary_or_Unknown" || (previous_postcode.nil? && prevloc.present?) + 0 + elsif previous_postcode.nil? + nil + else + 1 + end + end + + def compose_postcode(xml_doc, outcode, incode) + outcode_value = string_or_nil(xml_doc, outcode) + incode_value = string_or_nil(xml_doc, incode) + if outcode_value.nil? || incode_value.nil? || !"#{outcode_value} #{incode_value}".match(POSTCODE_REGEXP) + nil + else + "#{outcode_value} #{incode_value}" + end + end + + def london_affordable_rent(xml_doc) + lar = unsafe_string_as_integer(xml_doc, "LAR") + if lar == 1 + 1 + else + # We default to No for any other values (nil, not known) + 2 + end + end + + def renewal(rsnvac) + # Relet – renewal of fixed-term tenancy + if rsnvac == 14 + 1 + else + 0 + end + end + + def string_or_nil(xml_doc, attribute) + str = field_value(xml_doc, "xmlns", attribute) + str.presence + end + + def ethnic_group(ethnic) + case ethnic + when 1, 2, 3, 18 + # White + 0 + when 4, 5, 6, 7 + # Mixed + 1 + when 8, 9, 10, 11, 15 + # Asian + 2 + when 12, 13, 14 + # Black + 3 + when 16, 19 + # Others + 4 + when 17 + # Refused + 17 + end + end + + # Letters should be lowercase to match case + def housing_needs(xml_doc, letter) + housing_need = string_or_nil(xml_doc, "Q10-#{letter}") + if housing_need == "Yes" + 1 + else + 0 + end + end + + def net_income_known(xml_doc, earnings) + incref = string_or_nil(xml_doc, "Q8Refused") + if incref == "Refused" + # Tenant prefers not to say + 2 + elsif earnings.nil? + # No + 1 + else + # Yes + 0 + end + end + + def illness_type(xml_doc, index, illness) + illness_type = string_or_nil(xml_doc, "Q10ib-#{index}") + if illness_type == "Yes" && illness == 1 + 1 + elsif illness == 1 + 0 + end + end + + def first_time_let(rsnvac) + if [15, 16, 17].include?(rsnvac) + 1 + else + 0 + end + end + + def declaration(xml_doc) + declaration = string_or_nil(xml_doc, "Qdp") + if declaration == "Yes" + 1 + end + end + + def postcode_known(attributes) + if attributes["postcode_full"].nil? && attributes["la"].nil? + nil + elsif attributes["postcode_full"].nil? + 0 # Assumes we selected No in the form since the LA is present + else + 1 + end + end + + def household_members(xml_doc, previous_status) + hhmemb = safe_string_as_integer(xml_doc, "HHMEMB") + if previous_status.include?("submitted") && hhmemb.nil? + hhmemb = people_with_details(xml_doc).count + return nil if hhmemb.zero? + end + hhmemb + end + + def people_with_details(xml_doc) + ((2..8).map { |x| string_or_nil(xml_doc, "P#{x}Rel") } + [string_or_nil(xml_doc, "P1Sex")]).compact + end + + def tshortfall_known?(xml_doc, attributes) + if attributes["tshortfall"].blank? && attributes["hbrentshortfall"] == 1 && overridden?(xml_doc, "xmlns", "Q18dyes") + 1 + else + 0 + end + end + + def allocation_system(value) + case value + when 1 + 1 + when 2 + 0 + end + end + + def allocation_system_unknown(cbl, chr, cap) + allocation_values = [cbl, chr, cap] + if allocation_values.all?(&:nil?) + nil + elsif allocation_values.all? { |att| att&.zero? } + 1 + else + 0 + end + end + + def apply_date_consistency!(attributes) + return if attributes["voiddate"].nil? || attributes["startdate"].nil? + + if attributes["voiddate"] > attributes["startdate"] + attributes.delete("voiddate") + end + end + + def apply_household_consistency!(attributes) + (2..8).each do |index| + next if attributes["age#{index}"].nil? + + if attributes["age#{index}"] < 16 && attributes["relat#{index}"] == "R" + attributes["relat#{index}"] = "C" + end + end + end + + def household_charge(xml_doc) + value = string_or_nil(xml_doc, "Q18c") + start_year = Integer(get_form_name_component(xml_doc, FORM_NAME_INDEX[:start_year])) + + if start_year <= 2021 + # Yes means that there are no charges (2021 or earlier) + value && value.include?("Yes") ? 1 : 0 + else + # Yes means that there are charges (2022 onwards) + value && value.include?("Yes") ? 0 : 1 + end + end + + def set_partial_charges_to_zero(attributes) + unless attributes["brent"].nil? && + attributes["scharge"].nil? && + attributes["pscharge"].nil? && + attributes["supcharg"].nil? + attributes["brent"] ||= BigDecimal("0.0") + attributes["scharge"] ||= BigDecimal("0.0") + attributes["pscharge"] ||= BigDecimal("0.0") + attributes["supcharg"] ||= BigDecimal("0.0") + end + end + + def is_carehome(scheme) + return nil unless scheme + + if [2, 3, 4].include?(scheme.registered_under_care_act_before_type_cast) + 1 + else + 0 + end + end + + def discrepancy? + !!@discrepancy + end + end +end diff --git a/config/environments/development.rb b/config/environments/development.rb index f492a3259..3e5f108aa 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -90,9 +90,7 @@ Rails.application.configure do # config.action_cable.disable_request_forgery_protection = true # see https://discuss.rubyonrails.org/t/cve-2022-32224-possible-rce-escalation-bug-with-serialized-columns-in-active-record/81017 - config.active_record.yaml_column_permitted_classes = [Time] - - config.active_job.queue_adapter = :resque + config.active_record.yaml_column_permitted_classes = [Time] Rack::MiniProfiler.config.storage = Rack::MiniProfiler::MemoryStore end diff --git a/dump.rdb b/dump.rdb index d044bf258651440392fd86f7ced63244ffa28bac..cfee83a42a1bdc79e7f0cff5893cfc2da738fea9 100644 GIT binary patch literal 162492 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 bIg)>z*az(vLV{5L!OXook6nA@?nVC(l9&W_ delta 88 zcmV-e0H^=F^$FUu0+28#MW8cd`UrJ%Wn?XFWo^R1*&+b?3}J6(EpT#WVQpe;WxxRb u0Q(e?S3I-H5L_&?DNXx2w=!4(Vh6XBZvpNGw;Wdjm?H=?WCkzYE!ItkJ|mt0