fetchJobs(); Scheduler::with('company','job') ->where('paused', false) ->where('is_deleted', false) ->where('scheduled_run', '<', now()) ->cursor() ->each(function ($scheduler){ $this->doJob($scheduler); }); } } private function doJob(Scheduler $scheduler) { nlog("Doing job {$scheduler->id}"); $job = $scheduler->job; $company = $scheduler->company; if (!$job) return; $parameters = $job->parameters; switch ($job->action_name) { case ScheduledJob::CREATE_CLIENT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'contacts.csv'); break; case ScheduledJob::CREATE_CLIENT_CONTACT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'clients.csv'); break; case ScheduledJob::CREATE_CREDIT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'credits.csv'); break; case ScheduledJob::CREATE_DOCUMENT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'documents.csv'); break; case ScheduledJob::CREATE_EXPENSE_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'expense.csv'); break; case ScheduledJob::CREATE_INVOICE_ITEM_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'invoice_items.csv'); break; case ScheduledJob::CREATE_INVOICE_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'invoices.csv'); break; case ScheduledJob::CREATE_PAYMENT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'payments.csv'); break; case ScheduledJob::CREATE_PRODUCT_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'products.csv'); break; case ScheduledJob::CREATE_PROFIT_AND_LOSS_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'profit_and_loss.csv'); break; case ScheduledJob::CREATE_QUOTE_ITEM_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'quote_items.csv'); break; case ScheduledJob::CREATE_QUOTE_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'quotes.csv'); break; case ScheduledJob::CREATE_RECURRING_INVOICE_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'recurring_invoices.csv'); break; case ScheduledJob::CREATE_TASK_REPORT: SendToAdmin::dispatch($company, $parameters, $job->action_class, 'tasks.csv'); break; } $scheduler->scheduled_run = $scheduler->nextScheduledDate(); $scheduler->save(); } private function fetchJobs() { return ; } }