Add Document/Transaction/Contact types to the config

This commit is contained in:
Burak Çakırel 2021-01-05 23:22:38 +03:00
parent 1deff6e5b4
commit 3aa94bc9e2
No known key found for this signature in database
GPG Key ID: 48FFBB7771B99C7C
14 changed files with 130 additions and 147 deletions

View File

@ -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)

View File

@ -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';

View File

@ -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)

View File

@ -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;
}
}

View File

@ -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') {

View File

@ -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;
}
}
}
}

View File

@ -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])
)
);
}
}

View File

@ -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])
)
);
}
}

View File

@ -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])
)
);
}
}

View File

@ -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])
)
);
}
}

View File

@ -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',

View File

@ -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);

View File

@ -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
View 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',
],
];