Add Document/Transaction/Contact types to the config
This commit is contained in:
parent
1deff6e5b4
commit
3aa94bc9e2
@ -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)
|
||||
|
@ -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';
|
||||
|
||||
|
@ -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)
|
||||
|
@ -1,28 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Events\Auth;
|
||||
|
||||
use App\Abstracts\Event;
|
||||
|
||||
class ApiPermissionsAssigning extends Event
|
||||
{
|
||||
public $permission;
|
||||
|
||||
public $table;
|
||||
|
||||
public $type;
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @param $permission
|
||||
* @param $table
|
||||
* @param $type
|
||||
*/
|
||||
public function __construct($permission, $table, $type)
|
||||
{
|
||||
$this->permission = $permission;
|
||||
$this->table = $table;
|
||||
$this->type = $type;
|
||||
}
|
||||
}
|
@ -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') {
|
||||
|
@ -1,61 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Listeners\Auth;
|
||||
|
||||
use App\Events\Auth\ApiPermissionsAssigning as Event;
|
||||
|
||||
class SetPermissionControllerForApi
|
||||
{
|
||||
/**
|
||||
* Handle the event.
|
||||
*
|
||||
* @param Event $event
|
||||
* @return void
|
||||
*/
|
||||
public function handle(Event $event)
|
||||
{
|
||||
// Not a common API endpoint
|
||||
if (!in_array($event->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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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])
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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])
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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])
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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])
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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',
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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'));
|
||||
}
|
||||
|
44
config/type.php
Normal file
44
config/type.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
use App\Models\Document\Document;
|
||||
|
||||
return [
|
||||
// Documents
|
||||
Document::INVOICE_TYPE => [
|
||||
'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',
|
||||
],
|
||||
];
|
Loading…
x
Reference in New Issue
Block a user