diff --git a/app/Http/Controllers/ClientPortal/EntityViewController.php b/app/Http/Controllers/ClientPortal/EntityViewController.php deleted file mode 100644 index f5c40de3a312..000000000000 --- a/app/Http/Controllers/ClientPortal/EntityViewController.php +++ /dev/null @@ -1,184 +0,0 @@ -entity_types)) { - abort(404, 'Entity not found'); - } - - $invitation_entity = sprintf('App\\Models\\%sInvitation', ucfirst($entity_type)); - - $key = $entity_type.'_id'; - - $invitation = $invitation_entity::where('key', $invitation_key) - ->with('contact.client') - ->firstOrFail(); - - $contact = $invitation->contact; - $client = $contact->client; - $entity = $invitation->{$entity_type}; - - if (is_null($contact->password) || empty($contact->password)) { - return redirect("/client/password/reset?email={$contact->email}"); - } - - if ((bool) $invitation->contact->client->getSetting('enable_client_portal_password') !== false) { - session()->flash("{$entity_type}_VIEW_{$entity->hashed_id}", true); - } - - if (! session("{$entity_type}_VIEW_{$entity->hashed_id}")) { - return redirect()->route('client.entity_view.password', compact('entity_type', 'invitation_key')); - } - - return $this->render('view_entity.index', [ - 'root' => 'themes', - 'entity' => $entity, - ]); - } - - /** - * Show the form for entering password. - * - * @param string $entity_type - * @param string $invitation_key - * - * @return Factory|View - */ - public function password(string $entity_type, string $invitation_key) - { - return $this->render('view_entity.password', [ - 'root' => 'themes', - 'entity_type' => $entity_type, - ]); - } - - /**` - * Handle the password check. - * - * @param string $entity_type - * @param string $invitation_key - * - * @return Redirector|RedirectResponse|mixed - */ - public function handlePassword(string $entity_type, string $invitation_key) - { - if (! in_array($entity_type, $this->entity_types)) { - abort(404, 'Entity not found'); - } - - $invitation_entity = sprintf('App\\Models\\%sInvitation', ucfirst($entity_type)); - - $key = $entity_type.'_id'; - - $invitation = $invitation_entity::where('key', $invitation_key)->firstOrFail(); - - $contact = $invitation->contact; - - $check = Hash::check(request()->password, $contact->password); - - $entity_class = sprintf('App\\Models\\%s', ucfirst($entity_type)); - - $entity = $entity_class::findOrFail($invitation->{$key}); - - if ($check) { - session()->flash("{$entity_type}_VIEW_{$entity->hashed_id}", true); - - return redirect()->route('client.entity_view', compact('entity_type', 'invitation_key')); - } - - session()->flash('PASSWORD_FAILED', true); - - return back(); - } - - public function handlePasswordSet(Request $request) - { - $entity_obj = 'App\Models\\'.ucfirst(Str::camel($request->entity_type)).'Invitation'; - $key = $request->entity_type.'_id'; - - $invitation = $entity_obj::where('key', $request->invitation_key) - ->whereHas($request->entity_type, function ($query) { - $query->where('is_deleted', 0); - }) - ->with('contact.client') - ->firstOrFail(); - - $contact = $invitation->contact; - $contact->password = Hash::make($request->password); - $contact->save(); - - $request->session()->invalidate(); - auth()->guard('contact')->loginUsingId($contact->id, true); - - if (! $invitation->viewed_date) { - $invitation->markViewed(); - - if (! session()->get('is_silent')) { - event(new InvitationWasViewed($invitation->{$request->entity_type}, $invitation, $invitation->{$request->entity_type}->company, Ninja::eventVars())); - } - - if (! session()->get('is_silent')) { - $this->fireEntityViewedEvent($invitation, $request->entity_type); - } - } - - return redirect()->route('client.'.$request->entity_type.'.show', [$request->entity_type => $this->encodePrimaryKey($invitation->{$key})]); - } - - private function fireEntityViewedEvent($invitation, $entity_string) - { - switch ($entity_string) { - case 'invoice': - event(new InvoiceWasViewed($invitation, $invitation->company, Ninja::eventVars())); - break; - case 'quote': - event(new QuoteWasViewed($invitation, $invitation->company, Ninja::eventVars())); - break; - case 'credit': - event(new CreditWasViewed($invitation, $invitation->company, Ninja::eventVars())); - break; - default: - // code... - break; - } - } -} diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php index e5007cca9a48..cc19d8b5a1f1 100644 --- a/app/Http/Controllers/ClientPortal/InvitationController.php +++ b/app/Http/Controllers/ClientPortal/InvitationController.php @@ -26,6 +26,7 @@ use App\Models\InvoiceInvitation; use App\Events\Quote\QuoteWasViewed; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; use App\Events\Credit\CreditWasViewed; use App\Events\Contact\ContactLoggedIn; use App\Models\PurchaseOrderInvitation; @@ -195,7 +196,7 @@ class InvitationController extends Controller $file_name = $invitation->{$entity}->numberFormatter().'.pdf'; - $file = (new CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new CreateRawPdf($invitation))->handle(); $headers = ['Content-Type' => 'application/pdf']; @@ -212,6 +213,41 @@ class InvitationController extends Controller { } + + public function handlePasswordSet(Request $request) + { + $entity_obj = 'App\Models\\'.ucfirst(Str::camel($request->entity_type)).'Invitation'; + $key = $request->entity_type.'_id'; + + $invitation = $entity_obj::where('key', $request->invitation_key) + ->whereHas($request->entity_type, function ($query) { + $query->where('is_deleted', 0); + }) + ->with('contact.client') + ->firstOrFail(); + + $contact = $invitation->contact; + $contact->password = Hash::make($request->password); + $contact->save(); + + $request->session()->invalidate(); + auth()->guard('contact')->loginUsingId($contact->id, true); + + if (! $invitation->viewed_date) { + $invitation->markViewed(); + + if (! session()->get('is_silent')) { + event(new InvitationWasViewed($invitation->{$request->entity_type}, $invitation, $invitation->{$request->entity_type}->company, Ninja::eventVars())); + } + + if (! session()->get('is_silent')) { + $this->fireEntityViewedEvent($invitation, $request->entity_type); + } + } + + return redirect()->route('client.'.$request->entity_type.'.show', [$request->entity_type => $this->encodePrimaryKey($invitation->{$key})]); + } + public function paymentRouter(string $contact_key, string $payment_id) { /** @var \App\Models\ClientContact $contact **/ diff --git a/app/Http/Controllers/ClientPortal/InvoiceController.php b/app/Http/Controllers/ClientPortal/InvoiceController.php index bbed2ee5bbbf..cc882291af7d 100644 --- a/app/Http/Controllers/ClientPortal/InvoiceController.php +++ b/app/Http/Controllers/ClientPortal/InvoiceController.php @@ -107,7 +107,7 @@ class InvoiceController extends Controller return redirect('/'); } - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $headers = ['Content-Type' => 'application/pdf']; return response()->make($file, 200, $headers); diff --git a/app/Http/Controllers/ClientPortal/QuoteController.php b/app/Http/Controllers/ClientPortal/QuoteController.php index 39d48aab2904..6e12701bb680 100644 --- a/app/Http/Controllers/ClientPortal/QuoteController.php +++ b/app/Http/Controllers/ClientPortal/QuoteController.php @@ -137,7 +137,7 @@ class QuoteController extends Controller if ($quote_invitations->count() == 1) { $invitation = $quote_invitations->first(); - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); return response()->streamDownload(function () use ($file) { echo $file; }, $invitation->quote->numberFormatter().".pdf", ['Content-Type' => 'application/pdf']); @@ -152,7 +152,7 @@ class QuoteController extends Controller $zipFile = new \PhpZip\ZipFile(); try { foreach ($quote_invitations as $invitation) { - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $zipFile->addFromString($invitation->quote->numberFormatter() . '.pdf', $file); } diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php index b2be03691eb7..9ab4db36bdff 100644 --- a/app/Http/Controllers/CreditController.php +++ b/app/Http/Controllers/CreditController.php @@ -533,14 +533,14 @@ class CreditController extends BaseController } }); - ZipCredits::dispatch($credits->pluck('id')->toArray(), $credits->first()->company, $user); + ZipCredits::dispatch($credits->pluck('id')->toArray(), $user->company(), $user); return response()->json(['message' => ctrans('texts.sent_message')], 200); } if ($action == 'bulk_print' && $user->can('view', $credits->first())) { $paths = $credits->map(function ($credit) { - return (new \App\Jobs\Entity\CreateRawPdf($credit->invitations->first(), $credit->company->db))->handle(); + return (new \App\Jobs\Entity\CreateRawPdf($credit->invitations->first()))->handle(); }); $merge = (new PdfMerge($paths->toArray()))->run(); @@ -593,8 +593,8 @@ class CreditController extends BaseController $file = $credit->service()->getCreditPdf($credit->invitations->first()); return response()->streamDownload(function () use ($file) { - echo Storage::get($file); - }, basename($file), ['Content-Type' => 'application/pdf']); + echo $file; + }, $credit->numberFormatter().'.pdf', ['Content-Type' => 'application/pdf']); break; case 'archive': $this->credit_repository->archive($credit); @@ -710,8 +710,9 @@ class CreditController extends BaseController } return response()->streamDownload(function () use ($file) { - echo Storage::get($file); - }, basename($file), $headers); + echo $file; + }, $credit->numberFormatter().'.pdf', $headers); + } /** diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index e7df44100636..6322dfc9ee69 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -528,7 +528,7 @@ class InvoiceController extends BaseController if ($action == 'bulk_print' && $user->can('view', $invoices->first())) { $paths = $invoices->map(function ($invoice) { - return (new \App\Jobs\Entity\CreateRawPdf($invoice->invitations->first(), $invoice->company->db))->handle(); + return (new \App\Jobs\Entity\CreateRawPdf($invoice->invitations->first()))->handle(); }); $merge = (new PdfMerge($paths->toArray()))->run(); @@ -798,7 +798,7 @@ class InvoiceController extends BaseController $file_name = $invoice->numberFormatter().'.pdf'; - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $headers = ['Content-Type' => 'application/pdf']; diff --git a/app/Http/Controllers/PurchaseOrderController.php b/app/Http/Controllers/PurchaseOrderController.php index 4ed383f30870..fa469a9d6d6e 100644 --- a/app/Http/Controllers/PurchaseOrderController.php +++ b/app/Http/Controllers/PurchaseOrderController.php @@ -367,7 +367,6 @@ class PurchaseOrderController extends BaseController $purchase_order = $purchase_order->service() ->triggeredActions($request) - // ->touchPdf() ->save(); event(new PurchaseOrderWasUpdated($purchase_order, $purchase_order->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null))); diff --git a/app/Http/Controllers/QuoteController.php b/app/Http/Controllers/QuoteController.php index 45cfc2293fd8..915e325ed76f 100644 --- a/app/Http/Controllers/QuoteController.php +++ b/app/Http/Controllers/QuoteController.php @@ -562,7 +562,7 @@ class QuoteController extends BaseController if ($action == 'bulk_print' && $user->can('view', $quotes->first())) { $paths = $quotes->map(function ($quote) { - return (new \App\Jobs\Entity\CreateRawPdf($quote->invitations->first(), $quote->company->db))->handle(); + return (new \App\Jobs\Entity\CreateRawPdf($quote->invitations->first()))->handle(); }); $merge = (new PdfMerge($paths->toArray()))->run(); @@ -724,8 +724,8 @@ class QuoteController extends BaseController $file = $quote->service()->getQuotePdf(); return response()->streamDownload(function () use ($file) { - echo Storage::get($file); - }, basename($file), ['Content-Type' => 'application/pdf']); + echo $file; + }, $quote->numberFormatter().".pdf", ['Content-Type' => 'application/pdf']); case 'restore': $this->quote_repo->restore($quote); @@ -828,17 +828,18 @@ class QuoteController extends BaseController App::setLocale($invitation->contact->preferredLocale()); - $file = $quote->service()->getQuotePdf($contact); - $headers = ['Content-Type' => 'application/pdf']; if (request()->input('inline') == 'true') { $headers = array_merge($headers, ['Content-Disposition' => 'inline']); } + $file = $quote->service()->getQuotePdf($contact); + return response()->streamDownload(function () use ($file) { - echo Storage::get($file); - }, basename($file), $headers); + echo $file; + }, $quote->numberFormatter().".pdf", $headers); + } /** diff --git a/app/Http/Controllers/RecurringInvoiceController.php b/app/Http/Controllers/RecurringInvoiceController.php index 94c2192d178a..12c3f9dad0e1 100644 --- a/app/Http/Controllers/RecurringInvoiceController.php +++ b/app/Http/Controllers/RecurringInvoiceController.php @@ -580,7 +580,7 @@ class RecurringInvoiceController extends BaseController $file_name = $invoice->numberFormatter().'.pdf'; - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $headers = ['Content-Type' => 'application/pdf']; diff --git a/app/Http/Livewire/PdfSlot.php b/app/Http/Livewire/PdfSlot.php index c18556ba7b81..9638eafe2d02 100644 --- a/app/Http/Livewire/PdfSlot.php +++ b/app/Http/Livewire/PdfSlot.php @@ -98,7 +98,7 @@ class PdfSlot extends Component if($this->entity instanceof \App\Models\PurchaseOrder) $file = (new CreatePurchaseOrderPdf($this->invitation, $this->invitation->company->db))->rawPdf(); else - $file = (new \App\Jobs\Entity\CreateRawPdf($this->invitation, $this->invitation->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($this->invitation))->handle(); $headers = ['Content-Type' => 'application/pdf']; diff --git a/app/Jobs/Credit/ZipCredits.php b/app/Jobs/Credit/ZipCredits.php index 625e02494cb5..88a2d66d517d 100644 --- a/app/Jobs/Credit/ZipCredits.php +++ b/app/Jobs/Credit/ZipCredits.php @@ -55,7 +55,7 @@ class ZipCredits implements ShouldQueue try { foreach ($invitations as $invitation) { - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $this->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $zipFile->addFromString($invitation->credit->numberFormatter() . '.pdf', $file); } diff --git a/app/Jobs/Entity/CreateRawPdf.php b/app/Jobs/Entity/CreateRawPdf.php index 4f1619587e9a..4118e448f1d8 100644 --- a/app/Jobs/Entity/CreateRawPdf.php +++ b/app/Jobs/Entity/CreateRawPdf.php @@ -44,9 +44,9 @@ use App\Services\PdfMaker\Design as PdfDesignModel; use App\Services\PdfMaker\Design as PdfMakerDesign; use App\Services\PdfMaker\PdfMaker as PdfMakerService; -class CreateRawPdf implements ShouldQueue +class CreateRawPdf { - use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, NumberFormatter, MakesInvoiceHtml, PdfMaker, MakesHash, PageNumbering; + use NumberFormatter, MakesInvoiceHtml, PdfMaker, MakesHash, PageNumbering; public Invoice | Credit | Quote | RecurringInvoice $entity; @@ -59,13 +59,10 @@ class CreateRawPdf implements ShouldQueue public $entity_string = ''; /** - * Create a new job instance. - * * @param $invitation */ - public function __construct($invitation, $db) + public function __construct($invitation) { - MultiDB::setDb($db); $this->invitation = $invitation; @@ -99,8 +96,6 @@ class CreateRawPdf implements ShouldQueue $pdf = $ps->boot()->getPdf(); nlog("pdf timer = ". $ps->execution_time); - - /* Forget the singleton*/ App::forgetInstance('translator'); diff --git a/app/Jobs/Quote/ZipQuotes.php b/app/Jobs/Quote/ZipQuotes.php index b1675b7c0e27..352be947858a 100644 --- a/app/Jobs/Quote/ZipQuotes.php +++ b/app/Jobs/Quote/ZipQuotes.php @@ -60,7 +60,7 @@ class ZipQuotes implements ShouldQueue try { foreach ($invitations as $invitation) { - $file = (new \App\Jobs\Entity\CreateRawPdf($invitation, $this->company->db))->handle(); + $file = (new \App\Jobs\Entity\CreateRawPdf($invitation))->handle(); $zipFile->addFromString($invitation->quote->numberFormatter() . '.pdf', $file); } diff --git a/app/Mail/Engine/CreditEmailEngine.php b/app/Mail/Engine/CreditEmailEngine.php index d6a7bda08b15..75b34299da67 100644 --- a/app/Mail/Engine/CreditEmailEngine.php +++ b/app/Mail/Engine/CreditEmailEngine.php @@ -115,7 +115,7 @@ class CreditEmailEngine extends BaseEmailEngine if ($this->client->getSetting('pdf_email_attachment') !== false && $this->credit->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { - $pdf = ((new CreateRawPdf($this->invitation, $this->invitation->company->db))->handle()); + $pdf = ((new CreateRawPdf($this->invitation))->handle()); $this->setAttachments([['file' => base64_encode($pdf), 'name' => $this->credit->numberFormatter().'.pdf']]); } diff --git a/app/Mail/Engine/InvoiceEmailEngine.php b/app/Mail/Engine/InvoiceEmailEngine.php index 70ab7ee7060f..42ca22ac65f0 100644 --- a/app/Mail/Engine/InvoiceEmailEngine.php +++ b/app/Mail/Engine/InvoiceEmailEngine.php @@ -127,7 +127,7 @@ class InvoiceEmailEngine extends BaseEmailEngine ->setTextBody($text_body); if ($this->client->getSetting('pdf_email_attachment') !== false && $this->invoice->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { - $pdf = ((new CreateRawPdf($this->invitation, $this->invitation->company->db))->handle()); + $pdf = ((new CreateRawPdf($this->invitation))->handle()); $this->setAttachments([['file' => base64_encode($pdf), 'name' => $this->invoice->numberFormatter().'.pdf']]); } diff --git a/app/Mail/Engine/PaymentEmailEngine.php b/app/Mail/Engine/PaymentEmailEngine.php index 0f15634fb012..a3f303f714d9 100644 --- a/app/Mail/Engine/PaymentEmailEngine.php +++ b/app/Mail/Engine/PaymentEmailEngine.php @@ -138,7 +138,7 @@ class PaymentEmailEngine extends BaseEmailEngine if(!$template_in_use) { - $pdf = ((new CreateRawPdf($invoice->invitations->first(), $invoice->company->db))->handle()); + $pdf = ((new CreateRawPdf($invoice->invitations->first()))->handle()); $file_name = $invoice->numberFormatter().'.pdf'; $this->setAttachments([['file' => base64_encode($pdf), 'name' => $file_name]]); } diff --git a/app/Mail/Engine/QuoteEmailEngine.php b/app/Mail/Engine/QuoteEmailEngine.php index 72f3a13db1d7..a4b3df35db97 100644 --- a/app/Mail/Engine/QuoteEmailEngine.php +++ b/app/Mail/Engine/QuoteEmailEngine.php @@ -113,7 +113,7 @@ class QuoteEmailEngine extends BaseEmailEngine ->setTextBody($text_body); if ($this->client->getSetting('pdf_email_attachment') !== false && $this->quote->company->account->hasFeature(Account::FEATURE_PDF_ATTACHMENT)) { - $pdf = ((new CreateRawPdf($this->invitation, $this->invitation->company->db))->handle()); + $pdf = ((new CreateRawPdf($this->invitation))->handle()); $this->setAttachments([['file' => base64_encode($pdf), 'name' => $this->quote->numberFormatter().'.pdf']]); } diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php index 20f119b0c94f..c8e4eb6a0356 100644 --- a/app/Models/BaseModel.php +++ b/app/Models/BaseModel.php @@ -306,7 +306,7 @@ class BaseModel extends Model if($this instanceof \App\Models\PurchaseOrder) return "data:application/pdf;base64,".base64_encode((new CreatePurchaseOrderPdf($invitation, $invitation->company->db))->rawPdf()); - return "data:application/pdf;base64,".base64_encode((new CreateRawPdf($invitation, $invitation->company->db))->handle()); + return "data:application/pdf;base64,".base64_encode((new CreateRawPdf($invitation))->handle()); } } diff --git a/app/Models/Credit.php b/app/Models/Credit.php index d7d5e91d869f..1adcdb89a8ca 100644 --- a/app/Models/Credit.php +++ b/app/Models/Credit.php @@ -16,7 +16,7 @@ use Illuminate\Support\Carbon; use App\Utils\Traits\MakesHash; use App\Utils\Traits\MakesDates; use App\Helpers\Invoice\InvoiceSum; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Utils\Traits\MakesReminders; use App\Services\Credit\CreditService; use App\Services\Ledger\LedgerService; @@ -26,8 +26,6 @@ use Laracasts\Presenter\PresentableTrait; use App\Models\Presenters\CreditPresenter; use App\Helpers\Invoice\InvoiceSumInclusive; use Illuminate\Database\Eloquent\SoftDeletes; -use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Eloquent\Relations\MorphMany; /** * App\Models\Credit @@ -360,6 +358,7 @@ class Credit extends BaseModel $this->saveQuietly(); } + /** @deprecated 5.7 */ public function pdf_file_path($invitation = null, string $type = 'path', bool $portal = false) { if (! $invitation) { @@ -380,7 +379,7 @@ class Credit extends BaseModel if (Ninja::isHosted() && $portal && Storage::disk(config('filesystems.default'))->exists($file_path)) { return Storage::disk(config('filesystems.default'))->{$type}($file_path); } elseif (Ninja::isHosted() && $portal) { - $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); + // $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); return Storage::disk(config('filesystems.default'))->{$type}($file_path); } @@ -402,7 +401,7 @@ class Credit extends BaseModel return Storage::disk('public')->{$type}($file_path); } - $file_path = (new CreateEntityPdf($invitation))->handle(); + // $file_path = (new CreateEntityPdf($invitation))->handle(); return Storage::disk('public')->{$type}($file_path); } diff --git a/app/Models/CreditInvitation.php b/app/Models/CreditInvitation.php index 2f8926700e40..f1473f4944ca 100644 --- a/app/Models/CreditInvitation.php +++ b/app/Models/CreditInvitation.php @@ -11,7 +11,7 @@ namespace App\Models; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Utils\Traits\Inviteable; use App\Utils\Traits\MakesDates; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -155,12 +155,13 @@ class CreditInvitation extends BaseModel $this->save(); } + /** @deprecated 5.7 */ public function pdf_file_path() { $storage_path = Storage::url($this->credit->client->quote_filepath($this).$this->credit->numberFormatter().'.pdf'); if (! Storage::exists($this->credit->client->credit_filepath($this).$this->credit->numberFormatter().'.pdf')) { - (new CreateEntityPdf($this))->handle(); + // (new CreateEntityPdf($this))->handle(); } return $storage_path; diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php index 22e9093f2d18..abec2ad21ac5 100644 --- a/app/Models/Invoice.php +++ b/app/Models/Invoice.php @@ -14,9 +14,8 @@ namespace App\Models; use App\Utils\Ninja; use Illuminate\Support\Carbon; use App\Utils\Traits\MakesDates; -use App\Jobs\Entity\CreateRawPdf; use App\Helpers\Invoice\InvoiceSum; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Utils\Traits\MakesReminders; use App\Utils\Traits\NumberFormatter; use App\Services\Ledger\LedgerService; @@ -26,12 +25,10 @@ use App\Utils\Traits\MakesInvoiceValues; use App\Events\Invoice\InvoiceWasEmailed; use Laracasts\Presenter\PresentableTrait; use App\Models\Presenters\EntityPresenter; -use App\Models\Presenters\InvoicePresenter; use App\Helpers\Invoice\InvoiceSumInclusive; use App\Utils\Traits\Invoice\ActionsInvoice; use Illuminate\Database\Eloquent\SoftDeletes; use App\Events\Invoice\InvoiceReminderWasEmailed; -use Illuminate\Database\Eloquent\Relations\HasManyThrough; /** * App\Models\Invoice @@ -529,6 +526,7 @@ class Invoice extends BaseModel return $invoice_calc->build(); } + /** @deprecated 5.7 */ public function pdf_file_path($invitation = null, string $type = 'path', bool $portal = false) { @@ -559,7 +557,7 @@ class Invoice extends BaseModel if (Ninja::isHosted() && $portal && $file_exists) { return Storage::disk(config('filesystems.default'))->{$type}($file_path); } elseif (Ninja::isHosted()) { - $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); + // $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); return Storage::disk(config('filesystems.default'))->{$type}($file_path); } @@ -584,7 +582,7 @@ class Invoice extends BaseModel return Storage::disk('public')->{$type}($file_path); } - $file_path = (new CreateEntityPdf($invitation))->handle(); + // $file_path = (new CreateEntityPdf($invitation))->handle(); return Storage::disk('public')->{$type}($file_path); } diff --git a/app/Models/InvoiceInvitation.php b/app/Models/InvoiceInvitation.php index f8fb383db5dd..61578c427fd1 100644 --- a/app/Models/InvoiceInvitation.php +++ b/app/Models/InvoiceInvitation.php @@ -12,11 +12,10 @@ namespace App\Models; use App\Events\Invoice\InvoiceWasUpdated; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Utils\Ninja; use App\Utils\Traits\Inviteable; use App\Utils\Traits\MakesDates; -use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Storage; @@ -158,13 +157,14 @@ class InvoiceInvitation extends BaseModel $this->save(); } + /** @deprecated 5.7 */ public function pdf_file_path(): string { $storage_path = Storage::url($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf'); if (! Storage::exists($this->invoice->client->invoice_filepath($this).$this->invoice->numberFormatter().'.pdf')) { event(new InvoiceWasUpdated($this->invoice, $this->company, Ninja::eventVars(auth()->user() ? auth()->user()->id : null))); - (new CreateEntityPdf($this))->handle(); + // (new CreateEntityPdf($this))->handle(); } return $storage_path; diff --git a/app/Models/PurchaseOrder.php b/app/Models/PurchaseOrder.php index 61f334b62c12..7752d919190f 100644 --- a/app/Models/PurchaseOrder.php +++ b/app/Models/PurchaseOrder.php @@ -281,6 +281,7 @@ class PurchaseOrder extends BaseModel }); } + /** @deprecated 5.7 */ public function pdf_file_path($invitation = null, string $type = 'path', bool $portal = false) { if (! $invitation) { diff --git a/app/Models/Quote.php b/app/Models/Quote.php index 3ab63980e771..a2c18c5aef84 100644 --- a/app/Models/Quote.php +++ b/app/Models/Quote.php @@ -13,7 +13,7 @@ namespace App\Models; use App\Helpers\Invoice\InvoiceSum; use App\Helpers\Invoice\InvoiceSumInclusive; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Models\Presenters\QuotePresenter; use App\Services\Quote\QuoteService; use App\Utils\Ninja; @@ -314,6 +314,7 @@ class Quote extends BaseModel return new QuoteService($this); } + /** @deprecated 5.7 */ public function pdf_file_path($invitation = null, string $type = 'path', bool $portal = false) { if (! $invitation) { @@ -334,7 +335,7 @@ class Quote extends BaseModel if (Ninja::isHosted() && $portal && Storage::disk(config('filesystems.default'))->exists($file_path)) { return Storage::disk(config('filesystems.default'))->{$type}($file_path); } elseif (Ninja::isHosted() && $portal) { - $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); + // $file_path = (new CreateEntityPdf($invitation, config('filesystems.default')))->handle(); return Storage::disk(config('filesystems.default'))->{$type}($file_path); } @@ -354,7 +355,7 @@ class Quote extends BaseModel return Storage::disk('public')->{$type}($file_path); } - $file_path = (new CreateEntityPdf($invitation))->handle(); + // $file_path = (new CreateEntityPdf($invitation))->handle(); return Storage::disk('public')->{$type}($file_path); } diff --git a/app/Models/QuoteInvitation.php b/app/Models/QuoteInvitation.php index abe0f5668ca6..878a74869098 100644 --- a/app/Models/QuoteInvitation.php +++ b/app/Models/QuoteInvitation.php @@ -11,10 +11,8 @@ namespace App\Models; -use App\Jobs\Entity\CreateEntityPdf; use App\Utils\Traits\Inviteable; use App\Utils\Traits\MakesDates; -use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Storage; @@ -141,12 +139,14 @@ class QuoteInvitation extends BaseModel $this->save(); } + /** @deprecated 5.7 */ + public function pdf_file_path() { $storage_path = Storage::url($this->quote->client->quote_filepath($this).$this->quote->numberFormatter().'.pdf'); if (! Storage::exists($this->quote->client->quote_filepath($this).$this->quote->numberFormatter().'.pdf')) { - (new CreateEntityPdf($this))->handle(); + // (new CreateEntityPdf($this))->handle(); } return $storage_path; diff --git a/app/Services/Credit/CreditService.php b/app/Services/Credit/CreditService.php index 7b00f0ead97d..6ed9a4df141b 100644 --- a/app/Services/Credit/CreditService.php +++ b/app/Services/Credit/CreditService.php @@ -15,10 +15,9 @@ use App\Utils\Ninja; use App\Models\Credit; use App\Models\Payment; use App\Models\PaymentType; -use App\Jobs\Util\UnlinkFile; use App\Factory\PaymentFactory; use App\Utils\Traits\MakesHash; -use App\Jobs\Entity\CreateEntityPdf; +// use App\Jobs\Entity\CreateEntityPdf; use App\Repositories\CreditRepository; use App\Repositories\PaymentRepository; use Illuminate\Support\Facades\Storage; @@ -180,32 +179,6 @@ class CreditService return $this; } - /** - * Sometimes we need to refresh the - * PDF when it is updated etc. - * @return self - */ - public function touchPdf($force = false) - { - try { - if ($force) { - $this->credit->invitations->each(function ($invitation) { - (new CreateEntityPdf($invitation))->handle(); - }); - - return $this; - } - - $this->credit->invitations->each(function ($invitation) { - CreateEntityPdf::dispatch($invitation); - }); - } catch (\Exception $e) { - nlog('failed creating invoices in Touch PDF'); - } - - return $this; - } - public function fillDefaults() { $settings = $this->credit->client->getMergedSettings(); diff --git a/app/Services/Credit/GetCreditPdf.php b/app/Services/Credit/GetCreditPdf.php index 0ad1d9aac220..e1f59b68236b 100644 --- a/app/Services/Credit/GetCreditPdf.php +++ b/app/Services/Credit/GetCreditPdf.php @@ -11,38 +11,20 @@ namespace App\Services\Credit; -use App\Jobs\Entity\CreateEntityPdf; +use App\Models\CreditInvitation; +use App\Jobs\Entity\CreateRawPdf; use App\Services\AbstractService; class GetCreditPdf extends AbstractService { - public $credit; - - public $contact; - - public $invitation; - - public function __construct($invitation) + public function __construct(public CreditInvitation $invitation) { - $this->invitation = $invitation; - $this->credit = $invitation->credit; - $this->contact = $invitation->contact; } public function run() { - if (! $this->contact) { - $this->contact = $this->credit->client->primary_contact()->first() ?: $this->credit->client->contacts()->first(); - } - $path = $this->credit->client->credit_filepath($this->invitation); + return (new CreateRawPdf($this->invitation))->handle(); - $file_path = $path.$this->credit->numberFormatter().'.pdf'; - - // $disk = 'public'; - $disk = config('filesystems.default'); - - $file_path = (new CreateEntityPdf($this->invitation))->handle(); - return $file_path; } } diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php index 1f78facaa1e5..bf02092819b3 100644 --- a/app/Services/Email/EmailDefaults.php +++ b/app/Services/Email/EmailDefaults.php @@ -24,7 +24,6 @@ use App\Utils\Traits\MakesHash; use App\Jobs\Entity\CreateRawPdf; use Illuminate\Support\Facades\App; use Illuminate\Mail\Mailables\Address; -use Illuminate\Support\Facades\Storage; use App\DataMapper\EmailTemplateDefaults; use League\CommonMark\CommonMarkConverter; use App\Jobs\Vendor\CreatePurchaseOrderPdf; @@ -308,7 +307,7 @@ class EmailDefaults ($this->email->email_object->entity instanceof Invoice || $this->email->email_object->entity instanceof Quote || $this->email->email_object->entity instanceof Credit)) { - $pdf = ((new CreateRawPdf($this->email->email_object->invitation, $this->email->company->db))->handle()); + $pdf = ((new CreateRawPdf($this->email->email_object->invitation))->handle()); $this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($pdf), 'name' => $this->email->email_object->entity->numberFormatter().'.pdf']]); } diff --git a/app/Services/Invoice/GetInvoicePdf.php b/app/Services/Invoice/GetInvoicePdf.php index 9211a15bb8fd..f2eeee32cbef 100644 --- a/app/Services/Invoice/GetInvoicePdf.php +++ b/app/Services/Invoice/GetInvoicePdf.php @@ -11,12 +11,10 @@ namespace App\Services\Invoice; -use App\Jobs\Entity\CreateEntityPdf; -use App\Jobs\Invoice\CreateEInvoice; -use App\Models\ClientContact; use App\Models\Invoice; +use App\Models\ClientContact; +use App\Jobs\Entity\CreateRawPdf; use App\Services\AbstractService; -use Illuminate\Support\Facades\Storage; class GetInvoicePdf extends AbstractService { @@ -36,19 +34,7 @@ class GetInvoicePdf extends AbstractService $invitation = $this->invoice->invitations->first(); } - $path = $this->invoice->client->invoice_filepath($invitation); + return (new CreateRawPdf($invitation))->handle(); - $file_path = $path.$this->invoice->numberFormatter().'.pdf'; - - // $disk = 'public'; - $disk = config('filesystems.default'); - - $file = Storage::disk($disk)->exists($file_path); - - if (! $file) { - $file_path = (new CreateEntityPdf($invitation))->handle(); - } - - return $file_path; } } diff --git a/app/Services/Invoice/InvoiceService.php b/app/Services/Invoice/InvoiceService.php index 4d248bc031f6..affba6b25536 100644 --- a/app/Services/Invoice/InvoiceService.php +++ b/app/Services/Invoice/InvoiceService.php @@ -12,7 +12,6 @@ namespace App\Services\Invoice; use App\Events\Invoice\InvoiceWasArchived; -use App\Jobs\Entity\CreateEntityPdf; use App\Jobs\Entity\CreateRawPdf; use App\Jobs\Inventory\AdjustProductInventory; use App\Jobs\Invoice\CreateEInvoice; @@ -20,7 +19,6 @@ use App\Libraries\Currency\Conversion\CurrencyApi; use App\Models\CompanyGateway; use App\Models\Expense; use App\Models\Invoice; -use App\Models\InvoiceInvitation; use App\Models\Payment; use App\Models\Task; use App\Utils\Ninja; @@ -192,7 +190,7 @@ class InvoiceService { $invitation = $contact ? $this->invoice->invitations()->where('contact_id', $contact->id)->first() : $this->invoice->invitations()->first(); - return (new CreateRawPdf($invitation, $invitation->company->db))->handle(); + return (new CreateRawPdf($invitation))->handle(); } public function getInvoiceDeliveryNote(Invoice $invoice, \App\Models\ClientContact $contact = null) @@ -486,39 +484,6 @@ class InvoiceService return $this; } - /** - * Sometimes we need to refresh the - * PDF when it is updated etc. - * @return InvoiceService - */ - public function touchPdf($force = false) - { - try { - if ($force) { - $this->invoice->invitations->each(function ($invitation) { - (new CreateEntityPdf($invitation))->handle(); - }); - - return $this; - } - - - $this->invoice->invitations->each(function ($invitation) { - CreateEntityPdf::dispatch($invitation); - - if ($invitation->invoice->client->getSetting('enable_e_invoice') && $invitation instanceof InvoiceInvitation) { - CreateEInvoice::dispatch($invitation->invoice); - } - - }); - - } catch (\Exception $e) { - nlog('failed creating invoices in Touch PDF'); - } - - return $this; - } - /*When a reminder is sent we want to touch the dates they were sent*/ public function touchReminder(string $reminder_template) { diff --git a/app/Services/PurchaseOrder/PurchaseOrderService.php b/app/Services/PurchaseOrder/PurchaseOrderService.php index 3445e261dd7d..6ee50bc5a466 100644 --- a/app/Services/PurchaseOrder/PurchaseOrderService.php +++ b/app/Services/PurchaseOrder/PurchaseOrderService.php @@ -98,27 +98,6 @@ class PurchaseOrderService return $this; } - public function touchPdf($force = false) - { - try { - if ($force) { - $this->purchase_order->invitations->each(function ($invitation) { - (new CreatePurchaseOrderPdf($invitation))->handle(); - }); - - return $this; - } - - $this->purchase_order->invitations->each(function ($invitation) { - CreatePurchaseOrderPdf::dispatch($invitation); - }); - } catch(\Exception $e) { - nlog("failed creating purchase orders in Touch PDF"); - } - - return $this; - } - public function add_to_inventory() { if ($this->purchase_order->status_id >= PurchaseOrder::STATUS_RECEIVED) { diff --git a/app/Services/Quote/GetQuotePdf.php b/app/Services/Quote/GetQuotePdf.php index 5ae880e33052..d58268cbe050 100644 --- a/app/Services/Quote/GetQuotePdf.php +++ b/app/Services/Quote/GetQuotePdf.php @@ -11,18 +11,15 @@ namespace App\Services\Quote; -use App\Jobs\Entity\CreateEntityPdf; -use App\Models\ClientContact; use App\Models\Quote; +use App\Models\ClientContact; +use App\Jobs\Entity\CreateRawPdf; use App\Services\AbstractService; class GetQuotePdf extends AbstractService { public function __construct(public Quote $quote, public ?ClientContact $contact = null) { - $this->quote = $quote; - - $this->contact = $contact; } public function run() @@ -37,16 +34,7 @@ class GetQuotePdf extends AbstractService $invitation = $this->quote->invitations->first(); } - $path = $this->quote->client->quote_filepath($invitation); + return (new CreateRawPdf($invitation))->handle(); - $file_path = $path . $this->quote->numberFormatter() . '.pdf'; - - // $disk = 'public'; - $disk = config('filesystems.default'); - - - $file_path = (new CreateEntityPdf($invitation))->handle(); - - return $file_path; } } diff --git a/app/Services/Quote/QuoteService.php b/app/Services/Quote/QuoteService.php index e12168af52e1..d6a09c08fbf1 100644 --- a/app/Services/Quote/QuoteService.php +++ b/app/Services/Quote/QuoteService.php @@ -16,7 +16,6 @@ use App\Models\Quote; use App\Models\Project; use App\Utils\Traits\MakesHash; use App\Exceptions\QuoteConversion; -use App\Jobs\Entity\CreateEntityPdf; use App\Repositories\QuoteRepository; use App\Events\Quote\QuoteWasApproved; use Illuminate\Support\Facades\Storage; @@ -133,32 +132,7 @@ class QuoteService return $this; } - /** - * Sometimes we need to refresh the - * PDF when it is updated etc. - * - * @return QuoteService - */ - public function touchPdf($force = false) - { - try { - if ($force) { - $this->quote->invitations->each(function ($invitation) { - (new CreateEntityPdf($invitation))->handle(); - }); - return $this; - } - - $this->quote->invitations->each(function ($invitation) { - CreateEntityPdf::dispatch($invitation); - }); - } catch (\Exception $e) { - nlog('failed creating invoices in Touch PDF'); - } - - return $this; - } public function approveWithNoCoversion($contact = null) :self { diff --git a/app/Services/Recurring/GetInvoicePdf.php b/app/Services/Recurring/GetInvoicePdf.php index 079bd55eea6e..ea66fff6a8b3 100644 --- a/app/Services/Recurring/GetInvoicePdf.php +++ b/app/Services/Recurring/GetInvoicePdf.php @@ -11,22 +11,15 @@ namespace App\Services\Recurring; -use App\Jobs\Entity\CreateEntityPdf; use App\Models\ClientContact; +use App\Jobs\Entity\CreateRawPdf; use App\Services\AbstractService; -use Illuminate\Support\Facades\Storage; class GetInvoicePdf extends AbstractService { - public $entity; - - public $contact; - public function __construct($entity, ClientContact $contact = null) + public function __construct(public $entity, public ClientContact $contact = null) { - $this->entity = $entity; - - $this->contact = $contact; } public function run() @@ -37,18 +30,11 @@ class GetInvoicePdf extends AbstractService $invitation = $this->entity->invitations->where('client_contact_id', $this->contact->id)->first(); - $path = $this->entity->client->recurring_invoice_filepath($invitation); - - $file_path = $path.$this->entity->hashed_id.'.pdf'; - - $disk = config('filesystems.default'); - - $file = Storage::disk($disk)->exists($file_path); - - if (! $file) { - $file_path = (new CreateEntityPdf($invitation))->handle(); + if (! $invitation) { + $invitation = $this->entity->invitations->first(); } - return $file_path; + return (new CreateRawPdf($invitation))->handle(); + } } diff --git a/resources/views/themes/ninja2020/view_entity/index.blade.php b/resources/views/themes/ninja2020/view_entity/index.blade.php deleted file mode 100644 index d5c1b1db89b7..000000000000 --- a/resources/views/themes/ninja2020/view_entity/index.blade.php +++ /dev/null @@ -1,58 +0,0 @@ -@extends('portal.ninja2020.layout.clean') - -@push('head') - - - -@endpush - -@section('body') -