fetchJobs(); foreach ($pending_schedulers as $scheduler) { $this->doJob($scheduler); } } } private function doJob(Scheduler $scheduler) { $job = $scheduler->job; $company = Company::find($job->company_id); if (!$job || !$company) { 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 Scheduler::where('paused', false) ->where('is_deleted', false) ->whereDate('scheduled_run', '<=', Carbon::now()) ->cursor(); } }