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.
79 lines
3.3 KiB
79 lines
3.3 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) |
|
return if logs_with_missing_addresses.empty? |
|
|
|
generate_missing_lettings_addresses_csv(logs_with_missing_addresses) |
|
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) |
|
return if logs_with_missing_addresses.empty? |
|
|
|
generate_missing_sales_addresses_csv(logs_with_missing_addresses) |
|
end |
|
|
|
def create_missing_lettings_town_or_city_csv |
|
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) |
|
return if logs_with_missing_town_or_city.empty? |
|
|
|
generate_missing_lettings_addresses_csv(logs_with_missing_town_or_city) |
|
end |
|
|
|
def create_missing_sales_town_or_city_csv |
|
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) |
|
return if logs_with_missing_town_or_city.empty? |
|
|
|
generate_missing_sales_addresses_csv(logs_with_missing_town_or_city) |
|
end |
|
|
|
private |
|
|
|
def generate_missing_lettings_addresses_csv(logs) |
|
CSV.generate(headers: true) do |csv| |
|
csv << ["Lettings log ID", "Tenancy start date", "Tenant code", "Property code", "Log owner", "Owning organisation name", "Managing organisation name", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"] |
|
|
|
logs.each do |log| |
|
csv << [log.id, |
|
log.startdate&.to_date, |
|
log.tenancycode, |
|
log.propcode, |
|
log.created_by&.email, |
|
log.owning_organisation&.name, |
|
log.managing_organisation&.name, |
|
log.address_line1, |
|
log.address_line2, |
|
log.town_or_city, |
|
log.county, |
|
log.postcode_full, |
|
log.la] |
|
end |
|
end |
|
end |
|
|
|
def generate_missing_sales_addresses_csv(logs) |
|
CSV.generate(headers: true) do |csv| |
|
csv << ["Sales log ID", "Sale completion date", "Purchaser code", "Log owner", "Owning organisation name", "Address line 1", "Address line 2", "Town or City", "County", "Postcode", "Local authority"] |
|
|
|
logs.each do |log| |
|
csv << [log.id, |
|
log.saledate&.to_date, |
|
log.purchid, |
|
log.created_by&.email, |
|
log.owning_organisation&.name, |
|
log.address_line1, |
|
log.address_line2, |
|
log.town_or_city, |
|
log.county, |
|
log.postcode_full, |
|
log.la] |
|
end |
|
end |
|
end |
|
end |
|
end
|
|
|