From e08e8c1962102c653e3132c68d64b6bec8d38fa5 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 1 Jun 2016 12:56:59 +0300 Subject: [PATCH] Support downloading PDF through the API --- app/Http/Controllers/InvoiceApiController.php | 23 +++++++++++++++---- app/Http/routes.php | 1 + 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/InvoiceApiController.php b/app/Http/Controllers/InvoiceApiController.php index 667690395eb2..6d68573cdb42 100644 --- a/app/Http/Controllers/InvoiceApiController.php +++ b/app/Http/Controllers/InvoiceApiController.php @@ -183,7 +183,7 @@ class InvoiceApiController extends BaseAPIController $invoice = Invoice::scope($invoice->public_id) ->with('client', 'invoice_items', 'invitations') ->first(); - + return $this->itemResponse($invoice); } @@ -270,7 +270,7 @@ class InvoiceApiController extends BaseAPIController $item[$key] = $val; } } - + return $item; } @@ -309,7 +309,7 @@ class InvoiceApiController extends BaseAPIController public function update(UpdateInvoiceAPIRequest $request, $publicId) { if ($request->action == ACTION_CONVERT) { - $quote = $request->entity(); + $quote = $request->entity(); $invoice = $this->invoiceRepo->cloneInvoice($quote, $quote->id); return $this->itemResponse($invoice); } elseif ($request->action) { @@ -323,7 +323,7 @@ class InvoiceApiController extends BaseAPIController $invoice = Invoice::scope($publicId) ->with('client', 'invoice_items', 'invitations') ->firstOrFail(); - + return $this->itemResponse($invoice); } @@ -352,10 +352,23 @@ class InvoiceApiController extends BaseAPIController public function destroy(UpdateInvoiceAPIRequest $request) { $invoice = $request->entity(); - + $this->invoiceRepo->delete($invoice); return $this->itemResponse($invoice); } + public function download(InvoiceRequest $request) + { + $invoice = $request->entity(); + $pdfString = $invoice->getPDFString(); + + header('Content-Type: application/pdf'); + header('Content-Length: ' . strlen($pdfString)); + header('Content-disposition: attachment; filename="' . $invoice->getFileName() . '"'); + header('Cache-Control: public, must-revalidate, max-age=0'); + header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); + + return $pdfString; + } } diff --git a/app/Http/routes.php b/app/Http/routes.php index 2c3fba6fec4b..be5972c0d1d2 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -255,6 +255,7 @@ Route::group(['middleware' => 'api', 'prefix' => 'api/v1'], function() //Route::get('quotes', 'QuoteApiController@index'); //Route::resource('quotes', 'QuoteApiController'); Route::get('invoices', 'InvoiceApiController@index'); + Route::get('download/{invoice_id}', 'InvoiceApiController@download'); Route::resource('invoices', 'InvoiceApiController'); Route::get('payments', 'PaymentApiController@index'); Route::resource('payments', 'PaymentApiController');