diff --git a/app/Http/Controllers/Company/Expense/ExpensesController.php b/app/Http/Controllers/Company/Expense/ExpensesController.php index 4395f378..85ead680 100644 --- a/app/Http/Controllers/Company/Expense/ExpensesController.php +++ b/app/Http/Controllers/Company/Expense/ExpensesController.php @@ -133,4 +133,26 @@ class ExpensesController extends Controller 'success' => 'Expense receipts uploaded successfully', ], 200); } + + public function downloadReceipt(Expense $expense) + { + $this->authorize('view', $expense); + + if ($expense) { + $media = $expense->getFirstMedia('receipts'); + if ($media) { + $imagePath = $media->getPath(); + $response = \Response::download($imagePath, $media->file_name); + if (ob_get_contents()) { + ob_end_clean(); + } + + return $response; + } + } + + return response()->json([ + 'error' => 'receipt_not_found', + ]); + } } diff --git a/app/Http/Controllers/Pdf/DocumentPdfController.php b/app/Http/Controllers/Pdf/DocumentPdfController.php new file mode 100644 index 00000000..81cd6d78 --- /dev/null +++ b/app/Http/Controllers/Pdf/DocumentPdfController.php @@ -0,0 +1,46 @@ +has('preview')) { + return $this->invoiceService->getPdfData($invoice); + } + + return $invoice->getGeneratedPDFOrStream('invoice'); + } + + public function estimate(Request $request, Estimate $estimate) + { + if ($request->has('preview')) { + return $this->estimateService->getPdfData($estimate); + } + + return $estimate->getGeneratedPDFOrStream('estimate'); + } + + public function payment(Request $request, Payment $payment) + { + if ($request->has('preview')) { + return view('app.pdf.payment.payment'); + } + + return $payment->getGeneratedPDFOrStream('payment'); + } +} diff --git a/app/Http/Controllers/Pdf/DownloadInvoicePdfController.php b/app/Http/Controllers/Pdf/DownloadInvoicePdfController.php deleted file mode 100644 index d97bc963..00000000 --- a/app/Http/Controllers/Pdf/DownloadInvoicePdfController.php +++ /dev/null @@ -1,24 +0,0 @@ -id.'.pdf'); - - return response()->download($path); - } -} diff --git a/app/Http/Controllers/Pdf/DownloadPaymentPdfController.php b/app/Http/Controllers/Pdf/DownloadPaymentPdfController.php deleted file mode 100644 index 97c81b92..00000000 --- a/app/Http/Controllers/Pdf/DownloadPaymentPdfController.php +++ /dev/null @@ -1,24 +0,0 @@ -id.'.pdf'); - - return response()->download($path); - } -} diff --git a/app/Http/Controllers/Pdf/DownloadReceiptController.php b/app/Http/Controllers/Pdf/DownloadReceiptController.php deleted file mode 100644 index e3d4d928..00000000 --- a/app/Http/Controllers/Pdf/DownloadReceiptController.php +++ /dev/null @@ -1,39 +0,0 @@ -authorize('view', $expense); - - if ($expense) { - $media = $expense->getFirstMedia('receipts'); - if ($media) { - $imagePath = $media->getPath(); - $response = \Response::download($imagePath, $media->file_name); - if (ob_get_contents()) { - ob_end_clean(); - } - - return $response; - } - } - - return response()->json([ - 'error' => 'receipt_not_found', - ]); - } -} diff --git a/app/Http/Controllers/Pdf/EstimatePdfController.php b/app/Http/Controllers/Pdf/EstimatePdfController.php deleted file mode 100644 index f0c335e5..00000000 --- a/app/Http/Controllers/Pdf/EstimatePdfController.php +++ /dev/null @@ -1,30 +0,0 @@ -has('preview')) { - return $this->estimateService->getPdfData($estimate); - } - - return $estimate->getGeneratedPDFOrStream('estimate'); - } -} diff --git a/app/Http/Controllers/Pdf/InvoicePdfController.php b/app/Http/Controllers/Pdf/InvoicePdfController.php deleted file mode 100644 index 5e7cc227..00000000 --- a/app/Http/Controllers/Pdf/InvoicePdfController.php +++ /dev/null @@ -1,30 +0,0 @@ -has('preview')) { - return $this->invoiceService->getPdfData($invoice); - } - - return $invoice->getGeneratedPDFOrStream('invoice'); - } -} diff --git a/app/Http/Controllers/Pdf/PaymentPdfController.php b/app/Http/Controllers/Pdf/PaymentPdfController.php deleted file mode 100644 index 992fc3e9..00000000 --- a/app/Http/Controllers/Pdf/PaymentPdfController.php +++ /dev/null @@ -1,25 +0,0 @@ -has('preview')) { - return view('app.pdf.payment.payment'); - } - - return $payment->getGeneratedPDFOrStream('payment'); - } -} diff --git a/routes/web.php b/routes/web.php index f11c8eba..323c1773 100644 --- a/routes/web.php +++ b/routes/web.php @@ -13,10 +13,7 @@ use App\Http\Controllers\CustomerPortal\InvoicePdfController as CustomerInvoiceP use App\Http\Controllers\CustomerPortal\PaymentPdfController as CustomerPaymentPdfController; use App\Http\Controllers\Modules\ScriptController; use App\Http\Controllers\Modules\StyleController; -use App\Http\Controllers\Pdf\DownloadReceiptController; -use App\Http\Controllers\Pdf\EstimatePdfController; -use App\Http\Controllers\Pdf\InvoicePdfController; -use App\Http\Controllers\Pdf\PaymentPdfController; +use App\Http\Controllers\Pdf\DocumentPdfController; use App\Models\Company; use Illuminate\Support\Facades\Route; @@ -72,7 +69,7 @@ Route::middleware('auth:sanctum')->prefix('reports')->group(function () { // download expense receipt // ------------------------------------------------- - Route::get('/expenses/{expense}/download-receipt', DownloadReceiptController::class); + Route::get('/expenses/{expense}/download-receipt', [ExpensesController::class, 'downloadReceipt']); Route::get('/expenses/{expense}/receipt', [ExpensesController::class, 'showReceipt']); }); @@ -83,15 +80,9 @@ Route::middleware('pdf-auth')->group(function () { // invoice pdf // ------------------------------------------------- - Route::get('/invoices/pdf/{invoice:unique_hash}', InvoicePdfController::class); - - // estimate pdf - // ------------------------------------------------- - Route::get('/estimates/pdf/{estimate:unique_hash}', EstimatePdfController::class); - - // payment pdf - // ------------------------------------------------- - Route::get('/payments/pdf/{payment:unique_hash}', PaymentPdfController::class); + Route::get('/invoices/pdf/{invoice:unique_hash}', [DocumentPdfController::class, 'invoice']); + Route::get('/estimates/pdf/{estimate:unique_hash}', [DocumentPdfController::class, 'estimate']); + Route::get('/payments/pdf/{payment:unique_hash}', [DocumentPdfController::class, 'payment']); }); // customer pdf endpoints for invoice, estimate and Payment