App\Ninja\Mailers\ContactMailer::sendInvitation PHP Method

sendInvitation() private method

private sendInvitation ( Invitation $invitation, Invoice $invoice, $body, $subject, $pdfString, $documentStrings ) : boolean | string
$invitation app\models\Invitation
$invoice app\models\Invoice
$body
$subject
$pdfString
$documentStrings
return boolean | string
    private function sendInvitation(Invitation $invitation, Invoice $invoice, $body, $subject, $pdfString, $documentStrings)
    {
        $client = $invoice->client;
        $account = $invoice->account;
        if (Auth::check()) {
            $user = Auth::user();
        } else {
            $user = $invitation->user;
            if ($invitation->user->trashed()) {
                $user = $account->users()->orderBy('id')->first();
            }
        }
        if (!$user->email || !$user->registered) {
            return trans('texts.email_error_user_unregistered');
        } elseif (!$user->confirmed) {
            return trans('texts.email_error_user_unconfirmed');
        } elseif (!$invitation->contact->email) {
            return trans('texts.email_error_invalid_contact_email');
        } elseif ($invitation->contact->trashed()) {
            return trans('texts.email_error_inactive_contact');
        }
        $variables = ['account' => $account, 'client' => $client, 'invitation' => $invitation, 'amount' => $invoice->getRequestedAmount()];
        // Let the client know they'll be billed later
        if ($client->autoBillLater()) {
            $variables['autobill'] = $invoice->present()->autoBillEmailMessage();
        }
        if (empty($invitation->contact->password) && $account->hasFeature(FEATURE_CLIENT_PORTAL_PASSWORD) && $account->enable_portal_password && $account->send_portal_password) {
            // The contact needs a password
            $variables['password'] = $password = $this->generatePassword();
            $invitation->contact->password = bcrypt($password);
            $invitation->contact->save();
        }
        $data = ['body' => $this->templateService->processVariables($body, $variables), 'link' => $invitation->getLink(), 'entityType' => $invoice->getEntityType(), 'invoiceId' => $invoice->id, 'invitation' => $invitation, 'account' => $account, 'client' => $client, 'invoice' => $invoice, 'documents' => $documentStrings];
        if ($account->attachPDF()) {
            $data['pdfString'] = $pdfString;
            $data['pdfFileName'] = $invoice->getFileName();
        }
        $subject = $this->templateService->processVariables($subject, $variables);
        $fromEmail = $user->email;
        $view = $account->getTemplateView(ENTITY_INVOICE);
        $response = $this->sendTo($invitation->contact->email, $fromEmail, $account->getDisplayName(), $subject, $view, $data);
        if ($response === true) {
            return true;
        } else {
            return $response;
        }
    }