15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'app/services/collavre/tools/cron_list_service.rb', line 15
def call(creative_id: nil)
raise "Current.user is required" unless Current.user
tasks = SolidQueue::RecurringTask.where(static: false)
if creative_id.present?
creative = Creative.find_by(id: creative_id)
return { error: "Creative not found", id: creative_id } unless creative
unless creative.has_permission?(Current.user, :read)
return { error: "No read permission on this Creative", id: creative_id }
end
tasks = tasks.where("key LIKE ?", "cron_#{creative_id.to_i}_%")
end
results = tasks.filter_map do |task|
args = parse_arguments(task)
task_creative_id = args["creative_id"] || parse_creative_id_from_key(task.key)
task_creative = Creative.find_by(id: task_creative_id)
next unless task_creative&.has_permission?(Current.user, :read)
{
key: task.key,
schedule: task.schedule,
description: task.description,
creative_id: task_creative_id,
topic_id: args["topic_id"],
agent_id: args["agent_id"],
message: args["message"],
created_at: task.created_at&.iso8601
}
end
{ success: true, cron_jobs: results, count: results.size }
end
|