diff --git a/app/Abstracts/View/Components/DocumentForm.php b/app/Abstracts/View/Components/DocumentForm.php index c1810746f..36fd9a2c7 100644 --- a/app/Abstracts/View/Components/DocumentForm.php +++ b/app/Abstracts/View/Components/DocumentForm.php @@ -285,13 +285,13 @@ abstract class DocumentForm extends Component protected function getRoute($type, $document, $parameters = []) { - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.store'; if ($document) { $parameters = [ - Str::replaceFirst('-', '_', $type) => $document->id + config("type.{$type}.route_parameter") => $document->id ]; $route = $page . '.update'; @@ -344,18 +344,7 @@ abstract class DocumentForm extends Component return $contact_type; } - switch ($type) { - case 'bill': - case 'expense': - case 'purchase': - $contact_type = 'vendor'; - break; - default: - $contact_type = 'customer'; - break; - } - - return $contact_type; + return config("type.{$type}.contact_type"); } protected function getTextAddContact($type, $textAddContact) diff --git a/app/Abstracts/View/Components/DocumentIndex.php b/app/Abstracts/View/Components/DocumentIndex.php index 120d7d68e..b4c43d7a4 100644 --- a/app/Abstracts/View/Components/DocumentIndex.php +++ b/app/Abstracts/View/Components/DocumentIndex.php @@ -296,7 +296,7 @@ abstract class DocumentIndex extends Component return $page; } - return Str::plural($type, 2); + return config("type.{$type}.route_name"); } protected function getDocsPath($type, $docsPath) @@ -349,7 +349,7 @@ abstract class DocumentIndex extends Component return $createRoute; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.create'; @@ -380,8 +380,8 @@ abstract class DocumentIndex extends Component } $importRouteParameters = [ - 'group' => ($type == 'invoice') ? 'sales' : 'purchases', - 'type' => Str::plural($type, 2) + 'group' => config("type.{$type}.group"), + 'type' => config("type.{$type}.route_name") ]; return $importRouteParameters; @@ -393,7 +393,7 @@ abstract class DocumentIndex extends Component return $exportRoute; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.export'; @@ -412,7 +412,7 @@ abstract class DocumentIndex extends Component return $formCardHeaderRoute; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.index'; @@ -453,7 +453,7 @@ abstract class DocumentIndex extends Component return $textBulkAction; } - $textBulkAction = 'general.' . Str::plural($type, 2); + $textBulkAction = 'general.' . config("type.{$type}.translation_key"); return $textBulkAction; } @@ -500,8 +500,8 @@ abstract class DocumentIndex extends Component } $bulkActionRouteParameters = [ - 'group' => ($type == 'invoice') ? 'sales' : 'purchases', - 'type' => Str::plural($type, 2) + 'group' => config("type.{$type}.group"), + 'type' => config("type.{$type}.route_name") ]; return $bulkActionRouteParameters; @@ -702,7 +702,7 @@ abstract class DocumentIndex extends Component return $routeButtonShow; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.show'; @@ -724,7 +724,7 @@ abstract class DocumentIndex extends Component return $routeButtonEdit; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.edit'; @@ -746,7 +746,7 @@ abstract class DocumentIndex extends Component return $routeButtonDuplicate; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.duplicate'; @@ -768,7 +768,7 @@ abstract class DocumentIndex extends Component return $routeButtonCancelled; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.cancelled'; @@ -790,7 +790,7 @@ abstract class DocumentIndex extends Component return $routeButtonDelete; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.destroy'; diff --git a/app/Abstracts/View/Components/DocumentShow.php b/app/Abstracts/View/Components/DocumentShow.php index 1d1068552..f4c0574df 100644 --- a/app/Abstracts/View/Components/DocumentShow.php +++ b/app/Abstracts/View/Components/DocumentShow.php @@ -613,7 +613,7 @@ abstract class DocumentShow extends Component return $signedUrl; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = 'signed.' . $page . '.show'; @@ -674,7 +674,7 @@ abstract class DocumentShow extends Component return $routeButtonAddNew; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.create'; @@ -693,7 +693,7 @@ abstract class DocumentShow extends Component return $routeButtonEdit; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.edit'; @@ -715,7 +715,7 @@ abstract class DocumentShow extends Component return $routeButtonDuplicate; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.duplicate'; @@ -737,7 +737,7 @@ abstract class DocumentShow extends Component return $routeButtonPrint; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.print'; @@ -759,7 +759,7 @@ abstract class DocumentShow extends Component return $routeButtonPdf; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.pdf'; @@ -781,7 +781,7 @@ abstract class DocumentShow extends Component return $routeButtonCancelled; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.cancelled'; @@ -820,7 +820,7 @@ abstract class DocumentShow extends Component return $routeButtonDelete; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.destroy'; @@ -842,7 +842,7 @@ abstract class DocumentShow extends Component return $routeButtonPaid; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.paid'; @@ -864,7 +864,7 @@ abstract class DocumentShow extends Component return $routeButtonSent; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.sent'; @@ -886,7 +886,7 @@ abstract class DocumentShow extends Component return $routeButtonReceived; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.received'; @@ -908,7 +908,7 @@ abstract class DocumentShow extends Component return $routeButtonEmail; } - $page = Str::plural($type, 2); + $page = config("type.{$type}.route_name"); $route = $page . '.email'; @@ -1103,7 +1103,7 @@ abstract class DocumentShow extends Component return $textTimelineCreateTitle; } - return Str::plural($type, 2) . '.create_' . $type; + return config("type.{$type}.translation_key") . '.create_' . $type; } protected function getTextTimelineCreateMessage($type, $textTimelineCreateMessage) @@ -1112,7 +1112,7 @@ abstract class DocumentShow extends Component return $textTimelineCreateMessage; } - return Str::plural($type, 2) . '.messages.status.created'; + return config("type.{$type}.translation_key") . '.messages.status.created'; } protected function getTextTimelineSentTitle($type, $textTimelineSentTitle) diff --git a/app/Events/Auth/ApiPermissionsAssigning.php b/app/Events/Auth/ApiPermissionsAssigning.php deleted file mode 100644 index c65d76a50..000000000 --- a/app/Events/Auth/ApiPermissionsAssigning.php +++ /dev/null @@ -1,28 +0,0 @@ -permission = $permission; - $this->table = $table; - $this->type = $type; - } -} diff --git a/app/Http/Requests/Document/Document.php b/app/Http/Requests/Document/Document.php index d551c8d52..01d20745f 100644 --- a/app/Http/Requests/Document/Document.php +++ b/app/Http/Requests/Document/Document.php @@ -28,7 +28,7 @@ class Document extends FormRequest { $type = $this->request->get('type', Model::INVOICE_TYPE); - $type = Str::replaceFirst('-', '_', $type); + $type = config("type.{$type}.route_parameter"); // Check if store or update if ($this->getMethod() == 'PATCH') { diff --git a/app/Listeners/Auth/SetPermissionControllerForApi.php b/app/Listeners/Auth/SetPermissionControllerForApi.php deleted file mode 100644 index a37e64487..000000000 --- a/app/Listeners/Auth/SetPermissionControllerForApi.php +++ /dev/null @@ -1,61 +0,0 @@ -table, ['contacts', 'documents', 'transactions'])) { - return; - } - - // api/contacts?type=customer - // api/contacts?type=vendor - if ($event->table == 'contacts') { - switch ($event->type) { - case 'customer': - $event->permission->controller = 'sales-customers'; - break; - case 'vendor': - $event->permission->controller = 'purchases-vendors'; - break; - } - } - - // api/documents?type=invoice - // api/documents?type=bill - if ($event->table == 'documents') { - switch ($event->type) { - case 'invoice': - $event->permission->controller = 'sales-invoices'; - break; - case 'bill': - $event->permission->controller = 'purchases-bills'; - break; - } - } - - // api/transactions?type=income - // api/transactions?type=expense - if ($event->table == 'transactions') { - switch ($event->type) { - case 'income': - $event->permission->controller = 'sales-revenues'; - break; - case 'expense': - $event->permission->controller = 'purchases-payments'; - break; - } - } - } -} diff --git a/app/Listeners/Document/MarkDocumentCancelled.php b/app/Listeners/Document/MarkDocumentCancelled.php index a0ae2fd92..5a7c7df0b 100644 --- a/app/Listeners/Document/MarkDocumentCancelled.php +++ b/app/Listeners/Document/MarkDocumentCancelled.php @@ -21,6 +21,18 @@ class MarkDocumentCancelled { $this->dispatch(new CancelDocument($event->document)); - $this->dispatch(new CreateDocumentHistory($event->document, 0, trans('documents.messages.marked_cancelled', ['type' => '']))); + $type = trans_choice( + config("type.{$event->document->type}.alias", '') . + 'general.' . config("type.{$event->document->type}.translation_key"), + 1 + ); + + $this->dispatch( + new CreateDocumentHistory( + $event->document, + 0, + trans('documents.messages.marked_cancelled', ['type' => $type]) + ) + ); } } diff --git a/app/Listeners/Document/MarkDocumentReceived.php b/app/Listeners/Document/MarkDocumentReceived.php index 18403494f..bae62d368 100644 --- a/app/Listeners/Document/MarkDocumentReceived.php +++ b/app/Listeners/Document/MarkDocumentReceived.php @@ -24,6 +24,18 @@ class MarkDocumentReceived $event->document->save(); } - $this->dispatch(new CreateDocumentHistory($event->document, 0, trans('documents.messages.marked_received', ['type' => '']))); + $type = trans_choice( + config("type.{$event->document->type}.alias", '') . + 'general.' . config("type.{$event->document->type}.translation_key"), + 1 + ); + + $this->dispatch( + new CreateDocumentHistory( + $event->document, + 0, + trans('documents.messages.marked_received', ['type' => $type]) + ) + ); } } diff --git a/app/Listeners/Document/MarkDocumentSent.php b/app/Listeners/Document/MarkDocumentSent.php index db38e66ba..8f88e7842 100644 --- a/app/Listeners/Document/MarkDocumentSent.php +++ b/app/Listeners/Document/MarkDocumentSent.php @@ -24,6 +24,18 @@ class MarkDocumentSent $event->document->save(); } - $this->dispatch(new CreateDocumentHistory($event->document, 0, trans('documents.messages.marked_sent', ['type' => '']))); + $type = trans_choice( + config("type.{$event->document->type}.alias", '') . + 'general.' . config("type.{$event->document->type}.translation_key"), + 1 + ); + + $this->dispatch( + new CreateDocumentHistory( + $event->document, + 0, + trans('documents.messages.marked_sent', ['type' => $type]) + ) + ); } } diff --git a/app/Listeners/Document/MarkDocumentViewed.php b/app/Listeners/Document/MarkDocumentViewed.php index 558bcd5ce..7a447e518 100644 --- a/app/Listeners/Document/MarkDocumentViewed.php +++ b/app/Listeners/Document/MarkDocumentViewed.php @@ -29,6 +29,18 @@ class MarkDocumentViewed $document->status = 'viewed'; $document->save(); - $this->dispatch(new CreateDocumentHistory($event->document, 0, trans('documents.messages.marked_viewed', ['type' => '']))); + $type = trans_choice( + config("type.{$event->document->type}.alias", '') . + 'general.' . config("type.{$event->document->type}.translation_key"), + 1 + ); + + $this->dispatch( + new CreateDocumentHistory( + $event->document, + 0, + trans('documents.messages.marked_viewed', ['type' => $type]) + ) + ); } } diff --git a/app/Providers/Event.php b/app/Providers/Event.php index dbe0fe404..7981a1051 100644 --- a/app/Providers/Event.php +++ b/app/Providers/Event.php @@ -36,9 +36,6 @@ class Event extends Provider 'App\Events\Auth\LandingPageShowing' => [ 'App\Listeners\Auth\AddLandingPages', ], - 'App\Events\Auth\ApiPermissionsAssigning' => [ - 'App\Listeners\Auth\SetPermissionControllerForApi', - ], 'App\Events\Document\DocumentCreated' => [ 'App\Listeners\Document\CreateDocumentCreatedHistory', 'App\Listeners\Document\IncreaseNextDocumentNumber', diff --git a/app/Traits/Permissions.php b/app/Traits/Permissions.php index 65d78646d..48ca8ceba 100644 --- a/app/Traits/Permissions.php +++ b/app/Traits/Permissions.php @@ -2,7 +2,6 @@ namespace App\Traits; -use App\Events\Auth\ApiPermissionsAssigning; use App\Models\Auth\Permission; use App\Models\Auth\Role; use App\Utilities\Reports; @@ -406,12 +405,7 @@ trait Permissions // Fire event to find the proper controller for common API endpoints if (in_array($table, ['contacts', 'documents', 'transactions'])) { - $p = new \stdClass(); - $p->controller = ''; - - event(new ApiPermissionsAssigning($p, $table, request()->get('type'))); - - $controller = $p->controller; + $controller = config('type.' . request()->get('type') . '.permission_name'); } else { $route = app(Route::class); diff --git a/app/View/Components/Documents/Form/Company.php b/app/View/Components/Documents/Form/Company.php index a98d14256..329379c7d 100644 --- a/app/View/Components/Documents/Form/Company.php +++ b/app/View/Components/Documents/Form/Company.php @@ -16,7 +16,7 @@ class Company extends Component { $company = user()->companies()->first(); - $inputNameType = Str::replaceFirst('-', '_', $this->type); + $inputNameType = config("type.{$this->type}.route_parameter"); return view('components.documents.form.company', compact('company','inputNameType')); } diff --git a/config/type.php b/config/type.php new file mode 100644 index 000000000..50a0a1006 --- /dev/null +++ b/config/type.php @@ -0,0 +1,44 @@ + [ + 'group' => 'sales', + 'route_name' => 'invoices', + 'route_parameter' => 'invoice', + 'permission_name' => 'sales-invoices', + 'translation_key' => 'invoices', + 'contact_type' => 'customer', + ], + + Document::BILL_TYPE => [ + 'group' => 'purchases', + 'route_name' => 'bills', + 'route_parameter' => 'bill', + 'permission_name' => 'purchases-bills', + 'translation_key' => 'bills', + 'contact_type' => 'vendor', + ], + + // Contacts + 'customer' => [ + 'permission_name' => 'sales-customers', + ], + + 'vendor' => [ + 'permission_name' => 'purchases-vendors', + ], + + // Transactions + 'income' => [ + 'permission_name' => 'sales-revenues', + 'contact_type' => 'customer', + ], + + 'expense' => [ + 'permission_name' => 'purchases-payments', + 'contact_type' => 'vendor', + ], +];