client = $client; $this->error = $error; $this->company = $company; $this->payment_hash = $payment_hash; $this->company = $company; } public function build() { $this->invoice = Invoice::where('id', $this->decodePrimarykey($this->payment_hash->invoices()[0]->invoice_id))->first(); $mail_obj = new stdClass; $mail_obj->amount = $this->getAmount(); $mail_obj->subject = $this->getSubject(); $mail_obj->data = $this->getData(); $mail_obj->markdown = 'email.admin.generic'; $mail_obj->tag = $this->company->company_key; return $mail_obj; } private function getAmount() { return array_sum(array_column($this->payment_hash->invoices(), 'amount')) + $this->payment_hash->fee_total; } private function getSubject() { return ctrans( 'texts.auto_bill_failed', ['invoice_number' => $this->invoice->number] ); } private function getData() { $signature = $this->client->getSetting('email_signature'); $data = [ 'title' => ctrans( 'texts.auto_bill_failed', ['invoice_number' => $this->invoice->number] ), 'message' => $this->error, 'signature' => $signature, 'logo' => $this->company->present()->logo(), 'settings' => $this->client->getMergedSettings(), 'whitelabel' => $this->company->account->isPaid() ? true : false, 'url' => config('ninja.app_url'), 'button' => ctrans('texts.login'), ]; return $data; } }