Remove app/Space folder and extract model business logic into services

Relocate all 14 files from the catch-all app/Space namespace into proper
locations: data providers to Support/Formatters, installation utilities to
Services/Installation, PDF utils to Services/Pdf, module/update classes to
Services/Module and Services/Update, SiteApi trait to Traits, and helpers
to Support.

Extract ~1,400 lines of business logic from 8 fat models (Invoice, Payment,
Estimate, RecurringInvoice, Company, Customer, Expense, User) into 9 new
service classes with constructor injection. Controllers now depend on
services instead of calling static model methods. Shared item/tax creation
logic consolidated into DocumentItemService.
This commit is contained in:
Darko Gjorgjijoski
2026-04-03 15:37:22 +02:00
parent 23ff69026e
commit 0ce88ab817
98 changed files with 1703 additions and 1563 deletions

View File

@@ -8,11 +8,16 @@ use App\Http\Requests\CompaniesRequest;
use App\Http\Resources\CompanyResource;
use App\Models\Company;
use App\Models\User;
use App\Services\CompanyService;
use Illuminate\Http\Request;
use Silber\Bouncer\BouncerFacade;
class CompaniesController extends Controller
{
public function __construct(
private readonly CompanyService $companyService,
) {}
public function store(CompaniesRequest $request)
{
$this->authorize('create company');
@@ -22,7 +27,7 @@ class CompaniesController extends Controller
$company = Company::create($request->getCompanyPayload());
$company->unique_hash = Hashids::connection(Company::class)->encode($company->id);
$company->save();
$company->setupDefaultData();
$this->companyService->setupDefaults($company);
$user->companies()->attach($company->id);
$user->assign('super admin');
@@ -49,7 +54,7 @@ class CompaniesController extends Controller
return respondJson('You_cannot_delete_all_companies', 'You cannot delete all companies');
}
$company->deleteCompany($user);
$this->companyService->delete($company, $user);
return response()->json([
'success' => true,

View File

@@ -7,11 +7,16 @@ use App\Http\Requests;
use App\Http\Requests\DeleteCustomersRequest;
use App\Http\Resources\CustomerResource;
use App\Models\Customer;
use App\Services\CustomerService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class CustomersController extends Controller
{
public function __construct(
private readonly CustomerService $customerService,
) {}
/**
* Display a listing of the resource.
*
@@ -46,7 +51,7 @@ class CustomersController extends Controller
{
$this->authorize('create', Customer::class);
$customer = Customer::createCustomer($request);
$customer = $this->customerService->create($request);
return new CustomerResource($customer);
}
@@ -73,11 +78,7 @@ class CustomersController extends Controller
{
$this->authorize('update', $customer);
$customer = Customer::updateCustomer($request, $customer);
if (is_string($customer)) {
return respondJson('you_cannot_edit_currency', 'Cannot change currency once transactions created');
}
$customer = $this->customerService->update($request, $customer);
return new CustomerResource($customer);
}
@@ -96,7 +97,7 @@ class CustomersController extends Controller
->whereIn('id', $request->ids)
->pluck('id');
Customer::deleteCustomers($ids);
$this->customerService->delete($ids);
return response()->json([
'success' => true,

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Estimate;
use App\Http\Controllers\Controller;
use App\Models\Estimate;
use App\Space\PdfTemplateUtils;
use App\Services\Pdf\PdfTemplateUtils;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

View File

@@ -8,10 +8,15 @@ use App\Http\Requests\EstimatesRequest;
use App\Http\Resources\EstimateResource;
use App\Jobs\GenerateEstimatePdfJob;
use App\Models\Estimate;
use App\Services\EstimateService;
use Illuminate\Http\Request;
class EstimatesController extends Controller
{
public function __construct(
private readonly EstimateService $estimateService,
) {}
public function index(Request $request)
{
$this->authorize('viewAny', Estimate::class);
@@ -35,10 +40,10 @@ class EstimatesController extends Controller
{
$this->authorize('create', Estimate::class);
$estimate = Estimate::createEstimate($request);
$estimate = $this->estimateService->create($request);
if ($request->has('estimateSend')) {
$estimate->send($request->title, $request->body);
$this->estimateService->send($estimate, $request->only(['title', 'body']));
}
GenerateEstimatePdfJob::dispatch($estimate);
@@ -57,7 +62,7 @@ class EstimatesController extends Controller
{
$this->authorize('update', $estimate);
$estimate = $estimate->updateEstimate($request);
$estimate = $this->estimateService->update($estimate, $request);
GenerateEstimatePdfJob::dispatch($estimate, true);

View File

@@ -5,10 +5,15 @@ namespace App\Http\Controllers\V1\Admin\Estimate;
use App\Http\Controllers\Controller;
use App\Http\Requests\SendEstimatesRequest;
use App\Models\Estimate;
use App\Services\EstimateService;
use Illuminate\Http\JsonResponse;
class SendEstimateController extends Controller
{
public function __construct(
private readonly EstimateService $estimateService,
) {}
/**
* Handle the incoming request.
*
@@ -18,7 +23,7 @@ class SendEstimateController extends Controller
{
$this->authorize('send estimate', $estimate);
$response = $estimate->send($request->all());
$response = $this->estimateService->send($estimate, $request->all());
return response()->json($response);
}

View File

@@ -5,11 +5,16 @@ namespace App\Http\Controllers\V1\Admin\Estimate;
use App\Http\Controllers\Controller;
use App\Http\Requests\SendEstimatesRequest;
use App\Models\Estimate;
use App\Services\EstimateService;
use Illuminate\Http\JsonResponse;
use Illuminate\Mail\Markdown;
class SendEstimatePreviewController extends Controller
{
public function __construct(
private readonly EstimateService $estimateService,
) {}
/**
* Handle the incoming request.
*
@@ -21,7 +26,7 @@ class SendEstimatePreviewController extends Controller
$markdown = new Markdown(view(), config('mail.markdown'));
$data = $estimate->sendEstimateData($request->all());
$data = $this->estimateService->sendEstimateData($estimate, $request->all());
$data['url'] = $estimate->estimatePdfUrl;
return $markdown->render('emails.send.estimate', ['data' => $data]);

View File

@@ -7,11 +7,16 @@ use App\Http\Requests\DeleteExpensesRequest;
use App\Http\Requests\ExpenseRequest;
use App\Http\Resources\ExpenseResource;
use App\Models\Expense;
use App\Services\ExpenseService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class ExpensesController extends Controller
{
public function __construct(
private readonly ExpenseService $expenseService,
) {}
/**
* Display a listing of the resource.
*
@@ -46,7 +51,7 @@ class ExpensesController extends Controller
{
$this->authorize('create', Expense::class);
$expense = Expense::createExpense($request);
$expense = $this->expenseService->create($request);
return new ExpenseResource($expense);
}
@@ -72,7 +77,7 @@ class ExpensesController extends Controller
{
$this->authorize('update', $expense);
$expense->updateExpense($request);
$this->expenseService->update($expense, $request);
return new ExpenseResource($expense);
}

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\General;
use App\Http\Controllers\Controller;
use App\Space\DateFormatter;
use App\Support\Formatters\DateFormatter;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\General;
use App\Http\Controllers\Controller;
use App\Space\TimeFormatter;
use App\Support\Formatters\TimeFormatter;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\General;
use App\Http\Controllers\Controller;
use App\Space\TimeZones;
use App\Support\Formatters\TimeZones;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Invoice;
use App\Http\Controllers\Controller;
use App\Models\Invoice;
use App\Space\PdfTemplateUtils;
use App\Services\Pdf\PdfTemplateUtils;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

View File

@@ -8,11 +8,16 @@ use App\Http\Requests\DeleteInvoiceRequest;
use App\Http\Resources\InvoiceResource;
use App\Jobs\GenerateInvoicePdfJob;
use App\Models\Invoice;
use App\Services\InvoiceService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class InvoicesController extends Controller
{
public function __construct(
private readonly InvoiceService $invoiceService,
) {}
/**
* Display a listing of the resource.
*
@@ -46,10 +51,10 @@ class InvoicesController extends Controller
{
$this->authorize('create', Invoice::class);
$invoice = Invoice::createInvoice($request);
$invoice = $this->invoiceService->create($request);
if ($request->has('invoiceSend')) {
$invoice->send($request->subject, $request->body);
$this->invoiceService->send($invoice, $request->only(['subject', 'body']));
}
GenerateInvoicePdfJob::dispatch($invoice);
@@ -79,11 +84,7 @@ class InvoicesController extends Controller
{
$this->authorize('update', $invoice);
$invoice = $invoice->updateInvoice($request);
if (is_string($invoice)) {
return respondJson($invoice, $invoice);
}
$invoice = $this->invoiceService->update($invoice, $request);
GenerateInvoicePdfJob::dispatch($invoice, true);
@@ -104,7 +105,7 @@ class InvoicesController extends Controller
->whereIn('id', $request->ids)
->pluck('id');
Invoice::deleteInvoices($ids);
$this->invoiceService->delete($ids);
return response()->json([
'success' => true,

View File

@@ -5,11 +5,16 @@ namespace App\Http\Controllers\V1\Admin\Invoice;
use App\Http\Controllers\Controller;
use App\Http\Requests\SendInvoiceRequest;
use App\Models\Invoice;
use App\Services\InvoiceService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SendInvoiceController extends Controller
{
public function __construct(
private readonly InvoiceService $invoiceService,
) {}
/**
* Mail a specific invoice to the corresponding customer's email address.
*
@@ -20,7 +25,7 @@ class SendInvoiceController extends Controller
{
$this->authorize('send invoice', $invoice);
$invoice->send($request->all());
$this->invoiceService->send($invoice, $request->all());
return response()->json([
'success' => true,

View File

@@ -5,12 +5,17 @@ namespace App\Http\Controllers\V1\Admin\Invoice;
use App\Http\Controllers\Controller;
use App\Http\Requests\SendInvoiceRequest;
use App\Models\Invoice;
use App\Services\InvoiceService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Mail\Markdown;
class SendInvoicePreviewController extends Controller
{
public function __construct(
private readonly InvoiceService $invoiceService,
) {}
/**
* Mail a specific invoice to the corresponding customer's email address.
*
@@ -23,7 +28,7 @@ class SendInvoicePreviewController extends Controller
$markdown = new Markdown(view(), config('mail.markdown'));
$data = $invoice->sendInvoiceData($request->all());
$data = $this->invoiceService->sendInvoiceData($invoice, $request->all());
$data['url'] = $invoice->invoicePdfUrl;
return $markdown->render('emails.send.invoice', ['data' => $data]);

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Http\Resources\ModuleResource;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Http\Requests\UnzipUpdateRequest;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Response;
class UnzipModuleController extends Controller

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Modules;
use App\Http\Controllers\Controller;
use App\Http\Requests\UploadModuleRequest;
use App\Space\ModuleInstaller;
use App\Services\Module\ModuleInstaller;
use Illuminate\Http\Response;
class UploadModuleController extends Controller

View File

@@ -7,11 +7,16 @@ use App\Http\Requests\DeletePaymentsRequest;
use App\Http\Requests\PaymentRequest;
use App\Http\Resources\PaymentResource;
use App\Models\Payment;
use App\Services\PaymentService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class PaymentsController extends Controller
{
public function __construct(
private readonly PaymentService $paymentService,
) {}
/**
* Display a listing of the resource.
*
@@ -48,7 +53,7 @@ class PaymentsController extends Controller
{
$this->authorize('create', Payment::class);
$payment = Payment::createPayment($request);
$payment = $this->paymentService->create($request);
return new PaymentResource($payment);
}
@@ -64,7 +69,7 @@ class PaymentsController extends Controller
{
$this->authorize('update', $payment);
$payment = $payment->updatePayment($request);
$payment = $this->paymentService->update($payment, $request);
return new PaymentResource($payment);
}
@@ -77,7 +82,7 @@ class PaymentsController extends Controller
->whereIn('id', $request->ids)
->pluck('id');
Payment::deletePayments($ids);
$this->paymentService->delete($ids);
return response()->json([
'success' => true,

View File

@@ -5,11 +5,16 @@ namespace App\Http\Controllers\V1\Admin\Payment;
use App\Http\Controllers\Controller;
use App\Http\Requests\SendPaymentRequest;
use App\Models\Payment;
use App\Services\PaymentService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class SendPaymentController extends Controller
{
public function __construct(
private readonly PaymentService $paymentService,
) {}
/**
* Handle the incoming request.
*
@@ -20,7 +25,7 @@ class SendPaymentController extends Controller
{
$this->authorize('send payment', $payment);
$response = $payment->send($request->all());
$response = $this->paymentService->send($payment, $request->all());
return response()->json($response);
}

View File

@@ -4,12 +4,17 @@ namespace App\Http\Controllers\V1\Admin\Payment;
use App\Http\Controllers\Controller;
use App\Models\Payment;
use App\Services\PaymentService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Mail\Markdown;
class SendPaymentPreviewController extends Controller
{
public function __construct(
private readonly PaymentService $paymentService,
) {}
/**
* Handle the incoming request.
*
@@ -21,7 +26,7 @@ class SendPaymentPreviewController extends Controller
$markdown = new Markdown(view(), config('mail.markdown'));
$data = $payment->sendPaymentData($request->all());
$data = $this->paymentService->sendPaymentData($payment, $request->all());
$data['url'] = $payment->paymentPdfUrl;
return $markdown->render('emails.send.payment', ['data' => $data]);

View File

@@ -6,11 +6,16 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\RecurringInvoiceRequest;
use App\Http\Resources\RecurringInvoiceResource;
use App\Models\RecurringInvoice;
use App\Services\RecurringInvoiceService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class RecurringInvoiceController extends Controller
{
public function __construct(
private readonly RecurringInvoiceService $recurringInvoiceService,
) {}
/**
* Display a listing of the resource.
*
@@ -42,7 +47,7 @@ class RecurringInvoiceController extends Controller
{
$this->authorize('create', RecurringInvoice::class);
$recurringInvoice = RecurringInvoice::createFromRequest($request);
$recurringInvoice = $this->recurringInvoiceService->create($request);
return new RecurringInvoiceResource($recurringInvoice);
}
@@ -69,7 +74,7 @@ class RecurringInvoiceController extends Controller
{
$this->authorize('update', $recurringInvoice);
$recurringInvoice->updateFromRequest($request);
$this->recurringInvoiceService->update($recurringInvoice, $request);
return new RecurringInvoiceResource($recurringInvoice);
}
@@ -88,7 +93,7 @@ class RecurringInvoiceController extends Controller
->whereIn('id', $request->ids)
->pluck('id');
RecurringInvoice::deleteRecurringInvoice($ids);
$this->recurringInvoiceService->delete($ids);
return response()->json([
'success' => true,

View File

@@ -6,7 +6,7 @@ use App\Http\Controllers\Controller;
use App\Http\Requests\MailEnvironmentRequest;
use App\Mail\TestMail;
use App\Models\Setting;
use App\Space\EnvironmentManager;
use App\Services\Installation\EnvironmentManager;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

View File

@@ -5,7 +5,7 @@ namespace App\Http\Controllers\V1\Admin\Settings;
use App\Http\Controllers\Controller;
use App\Http\Requests\PDFConfigurationRequest;
use App\Models\Setting;
use App\Space\EnvironmentManager;
use App\Services\Installation\EnvironmentManager;
class PDFConfigurationController extends Controller
{

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\File;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
use Illuminate\Http\Response;

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Admin\Update;
use App\Http\Controllers\Controller;
use App\Models\Setting;
use App\Space\Updater;
use App\Services\Update\Updater;
use Illuminate\Http\Request;
class UpdateController extends Controller

View File

@@ -7,11 +7,16 @@ use App\Http\Requests\DeleteUserRequest;
use App\Http\Requests\UserRequest;
use App\Http\Resources\UserResource;
use App\Models\User;
use App\Services\UserService;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class UsersController extends Controller
{
public function __construct(
private readonly UserService $userService,
) {}
/**
* Display a listing of the resource.
*
@@ -40,14 +45,13 @@ class UsersController extends Controller
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\UserRequest $request
* @return JsonResponse
*/
public function store(UserRequest $request)
{
$this->authorize('create', User::class);
$user = User::createFromRequest($request);
$user = $this->userService->create($request);
return new UserResource($user);
}
@@ -67,14 +71,13 @@ class UsersController extends Controller
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\UserRequest $request
* @return JsonResponse
*/
public function update(UserRequest $request, User $user)
{
$this->authorize('update', $user);
$user->updateFromRequest($request);
$this->userService->update($user, $request);
return new UserResource($user);
}
@@ -90,7 +93,7 @@ class UsersController extends Controller
$this->authorize('delete multiple users', User::class);
if ($request->users) {
User::deleteUsers($request->users);
$this->userService->delete($request->users);
}
return response()->json([

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Installation;
use App\Http\Controllers\Controller;
use App\Http\Requests\DomainEnvironmentRequest;
use App\Space\EnvironmentManager;
use App\Services\Installation\EnvironmentManager;
use Illuminate\Support\Facades\Artisan;
class AppDomainController extends Controller

View File

@@ -4,8 +4,8 @@ namespace App\Http\Controllers\V1\Installation;
use App\Http\Controllers\Controller;
use App\Http\Requests\DatabaseEnvironmentRequest;
use App\Space\EnvironmentManager;
use App\Space\InstallUtils;
use App\Services\Installation\EnvironmentManager;
use App\Services\Installation\InstallUtils;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Installation;
use App\Http\Controllers\Controller;
use App\Space\FilePermissionChecker;
use App\Services\Installation\FilePermissionChecker;
use Illuminate\Http\JsonResponse;
class FilePermissionsController extends Controller

View File

@@ -4,7 +4,7 @@ namespace App\Http\Controllers\V1\Installation;
use App\Http\Controllers\Controller;
use App\Models\Setting;
use App\Space\InstallUtils;
use App\Services\Installation\InstallUtils;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;

View File

@@ -3,7 +3,7 @@
namespace App\Http\Controllers\V1\Installation;
use App\Http\Controllers\Controller;
use App\Space\RequirementsChecker;
use App\Services\Installation\RequirementsChecker;
use Illuminate\Http\JsonResponse;
class RequirementsController extends Controller

View File

@@ -4,11 +4,16 @@ namespace App\Http\Controllers\V1\PDF;
use App\Http\Controllers\Controller;
use App\Models\Estimate;
use App\Services\EstimateService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class EstimatePdfController extends Controller
{
public function __construct(
private readonly EstimateService $estimateService,
) {}
/**
* Handle the incoming request.
*
@@ -17,7 +22,7 @@ class EstimatePdfController extends Controller
public function __invoke(Request $request, Estimate $estimate)
{
if ($request->has('preview')) {
return $estimate->getPDFData();
return $this->estimateService->getPdfData($estimate);
}
return $estimate->getGeneratedPDFOrStream('estimate');

View File

@@ -4,11 +4,16 @@ namespace App\Http\Controllers\V1\PDF;
use App\Http\Controllers\Controller;
use App\Models\Invoice;
use App\Services\InvoiceService;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
class InvoicePdfController extends Controller
{
public function __construct(
private readonly InvoiceService $invoiceService,
) {}
/**
* Handle the incoming request.
*
@@ -17,7 +22,7 @@ class InvoicePdfController extends Controller
public function __invoke(Request $request, Invoice $invoice)
{
if ($request->has('preview')) {
return $invoice->getPDFData();
return $this->invoiceService->getPdfData($invoice);
}
return $invoice->getGeneratedPDFOrStream('invoice');