Set new default design if current default is deleted

This commit is contained in:
David Bomba 2023-04-29 21:01:02 +10:00
parent c9ad9c24db
commit 939dd44be5
13 changed files with 55 additions and 14 deletions

View File

@ -521,8 +521,11 @@ class DesignController extends BaseController
$designs = Design::withTrashed()->company()->whereIn('id', $this->transformKeys($ids));
$designs->each(function ($design, $key) use ($action) {
if (auth()->user()->can('edit', $design)) {
/** @var \App\Models\User $user */
$user = auth()->user();
$designs->each(function ($design, $key) use ($action, $user) {
if ($user->can('edit', $design)) {
$this->design_repo->{$action}($design);
}
});
@ -534,7 +537,11 @@ class DesignController extends BaseController
{
$design_id = $request->input('design_id');
$entity = $request->input('entity');
$company = auth()->user()->getCompany();
/** @var \App\Models\User $user */
$user = auth()->user();
$company = $user->getCompany();
$design = Design::where('company_id', $company->id)
->orWhereNull('company_id')

View File

@ -237,7 +237,7 @@ class PreviewController extends BaseController
$html = new HtmlEngine($entity_obj->invitations()->first());
$design = \App\Models\Design::find($entity_obj->design_id);
$design = \App\Models\Design::withTrashed()->find($entity_obj->design_id);
/* Catch all in case migration doesn't pass back a valid design */
if (! $design) {

View File

@ -196,7 +196,7 @@ class PreviewPurchaseOrderController extends BaseController
$html = new VendorHtmlEngine($entity_obj->invitations()->first());
$design = \App\Models\Design::find($entity_obj->design_id);
$design = \App\Models\Design::withTrashed()->find($entity_obj->design_id);
/* Catch all in case migration doesn't pass back a valid design */
if (!$design) {

View File

@ -135,7 +135,7 @@ class CreateEntityPdf implements ShouldQueue
$entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->client->getSetting($entity_design_id));
$design = Design::find($entity_design_id);
$design = Design::withTrashed()->find($entity_design_id);
/* Catch all in case migration doesn't pass back a valid design */
if (! $design) {

View File

@ -122,7 +122,7 @@ class CreateRawPdf implements ShouldQueue
$entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey($this->entity->client->getSetting($entity_design_id));
$design = Design::find($entity_design_id);
$design = Design::withTrashed()->find($entity_design_id);
/* Catch all in case migration doesn't pass back a valid design */
if (! $design) {

View File

@ -120,7 +120,7 @@ class CreatePurchaseOrderPdf implements ShouldQueue
$entity_design_id = $this->entity->design_id ? $this->entity->design_id : $this->decodePrimaryKey('Wpmbk5ezJn');
$design = Design::find($entity_design_id);
$design = Design::withTrashed()->find($entity_design_id);
/* Catch all in case migration doesn't pass back a valid design */
if (!$design) {

View File

@ -128,7 +128,7 @@ class ActivityRepository extends BaseRepository
$entity_design_id = $entity->design_id ? $entity->design_id : $this->decodePrimaryKey($entity->client->getSetting($entity_design_id));
$design = Design::find($entity_design_id);
$design = Design::withTrashed()->find($entity_design_id);
if (! $entity->invitations()->exists() || ! $design) {
nlog("No invitations for entity {$entity->id} - {$entity->number}");

View File

@ -23,6 +23,40 @@ class DesignRepository extends BaseRepository
{
$design->name = $design->name.'_deleted_'.Str::random(5);
/** Make sure this design was not a default design - if it is, set the Clean template as the default */
/** @var \App\Models\User $user */
$user = auth()->user();
$company = $user->company();
$settings = $company->settings;
if ($settings->invoice_design_id == $design->hashed_id) {
$settings->invoice_design_id = 'Wpmbk5ezJn';
}
if ($settings->quote_design_id == $design->hashed_id) {
$settings->quote_design_id = 'Wpmbk5ezJn';
}
if ($settings->credit_design_id == $design->hashed_id) {
$settings->credit_design_id = 'Wpmbk5ezJn';
}
if ($settings->purchase_order_design_id == $design->hashed_id) {
$settings->purchase_order_design_id = 'Wpmbk5ezJn';
}
$company->settings = $settings;
$company->save();
$company->invoices()->update(['design_id' => $design_id]);
$company->quotes()->update(['design_id' => $design_id]);
$company->credits()->update(['design_id' => $design_id]);
$company->purchase_orders()->update(['design_id' => $design_id]);
$company->recurring_invoices()->update(['design_id' => $design_id]);
parent::delete($design);
return $design;

View File

@ -411,6 +411,6 @@ class Statement
$id = (int) $this->client->getSetting('entity_design_id');
}
return Design::find($id);
return Design::withTrashed()->find($id);
}
}

View File

@ -66,7 +66,7 @@ class GenerateDeliveryNote
return (new Phantom)->generate($this->invoice->invitations->first());
}
$design = Design::find($design_id);
$design = Design::withTrashed()->find($design_id);
$html = new HtmlEngine($invitation);
if ($design->is_custom) {

View File

@ -272,7 +272,7 @@ class PdfConfiguration
{
$design_id = $this->entity->design_id ? : $this->decodePrimaryKey($this->settings_object->getSetting($this->entity_design_id));
$this->design = Design::find($design_id ?: 2);
$this->design = Design::withTrashed()->find($design_id ?: 2);
return $this;
}

View File

@ -64,7 +64,7 @@ class PdfMock
$pdf_config->setPdfVariables();
$pdf_config->setCurrency(Currency::find($this->settings->currency_id));
$pdf_config->setCountry(Country::find($this->settings->country_id ?: 840));
$pdf_config->design = Design::find($this->decodePrimaryKey($pdf_config->entity_design_id));
$pdf_config->design = Design::withTrashed()->find($this->decodePrimaryKey($pdf_config->entity_design_id));
$pdf_config->currency_entity = $this->mock->client;
$pdf_service->config = $pdf_config;

View File

@ -190,7 +190,7 @@ class Phantom
$design_id = $entity_obj->design_id ? $entity_obj->design_id : $this->decodePrimaryKey($entity_obj->client->getSetting($entity_design_id));
$design = Design::find($design_id);
$design = Design::withTrashed()->find($design_id);
$html = new HtmlEngine($invitation);
if ($design->is_custom) {