diff --git a/app/Factory/DesignFactory.php b/app/Factory/DesignFactory.php index ffb700b04461..36b3a4f187e0 100644 --- a/app/Factory/DesignFactory.php +++ b/app/Factory/DesignFactory.php @@ -24,7 +24,7 @@ class DesignFactory $design->is_active = true; $design->is_custom = true; $design->name = ''; - $design->design = []; + $design->design = '[]'; return $design; } diff --git a/app/Http/Controllers/RecurringInvoiceController.php b/app/Http/Controllers/RecurringInvoiceController.php index 5c0bb277edd0..4d9e6f956291 100644 --- a/app/Http/Controllers/RecurringInvoiceController.php +++ b/app/Http/Controllers/RecurringInvoiceController.php @@ -556,4 +556,29 @@ class RecurringInvoiceController extends BaseController return $this->itemResponse($recurring_invoice->fresh()); } + + public function downloadPdf(string $invitation_key) + { + $invitation = $this->recurring_invoice_repo->getInvitationByKey($invitation_key); + + if (! $invitation) { + return response()->json(['message' => 'no record found'], 400); + } + + $contact = $invitation->contact; + $invoice = $invitation->recurring_invoice; + + $file = $invoice->service()->getInvoicePdf($contact); + + $headers = ['Content-Type' => 'application/pdf']; + + if (request()->input('inline') == 'true') { + $headers = array_merge($headers, ['Content-Disposition' => 'inline']); + } + + return response()->streamDownload(function () use ($file) { + echo Storage::get($file); + }, basename($file), $headers); + } + } diff --git a/app/Repositories/RecurringInvoiceRepository.php b/app/Repositories/RecurringInvoiceRepository.php index c0b4e87f121e..6afa3c609df1 100644 --- a/app/Repositories/RecurringInvoiceRepository.php +++ b/app/Repositories/RecurringInvoiceRepository.php @@ -28,6 +28,6 @@ class RecurringInvoiceRepository extends BaseRepository public function getInvitationByKey($key) :?RecurringInvoiceInvitation { - return RecurringInvoiceInvitation::where('key', $key)->first(); + return RecurringInvoiceInvitation::withTrashed()->where('key', $key)->first(); } }