Submit social housing lettings and sales data (CORE)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

171 lines
6.4 KiB

module Csv
class MissingAddressesCsvService
def initialize(organisation)
@organisation = organisation
end
def create_missing_lettings_addresses_csv
logs_with_missing_addresses = @organisation.managed_lettings_logs
.imported
.filter_by_year(2023)
.where(needstype: 1, address_line1: nil, town_or_city: nil, uprn_known: [0, nil])
.where.not(old_form_id: nil)
logs_with_missing_town_or_city = @organisation.managed_lettings_logs
.imported
.filter_by_year(2023)
.where(needstype: 1, town_or_city: nil, uprn_known: [0, nil])
.where.not(old_form_id: nil)
.where.not(address_line1: nil)
logs_with_wrong_uprn = if JSON.parse(ENV["SKIP_UPRN_ISSUE_ORG_IDS"]).include?(@organisation.id)
[]
else
@organisation.managed_lettings_logs
.imported
.filter_by_year(2023)
.where(needstype: 1)
.where.not(uprn: nil)
.where("uprn = propcode OR uprn = tenancycode or town_or_city = 'Bristol'")
end
return if logs_with_missing_addresses.empty? && logs_with_missing_town_or_city.empty? && logs_with_wrong_uprn.empty?
CSV.generate(headers: true) do |csv|
csv << ["Issue type", "Lettings log ID", "Tenancy start date", "Tenant code", "Property code", "Log owner", "Owning organisation name", "Managing organisation name", "UPRN", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"]
logs_with_missing_addresses.each do |log|
csv << ["Full address required",
log.id,
log.startdate&.to_date,
log.tenancycode,
log.propcode,
log.created_by&.email,
log.owning_organisation&.name,
log.managing_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
logs_with_missing_town_or_city.each do |log|
csv << ["Missing town or city",
log.id,
log.startdate&.to_date,
log.tenancycode,
log.propcode,
log.created_by&.email,
log.owning_organisation&.name,
log.managing_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
logs_with_wrong_uprn.each do |log|
csv << ["UPRN issues",
log.id,
log.startdate&.to_date,
log.tenancycode,
log.propcode,
log.created_by&.email,
log.owning_organisation&.name,
log.managing_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
end
end
def create_missing_sales_addresses_csv
logs_with_missing_addresses = @organisation.sales_logs
.imported
.filter_by_year(2023)
.where(address_line1: nil, town_or_city: nil, uprn_known: [0, nil])
.where.not(old_form_id: nil)
logs_with_missing_town_or_city = @organisation.sales_logs
.imported
.filter_by_year(2023)
.where(town_or_city: nil, uprn_known: [0, nil])
.where.not(old_form_id: nil)
.where.not(address_line1: nil)
logs_with_wrong_uprn = if JSON.parse(ENV["SKIP_UPRN_ISSUE_ORG_IDS"]).include?(@organisation.id)
[]
else
@organisation.sales_logs
.imported
.filter_by_year(2023)
.where.not(uprn: nil)
.where("uprn = purchid or town_or_city = 'Bristol'")
end
return if logs_with_missing_addresses.empty? && logs_with_missing_town_or_city.empty? && logs_with_wrong_uprn.empty?
CSV.generate(headers: true) do |csv|
csv << ["Issue type", "Sales log ID", "Sale completion date", "Purchaser code", "Log owner", "Owning organisation name", "UPRN", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"]
logs_with_missing_addresses.each do |log|
csv << ["Full address required",
log.id,
log.saledate&.to_date,
log.purchid,
log.created_by&.email,
log.owning_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
logs_with_missing_town_or_city.each do |log|
csv << ["Missing town or city",
log.id,
log.saledate&.to_date,
log.purchid,
log.created_by&.email,
log.owning_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
logs_with_wrong_uprn.each do |log|
csv << ["UPRN issues",
log.id,
log.saledate&.to_date,
log.purchid,
log.created_by&.email,
log.owning_organisation&.name,
log.uprn,
log.address_line1,
log.address_line2,
log.town_or_city,
log.county,
log.postcode_full,
log.la]
end
end
end
end
end