Skip to content

Commit

Permalink
improve hooking capabilities when sending documents
Browse files Browse the repository at this point in the history
  • Loading branch information
Hendrik Hagendorn committed Feb 26, 2023
1 parent 8a5eeea commit d18c3b4
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 4 deletions.
20 changes: 20 additions & 0 deletions app/Events/Document/DocumentSending.php
@@ -0,0 +1,20 @@
<?php

namespace App\Events\Document;

use App\Abstracts\Event;

class DocumentSending extends Event
{
public $document;

/**
* Create a new event instance.
*
* @param $document
*/
public function __construct($document)
{
$this->document = $document;
}
}
14 changes: 10 additions & 4 deletions app/Http/Controllers/Sales/Invoices.php
Expand Up @@ -10,6 +10,7 @@
use App\Jobs\Document\CreateDocument;
use App\Jobs\Document\DeleteDocument;
use App\Jobs\Document\DuplicateDocument;
use App\Jobs\Document\SendDocument;
use App\Jobs\Document\UpdateDocument;
use App\Models\Document\Document;
use App\Notifications\Sale\Invoice as Notification;
Expand Down Expand Up @@ -260,12 +261,17 @@ public function emailInvoice(Document $invoice)
return redirect()->back();
}

// Notify the customer
$invoice->contact->notify(new Notification($invoice, 'invoice_new_customer', true));
$response = $this->ajaxDispatch(new SendDocument($invoice));

event(new \App\Events\Document\DocumentSent($invoice));
if ($response['success']) {
$message = trans('documents.messages.email_sent', ['type' => trans_choice('general.invoices', 1)]);

flash(trans('documents.messages.email_sent', ['type' => trans_choice('general.invoices', 1)]))->success();
flash($message)->success();
} else {
$message = $response['message'];

flash($message)->error()->important();
}

return redirect()->back();
}
Expand Down
26 changes: 26 additions & 0 deletions app/Jobs/Document/SendDocument.php
@@ -0,0 +1,26 @@
<?php

namespace App\Jobs\Document;

use App\Abstracts\Job;
use App\Events\Document\DocumentSending;
use App\Events\Document\DocumentSent;
use App\Models\Document\Document;

class SendDocument extends Job
{
public function __construct(Document $document)
{
$this->document = $document;
}

public function handle(): void
{
event(new DocumentSending($document));

// Notify the customer
$invoice->contact->notify(new Notification($invoice, 'invoice_new_customer', true));

event(new DocumentSent($document));
}
}
3 changes: 3 additions & 0 deletions app/Jobs/Document/SendDocumentAsCustomMail.php
Expand Up @@ -3,6 +3,7 @@
namespace App\Jobs\Document;

use App\Abstracts\Job;
use App\Events\Document\DocumentSending;
use App\Events\Document\DocumentSent;
use App\Models\Document\Document;

Expand All @@ -18,6 +19,8 @@ public function handle(): void
{
$document = Document::find($this->request->get('document_id'));

event(new DocumentSending($document));

$custom_mail = $this->request->only(['to', 'subject', 'body']);

if ($this->request->get('user_email', false)) {
Expand Down

0 comments on commit d18c3b4

Please sign in to comment.