From a136c3c3254e72db09cf09736040e4d5b81065d7 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Sun, 11 Feb 2018 16:00:03 +0200 Subject: [PATCH] Proposals --- app/Http/Controllers/ClientPortalController.php | 13 +++++++++++++ app/Http/Controllers/ProposalController.php | 5 ++++- app/Ninja/Presenters/ProposalPresenter.php | 13 +++++++++++++ routes/web.php | 1 + 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/ClientPortalController.php b/app/Http/Controllers/ClientPortalController.php index 9e8b1d3129..62a963de7f 100644 --- a/app/Http/Controllers/ClientPortalController.php +++ b/app/Http/Controllers/ClientPortalController.php @@ -81,6 +81,19 @@ class ClientPortalController extends BaseController return view('invited.proposal', $data); } + public function downloadProposal($invitationKey) + { + if (! $invitation = $this->propoosalRepo->findInvitationByKey($invitationKey)) { + return $this->returnError(trans('texts.proposal_not_found')); + } + + $proposal = $invitation->proposal; + + $mpdf = new \mPDF(); + $mpdf->WriteHTML($proposal->present()->htmlDocument); + $mpdf->Output($proposal->present()->filename, 'D'); + } + public function viewInvoice($invitationKey) { if (! $invitation = $this->invoiceRepo->findInvoiceByInvitation($invitationKey)) { diff --git a/app/Http/Controllers/ProposalController.php b/app/Http/Controllers/ProposalController.php index 75e5d0f13f..4812a5dd7c 100644 --- a/app/Http/Controllers/ProposalController.php +++ b/app/Http/Controllers/ProposalController.php @@ -15,6 +15,7 @@ use Auth; use Input; use Session; use View; +use mPDF; class ProposalController extends BaseController { @@ -139,6 +140,8 @@ class ProposalController extends BaseController { $proposal = $request->entity(); - + $mpdf = new mPDF(); + $mpdf->WriteHTML($proposal->present()->htmlDocument); + $mpdf->Output($proposal->present()->filename, 'D'); } } diff --git a/app/Ninja/Presenters/ProposalPresenter.php b/app/Ninja/Presenters/ProposalPresenter.php index 7f4c826f10..9fc896147c 100644 --- a/app/Ninja/Presenters/ProposalPresenter.php +++ b/app/Ninja/Presenters/ProposalPresenter.php @@ -30,4 +30,17 @@ class ProposalPresenter extends EntityPresenter return $actions; } + public function htmlDocument() + { + $proposal = $this->entity; + + return "{$proposal->html}"; + } + + public function filename() + { + $proposal = $this->entity; + + return sprintf('%s_%s.pdf', trans('texts.proposal'), $proposal->invoice->invoice_number); + } } diff --git a/routes/web.php b/routes/web.php index 89083d9186..9eae17b72e 100644 --- a/routes/web.php +++ b/routes/web.php @@ -16,6 +16,7 @@ Route::post('/get_started', 'AccountController@getStarted'); // Client visible pages Route::group(['middleware' => ['lookup:contact', 'auth:client']], function () { Route::get('view/{invitation_key}', 'ClientPortalController@viewInvoice'); + Route::get('proposal/{proposal_invitation_key}/download', 'ClientPortalController@downloadProposal'); Route::get('proposal/{proposal_invitation_key}', 'ClientPortalController@viewProposal'); Route::get('download/{invitation_key}', 'ClientPortalController@download'); Route::put('sign/{invitation_key}', 'ClientPortalController@sign');