def call(params)
results = []
client = params.gdc_gd_client
development_client = params.development_client
schedule_additional_params = params.schedule_additional_params || params.additional_params
schedule_additional_hidden_params = params.schedule_additional_hidden_params || params.additional_hidden_params
params.synchronize.peach do |info|
from_project = info.from
to_projects = info.to
from = development_client.projects(from_project) || fail("Invalid 'from' project specified - '#{from_project}'")
has_cycle_trigger = exist_cycle_trigger(from)
to_projects.peach do |entry|
pid = entry[:pid]
to_project = client.projects(pid) || fail("Invalid 'to' project specified - '#{pid}'")
params.gdc_logger.info "Transferring Schedules, from project: '#{from.title}', PID: '#{from.pid}', to project: '#{to_project.title}', PID: '#{to_project.pid}'"
res = GoodData::Project.transfer_schedules(from, to_project, has_cycle_trigger).sort_by do |item|
item[:status]
end
results += res.map do |item|
schedule = item[:schedule]
schedule.update_params(schedule_additional_params || {})
schedule.update_hidden_params(schedule_additional_hidden_params || {})
schedule.disable
schedule.save
{
from: from.pid,
to: to_project.pid,
process_name: item[:process].name,
schedule_name: schedule.name,
type: item[:process].type,
state: item[:state]
}
end
end
end
results
end