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