company = $company; $this->request = $request; $this->report_class = $report_class; $this->file_name = $file_name; } public function handle() { MultiDB::setDb($this->company->db); $export = new $this->report_class($this->company, $this->request); $csv = $export->run(); $user = $this->company->owner(); if(isset($this->request['user_id'])) { $user = User::find($this->request['user_id']) ?? $this->company->owner(); } $nmo = new NinjaMailerObject(); $nmo->mailable = new DownloadReport($this->company, $csv, $this->file_name); $nmo->company = $this->company; $nmo->settings = $this->company->settings; $nmo->to_user = $user; NinjaMailerJob::dispatch($nmo); } public function middleware() { return [new WithoutOverlapping("report-{$this->company->company_key}")]; } }