mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-06-03 01:34:35 -04:00
INA-5 | Use fractal
This commit is contained in:
parent
5d744ed8e4
commit
de4adadfae
@ -14,15 +14,20 @@ namespace App\Http\Controllers;
|
|||||||
use App\Http\Requests\TaskScheduler\CreateScheduledTaskRequest;
|
use App\Http\Requests\TaskScheduler\CreateScheduledTaskRequest;
|
||||||
use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest;
|
use App\Http\Requests\TaskScheduler\UpdateScheduledJobRequest;
|
||||||
use App\Http\Requests\TaskScheduler\UpdateScheduleRequest;
|
use App\Http\Requests\TaskScheduler\UpdateScheduleRequest;
|
||||||
|
use App\Jobs\Ninja\TaskScheduler;
|
||||||
use App\Jobs\Report\ProfitAndLoss;
|
use App\Jobs\Report\ProfitAndLoss;
|
||||||
use App\Models\ScheduledJob;
|
use App\Models\ScheduledJob;
|
||||||
use App\Models\Scheduler;
|
use App\Models\Scheduler;
|
||||||
|
use App\Transformers\TaskSchedulerTransformer;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Symfony\Component\HttpFoundation\Request;
|
use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
class TaskSchedulerController extends BaseController
|
class TaskSchedulerController extends BaseController
|
||||||
{
|
{
|
||||||
|
protected $entity_type = TaskScheduler::class;
|
||||||
|
protected $entity_transformer = TaskSchedulerTransformer::class;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @OA\GET(
|
* @OA\GET(
|
||||||
* path="/api/v1/task_scheduler/",
|
* path="/api/v1/task_scheduler/",
|
||||||
@ -49,7 +54,12 @@ class TaskSchedulerController extends BaseController
|
|||||||
|
|
||||||
public function index()
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -46,12 +46,15 @@ class TaskScheduler implements ShouldQueue
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
|
foreach (MultiDB::$dbs as $db) {
|
||||||
|
|
||||||
|
MultiDB::setDB($db);
|
||||||
$pending_schedulers = $this->fetchJobs();
|
$pending_schedulers = $this->fetchJobs();
|
||||||
foreach ($pending_schedulers as $scheduler) {
|
foreach ($pending_schedulers as $scheduler) {
|
||||||
$this->doJob($scheduler);
|
$this->doJob($scheduler);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private function doJob(Scheduler $scheduler)
|
private function doJob(Scheduler $scheduler)
|
||||||
{
|
{
|
||||||
@ -61,7 +64,6 @@ class TaskScheduler implements ShouldQueue
|
|||||||
if (!$job || !$company) {
|
if (!$job || !$company) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
MultiDB::setDb($company->db);
|
|
||||||
$parameters = $job->parameters;
|
$parameters = $job->parameters;
|
||||||
|
|
||||||
|
|
||||||
|
22
app/Transformers/ScheduledJobTransformer.php
Normal file
22
app/Transformers/ScheduledJobTransformer.php
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace App\Transformers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Models\ScheduledJob;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
|
class ScheduledJobTransformer extends EntityTransformer
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
public function transform(ScheduledJob $job)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $this->encodePrimaryKey($job->id),
|
||||||
|
'action_name' => $job->action_name,
|
||||||
|
'parameters' => $job->parameters
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
39
app/Transformers/TaskSchedulerTransformer.php
Normal file
39
app/Transformers/TaskSchedulerTransformer.php
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace App\Transformers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Models\ScheduledJob;
|
||||||
|
use App\Models\Scheduler;
|
||||||
|
use App\Utils\Traits\MakesHash;
|
||||||
|
|
||||||
|
class TaskSchedulerTransformer extends EntityTransformer
|
||||||
|
{
|
||||||
|
use MakesHash;
|
||||||
|
|
||||||
|
protected $defaultIncludes = [
|
||||||
|
'job'
|
||||||
|
];
|
||||||
|
|
||||||
|
public function includeJob(Scheduler $scheduler)
|
||||||
|
{
|
||||||
|
$transformer = new ScheduledJobTransformer($this->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,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user