Send invoices by email.
This commit is contained in:
52
app/Http/Controllers/Api/MailController.php
Normal file
52
app/Http/Controllers/Api/MailController.php
Normal file
@@ -0,0 +1,52 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Mail\InvoiceMail;
|
||||
use App\Models\Invoice;
|
||||
use App\TenantMail;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Mail\Mailer;
|
||||
|
||||
class MailController extends Controller
|
||||
{
|
||||
/**
|
||||
* The Mailer used for sending Tenant Mails defined by options.
|
||||
* @var Mailer
|
||||
*/
|
||||
protected Mailer $mailer;
|
||||
|
||||
/**
|
||||
* Set the TenantMail::class as mailer for further usage
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->mailer = TenantMail::get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Send the invoice mail for the given request.
|
||||
*/
|
||||
public function sendInvoice(Request $request): JsonResponse
|
||||
{
|
||||
$invoice = Invoice::find($request->id);
|
||||
$invoiceMail = new InvoiceMail($invoice);
|
||||
$invoiceMail->subject($request->Subject);
|
||||
$invoiceMail->body = $request->Body;
|
||||
|
||||
try {
|
||||
$this->mailer->to($request->To)
|
||||
->cc($request->Cc)
|
||||
->Bcc($request->Bcc)
|
||||
->send($invoiceMail);
|
||||
} catch (\Exception $exception) {
|
||||
return response()->json(['status' => 'error', 'message' => $exception->getMessage()], 500);
|
||||
}
|
||||
|
||||
$invoice->update(['status' => 'sent']);
|
||||
|
||||
return response()->json($invoice);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user