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.
 
 
 
 

398 lines
11 KiB

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the bin/rails db:seed command (or created alongside the database with db:setup).
#
# Examples:
#
# movies = Movie.create([{ name: 'Star Wars' }, { name: 'Lord of the Rings' }])
# Character.create(name: 'Luke', movie: movies.first)
# rubocop:disable Rails/Output
def create_data_protection_confirmation(user)
DataProtectionConfirmation.find_or_create_by!(
organisation: user.organisation,
confirmed: true,
data_protection_officer: user,
signed_at: Time.zone.local(2019, 1, 1),
data_protection_officer_email: user.email,
data_protection_officer_name: user.name,
)
end
unless Rails.env.test?
absorbing_organisation = Organisation.find_or_create_by!(
name: "Absorbing organisation",
address_line1: "Absorbing organisation address line 1",
address_line2: "Absorbing organisation address line 2",
postcode: "SW1P 4DF",
holds_own_stock: false,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "LA",
) do
info = "Seeded Absorbing organisation Organisation"
if Rails.env.development?
pp info
else
Rails.logger.info info
end
end
merging_organisation1 = Organisation.find_or_create_by!(
name: "Merging organisation 1",
address_line1: "Merging organisation 1 address line 1",
address_line2: "Merging organisation 1 address line 2",
postcode: "BA21 4AT",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "PRP",
)
merging_organisation2 = Organisation.find_or_create_by!(
name: "Merging organisation 2",
address_line1: "Merging organisation 2 address line 1",
address_line2: "Merging organisation 2 address line 2",
postcode: "BA21 4AT",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "PRP",
)
absorbing_organisation_stock_owner = Organisation.find_or_create_by!(
name: "Absorbing organisation Stock Owner",
address_line1: "2 Marsham Street",
address_line2: "London",
postcode: "SW1P 4DF",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "LA",
)
absorbing_organisation_managing_agent = Organisation.find_or_create_by!(
name: "Absorbing organisation Managing Agent",
address_line1: "2 Marsham Street",
address_line2: "London",
postcode: "SW1P 4DF",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "LA",
)
merging_organisation1_stock_owner = Organisation.find_or_create_by!(
name: "Merging organisation 1 Stock Owner",
address_line1: "2 Marsham Street",
address_line2: "London",
postcode: "SW1P 4DF",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "LA",
)
merging_organisation2_managing_agent = Organisation.find_or_create_by!(
name: "Merging organisation 2 Managing Agent",
address_line1: "2 Marsham Street",
address_line2: "London",
postcode: "SW1P 4DF",
holds_own_stock: true,
other_stock_owners: "None",
managing_agents_label: "None",
provider_type: "PRP",
)
# organisation relationships
OrganisationRelationship.find_or_create_by!(
parent_organisation: absorbing_organisation,
child_organisation: absorbing_organisation_managing_agent,
)
OrganisationRelationship.find_or_create_by!(
parent_organisation: absorbing_organisation_stock_owner,
child_organisation: absorbing_organisation,
)
OrganisationRelationship.find_or_create_by!(
parent_organisation: merging_organisation1_stock_owner,
child_organisation: merging_organisation1,
)
OrganisationRelationship.find_or_create_by!(
parent_organisation: merging_organisation2,
child_organisation: merging_organisation2_managing_agent,
)
# users
User.find_or_create_by!(
name: "Absorbing organisation Provider",
email: "provider@example.com",
organisation: absorbing_organisation,
role: "data_provider",
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
end
User.find_or_create_by!(
name: "Absorbing organisation Coordinator",
email: "coordinator@example.com",
organisation: absorbing_organisation,
role: "data_coordinator",
is_dpo: true,
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
user.is_dpo = true
create_data_protection_confirmation(user)
end
User.find_or_create_by!(
name: "Absorbing organisation Support",
email: "support@example.com",
organisation: absorbing_organisation,
role: "support",
is_dpo: true,
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
create_data_protection_confirmation(user)
end
merging_organisation1_provider = User.find_or_create_by!(
name: "Merging organisation 1 Provider",
email: "merging_organisation1_provider@example.com",
organisation: merging_organisation1,
role: "data_provider",
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
end
User.find_or_create_by!(
name: "Merging organisation 1 Coordinator",
email: "merging_organisation1_coordinator@example.com",
organisation: merging_organisation1,
role: "data_coordinator",
is_dpo: true,
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
user.is_dpo = true
create_data_protection_confirmation(user)
end
User.find_or_create_by!(
name: "Merging organisation 2 Provider",
email: "merging_organisation2_provider@example.com",
organisation: merging_organisation2,
role: "data_provider",
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
end
User.find_or_create_by!(
name: "Merging organisation 2 Coordinator",
email: "merging_organisation2_coordinator@example.com",
organisation: merging_organisation2,
role: "data_coordinator",
is_dpo: true,
) do |user|
user.password = "password"
user.confirmed_at = Time.zone.now
user.is_dpo = true
create_data_protection_confirmation(user)
end
# sales logs
SalesLog.find_or_create_by!(
created_by: merging_organisation1_provider,
owning_organisation: merging_organisation1,
managing_organisation: merging_organisation1,
saledate: Date.new(2023, 4, 1),
purchid: "Merging organisation 1 sale date before merge",
ownershipsch: 1,
type: 2,
jointpur: 1,
jointmore: 1,
)
SalesLog.find_or_create_by!(
created_by: merging_organisation1_provider,
owning_organisation: merging_organisation1,
managing_organisation: merging_organisation1,
saledate: Date.new(2023, 12, 1),
purchid: "Merging organisation 1 sale date after merge",
ownershipsch: 2,
type: 9,
jointpur: 1,
jointmore: 1,
)
# lettings logs
LettingsLog.find_or_create_by!(
created_by: merging_organisation1_provider,
owning_organisation: merging_organisation1,
managing_organisation: merging_organisation1,
startdate: Date.new(2023, 4, 1),
propcode: "Merging organisation 1 start date before merge",
renewal: 1,
rent_type: 1,
)
LettingsLog.find_or_create_by!(
created_by: merging_organisation1_provider,
owning_organisation: merging_organisation1,
managing_organisation: merging_organisation1,
startdate: Date.new(2023, 12, 1),
propcode: "Merging organisation 1 start date after merge",
renewal: 1,
rent_type: 1,
)
LettingsLog.find_or_create_by!(
created_by: merging_organisation2_provider,
owning_organisation: merging_organisation2,
managing_organisation: merging_organisation2,
startdate: Date.new(2023, 4, 1),
propcode: "Merging organisation 2 start date before merge",
renewal: 1,
rent_type: 1,
)
LettingsLog.find_or_create_by!(
created_by: merging_organisation2_provider,
owning_organisation: merging_organisation2,
managing_organisation: merging_organisation2,
startdate: Date.new(2023, 12, 1),
propcode: "Merging organisation 2 start date after merge",
renewal: 1,
rent_type: 1,
)
# schemes
scheme1 = Scheme.create!(
service_name: "Merging organisation 1 scheme",
sensitive: 0,
registered_under_care_act: 1,
support_type: 2,
scheme_type: 4,
intended_stay: "M",
primary_client_group: "O",
has_other_client_group: 1,
secondary_client_group: "H",
owning_organisation: merging_organisation1,
arrangement_type: "D",
confirmed: true,
created_at: Time.zone.now,
)
scheme2 = Scheme.create!(
service_name: "Merging organisation 2 scheme",
sensitive: 0,
registered_under_care_act: 1,
support_type: 2,
scheme_type: 5,
intended_stay: "S",
primary_client_group: "D",
secondary_client_group: "E",
has_other_client_group: 1,
owning_organisation: merging_organisation2,
arrangement_type: "D",
confirmed: true,
created_at: Time.zone.now,
)
Scheme.create!(
service_name: "Absorbing organisation scheme",
sensitive: 1,
registered_under_care_act: 1,
support_type: 4,
scheme_type: 7,
intended_stay: "X",
primary_client_group: "G",
has_other_client_group: 1,
secondary_client_group: "R",
owning_organisation: absorbing_organisation,
arrangement_type: "D",
confirmed: true,
created_at: Time.zone.now,
)
Location.create!(
scheme: scheme1,
location_code: "E09000033",
location_admin_district: "Westminster",
postcode: "CU193AA",
name: "Rectory Road",
type_of_unit: 4,
units: 1,
mobility_type: "N",
)
Location.create!(
scheme: scheme1,
location_code: "E09000033",
location_admin_district: "Westminster",
postcode: "DM250DC",
name: "Smithy Lane",
type_of_unit: 1,
units: 1,
mobility_type: "W",
)
Location.create!(
scheme: scheme2,
location_code: "E09000033",
location_admin_district: "Westminster",
postcode: "YX130WP",
name: "Smithy Lane",
type_of_unit: 2,
units: 1,
mobility_type: "W",
)
if LocalAuthority.count.zero?
la_path = "config/local_authorities_data/initial_local_authorities.csv"
service = Imports::LocalAuthoritiesService.new(path: la_path)
service.call
end
if (Rails.env.development? || Rails.env.review?) && LocalAuthorityLink.count.zero?
links_data_paths = ["config/local_authorities_data/local_authority_links_2023.csv", "config/local_authorities_data/local_authority_links_2022.csv"]
links_data_paths.each do |path|
service = Imports::LocalAuthorityLinksService.new(path:)
service.call
end
pp "Seeded local authority links"
end
if LaRentRange.count.zero?
Dir.glob("config/rent_range_data/*.csv").each do |path|
start_year = File.basename(path, ".csv")
service = Imports::RentRangesService.new(start_year:, path:)
service.call
end
end
if LaSaleRange.count.zero?
Dir.glob("config/sale_range_data/*.csv").each do |path|
start_year = File.basename(path, ".csv")
service = Imports::SaleRangesService.new(start_year:, path:)
service.call
end
end
end
if LocalAuthority.count.zero?
path = "config/local_authorities_data/initial_local_authorities.csv"
service = Imports::LocalAuthoritiesService.new(path:)
service.call
end
# rubocop:enable Rails/Output