<?php namespace App\Invoice\Actions; use App\Invoice\BillDocument; use App\Invoice\BillKind; use App\Invoice\Models\Invoice; use App\Invoice\RememberDocument; use Illuminate\Http\Response; use Lorisleiva\Actions\Concerns\AsAction; use Zoomyboy\Tex\BaseCompiler; use Zoomyboy\Tex\Tex; class MassPostPdfAction { use AsAction; public function handle(): BaseCompiler|Response { $documents = []; foreach (Invoice::whereNeedsBill()->where('via', BillKind::POST)->get() as $invoice) { $document = BillDocument::fromInvoice($invoice); $documents[] = $document; $invoice->sent($document); } foreach (Invoice::whereNeedsRemember()->where('via', BillKind::POST)->get() as $invoice) { $document = RememberDocument::fromInvoice($invoice); $documents[] = $document; $invoice->sent($document); } if (!count($documents)) { return response()->noContent(); } return Tex::merge($documents); } }