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 = base64_encode($export->run()); $files = []; $files[] = ['file' => $csv, 'file_name' => "{$this->file_name}", 'mime' => 'text/csv']; // if(in_array(get_class($export), [ARDetailReport::class, ARSummaryReport::class])) { // $pdf = base64_encode($export->getPdf()); // $files[] = ['file' => $pdf, 'file_name' => str_replace(".csv", ".pdf", $this->file_name), 'mime' => 'application/pdf']; // } $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, $files); $nmo->company = $this->company; $nmo->settings = $this->company->settings; $nmo->to_user = $user; try { (new NinjaMailerJob($nmo))->handle(); } catch (\Throwable $th) { nlog("EXCEPTION:: SendToAdmin:: could not email report for" . $th->getMessage()); } } public function middleware() { return [new WithoutOverlapping("report-{$this->company->company_key}")]; } }