App\Ninja\Mailers\UserMailer::sendNotification PHP Method

sendNotification() public method

public sendNotification ( User $user, Invoice $invoice, $notificationType, Payment $payment = null )
$user app\models\User
$invoice app\models\Invoice
$notificationType
$payment app\models\Payment
    public function sendNotification(User $user, Invoice $invoice, $notificationType, Payment $payment = null)
    {
        if (!$user->email || $user->cannot('view', $invoice)) {
            return;
        }
        $entityType = $invoice->getEntityType();
        $view = ($notificationType == 'approved' ? ENTITY_QUOTE : ENTITY_INVOICE) . "_{$notificationType}";
        $account = $user->account;
        $client = $invoice->client;
        $data = ['entityType' => $entityType, 'clientName' => $client->getDisplayName(), 'accountName' => $account->getDisplayName(), 'userName' => $user->getDisplayName(), 'invoiceAmount' => $account->formatMoney($invoice->getRequestedAmount(), $client), 'invoiceNumber' => $invoice->invoice_number, 'invoiceLink' => SITE_URL . "/{$entityType}s/{$invoice->public_id}", 'account' => $account];
        if ($payment) {
            $data['payment'] = $payment;
            $data['paymentAmount'] = $account->formatMoney($payment->amount, $client);
        }
        $subject = trans("texts.notification_{$entityType}_{$notificationType}_subject", ['invoice' => $invoice->invoice_number, 'client' => $client->getDisplayName()]);
        $this->sendTo($user->email, CONTACT_EMAIL, CONTACT_NAME, $subject, $view, $data);
    }

Usage Example

 /**
  * @param $invoice
  * @param $type
  * @param null $payment
  */
 private function sendEmails($invoice, $type, $payment = null)
 {
     foreach ($invoice->account->users as $user) {
         if ($user->{"notify_{$type}"}) {
             $this->userMailer->sendNotification($user, $invoice, $type, $payment);
         }
     }
 }