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.

399 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,
)
12 months ago
OrganisationRelationship.find_or_create_by!(
parent_organisation: absorbing_organisation_stock_owner,
child_organisation: absorbing_organisation,
)
12 months ago
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",
)
Cldc 1227 supported housing index (#648) * Added test file for supported housing schemes * Added factory bot for supported housing schemes * swapped managing agent to org for scheme * created migration for schemes * created model for scheme * added migration to add foreign key to the schemes table * missing spec and log spec for supported housing * fixed failing specs * added schemes migration * next step feature * added route * added controller * added index * added all schemes * correct test for scheme * added view * route alias for schemes * spec for index schemes * failing scheme controller spec * added simple view, scheme seed and authentication * spec for index schemes list * rubocop - thanks * better seed * added Heading to org * added feature flag to hide supported services on prod * added feature flag testing nav items * testing coordinator user can see the link to supported housing * moved toggle to a different place * moved toggle to PrimaryNavigationComponent * testing not being signed in on support pages * testing showing search bar * added search bar * testing subset of schemes for coordinator user * rubocop * failing test for title in page * code to expose title * pagination with tests without searching * partial for schemes * scoping out all but support and coord users * searching schemes code and test * searching via code and org tests * searching by org name tests * searching by org name code * search_by tests * search_by code * search_by woops must search by service * searching schemes feature * tests for data coordinator user * redirect for data coordinator user * testing org schemes for coordiantor user * schemes in org controller for coordiantor user * refactored specs moved into orgs what belongs there * view for org schemes * rubocop * accebility field * accebility field on org page * correct return when on org schemes * passing search test on the orgs page * highlight nav tab * navs helper done * rubocop * fixed failing tests for support user * correct view * how did I manage to delete this file? * checking you cant access schems unathorized * moved test * renamed service name * correct title for sup user schemes org * testing not being able to view any other orgs supported housing for coordinator user * Trigger WF * last fix * aded has many to org for schemes * rubocop Co-authored-by: Ted <ted.booton@madetech.com>
3 years ago
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",
)
Cldc 1227 supported housing index (#648) * Added test file for supported housing schemes * Added factory bot for supported housing schemes * swapped managing agent to org for scheme * created migration for schemes * created model for scheme * added migration to add foreign key to the schemes table * missing spec and log spec for supported housing * fixed failing specs * added schemes migration * next step feature * added route * added controller * added index * added all schemes * correct test for scheme * added view * route alias for schemes * spec for index schemes * failing scheme controller spec * added simple view, scheme seed and authentication * spec for index schemes list * rubocop - thanks * better seed * added Heading to org * added feature flag to hide supported services on prod * added feature flag testing nav items * testing coordinator user can see the link to supported housing * moved toggle to a different place * moved toggle to PrimaryNavigationComponent * testing not being signed in on support pages * testing showing search bar * added search bar * testing subset of schemes for coordinator user * rubocop * failing test for title in page * code to expose title * pagination with tests without searching * partial for schemes * scoping out all but support and coord users * searching schemes code and test * searching via code and org tests * searching by org name tests * searching by org name code * search_by tests * search_by code * search_by woops must search by service * searching schemes feature * tests for data coordinator user * redirect for data coordinator user * testing org schemes for coordiantor user * schemes in org controller for coordiantor user * refactored specs moved into orgs what belongs there * view for org schemes * rubocop * accebility field * accebility field on org page * correct return when on org schemes * passing search test on the orgs page * highlight nav tab * navs helper done * rubocop * fixed failing tests for support user * correct view * how did I manage to delete this file? * checking you cant access schems unathorized * moved test * renamed service name * correct title for sup user schemes org * testing not being able to view any other orgs supported housing for coordinator user * Trigger WF * last fix * aded has many to org for schemes * rubocop Co-authored-by: Ted <ted.booton@madetech.com>
3 years ago
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