File: /home/xedaptot/ai.naniguide.com/app/Http/Controllers/InvoiceController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Model\Invoice;
use App\Model\PaymentMethod;
class InvoiceController extends Controller
{
protected function findOwnedInvoice(Request $request, string $invoiceUid): ?Invoice
{
$customer = $request->user()->customer;
return $customer->invoices()->where('invoices.uid', $invoiceUid)->first();
}
public function download(Request $request)
{
$invoice = $this->findOwnedInvoice($request, $request->uid);
if (!$invoice) {
abort(404);
}
return \Response::make($invoice->exportToPdf(), 200, [
'Content-type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="invoice-'.$invoice->uid.'.pdf"',
]);
}
public function logs(Request $request)
{
// init
$invoice = $this->findOwnedInvoice($request, $request->invoice_uid);
if (!$invoice) {
abort(404);
}
return view('invoices.logs', [
'invoice' => $invoice,
]);
}
public function delete(Request $request)
{
// init
$invoice = $this->findOwnedInvoice($request, $request->invoice_uid);
if (!$invoice) {
abort(404);
}
if ($request->user()->customer->can('delete', $invoice)) {
app(\App\Library\OrderFulfillment\FulfillmentService::class)->cancelInvoice($invoice);
}
echo trans('messages.invoice.deleted');
}
public function show(Request $request)
{
// init
$invoice = $this->findOwnedInvoice($request, $request->uid);
if (!$invoice) {
abort(404);
}
return view('invoices.show', [
'invoice' => $invoice,
]);
}
}