diff --git a/app/Http/Controllers/TaskSchedulerController.php b/app/Http/Controllers/TaskSchedulerController.php index f7732a3c5982..2d35bb34def4 100644 --- a/app/Http/Controllers/TaskSchedulerController.php +++ b/app/Http/Controllers/TaskSchedulerController.php @@ -14,15 +14,20 @@ namespace App\Http\Controllers; use App\Http\Requests\TaskScheduler\CreateScheduledTaskRequest; use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest; use App\Http\Requests\TaskScheduler\UpdateScheduleRequest; +use App\Jobs\Ninja\TaskScheduler; use App\Jobs\Report\ProfitAndLoss; use App\Models\ScheduledJob; use App\Models\Scheduler; +use App\Transformers\TaskSchedulerTransformer; use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; use Symfony\Component\HttpFoundation\Request; class TaskSchedulerController extends BaseController { + protected $entity_type = TaskScheduler::class; + protected $entity_transformer = TaskSchedulerTransformer::class; + /** * @OA\GET( * path="/api/v1/task_scheduler/", @@ -49,7 +54,12 @@ class TaskSchedulerController extends BaseController public function index() { - return Scheduler::where('company_id', auth()->user()->company()->id)->cursor(); + set_time_limit(45); + + $schedulers = Scheduler::where('company_id', auth()->user()->company()->id); + + return $this->listResponse($schedulers); + } /** @@ -116,9 +126,9 @@ class TaskSchedulerController extends BaseController * ) */ - public function show(Scheduler $scheduler): Scheduler + public function show(Scheduler $scheduler) { - return $scheduler; + return $this->itemResponse($scheduler); } /** diff --git a/app/Jobs/Ninja/TaskScheduler.php b/app/Jobs/Ninja/TaskScheduler.php index 106281c58d70..0adc6f7d22d6 100644 --- a/app/Jobs/Ninja/TaskScheduler.php +++ b/app/Jobs/Ninja/TaskScheduler.php @@ -46,10 +46,13 @@ class TaskScheduler implements ShouldQueue */ public function handle() { + foreach (MultiDB::$dbs as $db) { - $pending_schedulers = $this->fetchJobs(); - foreach ($pending_schedulers as $scheduler) { - $this->doJob($scheduler); + MultiDB::setDB($db); + $pending_schedulers = $this->fetchJobs(); + foreach ($pending_schedulers as $scheduler) { + $this->doJob($scheduler); + } } } @@ -61,7 +64,6 @@ class TaskScheduler implements ShouldQueue if (!$job || !$company) { return; } - MultiDB::setDb($company->db); $parameters = $job->parameters; diff --git a/app/Transformers/ScheduledJobTransformer.php b/app/Transformers/ScheduledJobTransformer.php new file mode 100644 index 000000000000..2baae9e8cba5 --- /dev/null +++ b/app/Transformers/ScheduledJobTransformer.php @@ -0,0 +1,22 @@ + $this->encodePrimaryKey($job->id), + 'action_name' => $job->action_name, + 'parameters' => $job->parameters + ]; + } +} diff --git a/app/Transformers/TaskSchedulerTransformer.php b/app/Transformers/TaskSchedulerTransformer.php new file mode 100644 index 000000000000..b11b51be5ec5 --- /dev/null +++ b/app/Transformers/TaskSchedulerTransformer.php @@ -0,0 +1,39 @@ +serializer); + + return $this->item($scheduler->job, $transformer, ScheduledJob::class); + } + + public function transform(Scheduler $scheduler) + { + return [ + 'id' => $this->encodePrimaryKey($scheduler->id), + 'company_id' => $this->encodePrimaryKey($scheduler->user_id), + 'paused' => $scheduler->paused, + 'archived' => $scheduler->archived, + 'repeat_every' => $scheduler->repeat_every, + 'start_from' => $scheduler->start_from, + 'scheduled_run' => $scheduler->scheduled_run, + ]; + } + +}