def call(params)
client = params.gdc_gd_client
domain = client.domain(params.organization) || fail("Invalid domain name specified - #{params.organization}")
data_product = params.data_product
all_segments = domain.segments(:all, data_product)
segment_names = params.segments.map do |segment|
segment.segment_id.downcase
end
segments = all_segments.select do |segment|
segment_names.include?(segment.segment_id.downcase)
end
client_projects = ThreadSafe::Hash.new
results = segments.pmap do |segment|
segment.clients.map do |segment_client|
project = segment_client.project
res = {
client_id: segment_client.client_id,
project: project && project.pid
}
client_projects[segment_client.client_id] = {
segment_client: segment_client,
project: project
}
res
end
end
{
results: results.flatten,
params: {
client_projects: client_projects
}
}
end