def call(
urn:,
name:,
site:,
status: nil,
systm_one_code: nil,
url: nil,
address_line_1: nil,
address_line_2: nil,
address_town: nil,
address_postcode: nil,
gias_establishment_number: nil,
gias_local_authority_code: nil,
gias_phase: nil,
add_to_team: false,
**
)
MavisCLI.load_rails
school = Location.find_by(urn:, site: nil)
raise "School with URN #{urn} doesn't exist." unless school
if Location.exists?(urn:, site:)
raise "Site #{site} already exists for URN #{urn}."
end
MavisCLI::Schools::Create.new.call(
address_line_1: address_line_1 || school&.address_line_1,
address_line_2: address_line_2 || school&.address_line_2,
address_postcode: address_postcode || school&.address_postcode,
address_town: address_town || school&.address_town,
gias_establishment_number:
gias_establishment_number || school&.gias_establishment_number,
gias_local_authority_code:
gias_local_authority_code || school&.gias_local_authority_code,
gias_phase: gias_phase || school&.gias_phase,
gias_year_groups: school&.gias_year_groups,
name:,
site:,
status: status || school&.status,
systm_one_code: systm_one_code || school&.systm_one_code,
url: url || school&.url,
urn:
)
location = Location.find_by!(urn:, site:)
puts "Location #{location.id} has been created. URN: #{location.urn}, Site: #{location.site}"
if add_to_team
team = school.teams.uniq.sole
subteam =
TeamLocation.find_by!(
academic_year: AcademicYear.pending,
location: school
).subteam
MavisCLI::Schools::AddToTeam.new.call(
team_workgroup: team.workgroup,
subteam_name: subteam.name,
urns: [location.urn_and_site]
)
puts "Location #{location.id} has been added to team #{team.name}"
end
end