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.
37 lines
2.1 KiB
37 lines
2.1 KiB
namespace :merge do |
|
desc "Merge organisations into an existing organisation" |
|
task :merge_organisations, %i[absorbing_organisation_id merging_organisation_ids merge_date] => :environment do |_task, args| |
|
absorbing_organisation_id = args[:absorbing_organisation_id] |
|
merging_organisation_ids = args[:merging_organisation_ids]&.split(" ")&.map(&:to_i) |
|
begin |
|
merge_date = args[:merge_date].present? ? Date.parse(args[:merge_date]) : nil |
|
rescue StandardError |
|
raise "Usage: rake merge:merge_organisations[absorbing_organisation_id, merging_organisation_ids, merge_date]. Merge date must be in format YYYY-MM-DD" |
|
end |
|
|
|
if merging_organisation_ids.blank? || absorbing_organisation_id.blank? |
|
raise "Usage: rake merge:merge_organisations[absorbing_organisation_id, merging_organisation_ids, merge_date]" |
|
end |
|
|
|
service = Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:) |
|
service.call |
|
end |
|
|
|
desc "Merge organisations into an existing organisation, make the absorbing organisation active from merge date only" |
|
task :merge_organisations_into_new_organisation, %i[absorbing_organisation_id merging_organisation_ids merge_date] => :environment do |_task, args| |
|
absorbing_organisation_id = args[:absorbing_organisation_id] |
|
merging_organisation_ids = args[:merging_organisation_ids]&.split(" ")&.map(&:to_i) |
|
begin |
|
merge_date = args[:merge_date].present? ? Date.parse(args[:merge_date]) : nil |
|
rescue StandardError |
|
raise "Usage: rake merge:merge_organisations_into_new_organisation[absorbing_organisation_id, merging_organisation_ids, merge_date]. Merge date must be in format YYYY-MM-DD" |
|
end |
|
|
|
if merging_organisation_ids.blank? || absorbing_organisation_id.blank? |
|
raise "Usage: rake merge:merge_organisations_into_new_organisation[absorbing_organisation_id, merging_organisation_ids, merge_date]" |
|
end |
|
|
|
service = Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:, absorbing_organisation_active_from_merge_date: true) |
|
service.call |
|
end |
|
end
|
|
|