317 lines
9.5 KiB
PHP
317 lines
9.5 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace App\Abstracts\View\Components\Contacts;
|
||
|
|
||
|
use App\Abstracts\View\Component;
|
||
|
use App\Traits\ViewComponents;
|
||
|
|
||
|
abstract class Show extends Component
|
||
|
{
|
||
|
use ViewComponents;
|
||
|
|
||
|
public const OBJECT_TYPE = 'contact';
|
||
|
public const DEFAULT_TYPE = 'customer';
|
||
|
public const DEFAULT_PLURAL_TYPE = 'customers';
|
||
|
|
||
|
/* -- Main Start -- */
|
||
|
public $type;
|
||
|
|
||
|
public $contact;
|
||
|
|
||
|
public $model;
|
||
|
|
||
|
public $permissionCreate;
|
||
|
|
||
|
public $permissionUpdate;
|
||
|
|
||
|
public $permissionDelete;
|
||
|
/* -- Main End -- */
|
||
|
|
||
|
/* -- Buttons Start -- */
|
||
|
public $hideNewDropdown;
|
||
|
|
||
|
public $hideButtonDocument;
|
||
|
|
||
|
public $hideButtonTransaction;
|
||
|
|
||
|
public $permissionCreateDocument;
|
||
|
|
||
|
public $permissionCreateTransaction;
|
||
|
|
||
|
public $routeButtonDocument;
|
||
|
|
||
|
public $routeButtonTransaction;
|
||
|
|
||
|
public $textDocument;
|
||
|
|
||
|
public $textTransaction;
|
||
|
|
||
|
public $hideButtonEdit;
|
||
|
|
||
|
public $routeButtonEdit;
|
||
|
|
||
|
public $hideActionsDropdown;
|
||
|
|
||
|
public $hideButtonDuplicate;
|
||
|
|
||
|
public $routeButtonDuplicate;
|
||
|
|
||
|
public $hideButtonDelete;
|
||
|
|
||
|
public $routeButtonDelete;
|
||
|
|
||
|
public $textDeleteModal;
|
||
|
/* -- Buttons End -- */
|
||
|
|
||
|
/* -- Profile Start -- */
|
||
|
public $hideTopLeft;
|
||
|
|
||
|
public $hideAvatar;
|
||
|
|
||
|
public $hideEmail;
|
||
|
|
||
|
public $hidePhone;
|
||
|
|
||
|
public $hideTopRight;
|
||
|
|
||
|
public $hideOverdue;
|
||
|
|
||
|
public $hideOpen;
|
||
|
|
||
|
public $hidePaid;
|
||
|
|
||
|
public $hideBottomLeft;
|
||
|
|
||
|
public $hideAddress;
|
||
|
|
||
|
public $hideTaxNumber;
|
||
|
|
||
|
public $hideWebsite;
|
||
|
|
||
|
public $hideReference;
|
||
|
|
||
|
public $hideUser;
|
||
|
|
||
|
public $hideBottomRight;
|
||
|
/* -- Profile End -- */
|
||
|
|
||
|
/**
|
||
|
* Create a new component instance.
|
||
|
*
|
||
|
* @return void
|
||
|
*/
|
||
|
public function __construct(
|
||
|
string $type, $model = false, $contact = false,
|
||
|
string $permissionCreate = '', string $permissionUpdate = '', string $permissionDelete = '',
|
||
|
bool $hideNewDropdown = false, bool $hideButtonDocument = false, $hideButtonTransaction = false,
|
||
|
string $permissionCreateDocument = '', string $permissionCreateTransaction = '',
|
||
|
$routeButtonDocument = '', $routeButtonTransaction = '',
|
||
|
string $textDocument = '', string $textTransaction = '',
|
||
|
bool $hideButtonEdit = false, $routeButtonEdit = '',
|
||
|
bool $hideActionsDropdown = false, bool $hideButtonDuplicate = false, $routeButtonDuplicate = '',
|
||
|
bool $hideButtonDelete = false, $routeButtonDelete = '', $textDeleteModal = '',
|
||
|
bool $hideTopLeft = false, bool $hideAvatar = false, bool $hideEmail = false, bool $hidePhone = false,
|
||
|
bool $hideTopRight = false, bool $hideOverdue = false, bool $hideOpen = false, bool $hidePaid = false,
|
||
|
bool $hideBottomLeft = false, bool $hideAddress = false, bool $hideTaxNumber = false , bool $hideWebsite = false, bool $hideReference = false, bool $hideUser = false,
|
||
|
bool $hideBottomRight = false
|
||
|
) {
|
||
|
/* -- Main Start -- */
|
||
|
$this->type = $type;
|
||
|
|
||
|
$this->model = ! empty($model) ? $model : $contact;
|
||
|
$this->contact = $this->model;
|
||
|
|
||
|
$this->permissionCreate = $this->getPermissionCreate($type, $permissionCreate);
|
||
|
$this->permissionUpdate = $this->getPermissionUpdate($type, $permissionUpdate);
|
||
|
$this->permissionDelete = $this->getPermissionDelete($type, $permissionDelete);
|
||
|
/* -- Main End -- */
|
||
|
|
||
|
/* -- Buttons Start -- */
|
||
|
$this->hideNewDropdown = $hideNewDropdown;
|
||
|
$this->hideButtonDocument = $hideButtonDocument;
|
||
|
$this->hideButtonTransaction = $hideButtonTransaction;
|
||
|
|
||
|
$this->permissionCreateDocument = $this->getPermissionCreateDocument($type, $permissionCreateDocument);
|
||
|
$this->permissionCreateTransaction = $this->getPermissionCreateTransaction($type, $permissionCreateTransaction);
|
||
|
|
||
|
$this->routeButtonDocument = $this->getCreateDocumentRoute($type, $routeButtonDocument);
|
||
|
$this->routeButtonTransaction = $this->getCreateTransactionRoute($type, $routeButtonTransaction);
|
||
|
|
||
|
$this->textDocument = $this->getTextDocument($type, $textDocument);
|
||
|
$this->textTransaction = $this->getTextTransaction($type, $textTransaction);
|
||
|
|
||
|
$this->hideButtonEdit = $hideButtonEdit;
|
||
|
$this->routeButtonEdit = $this->getEditRoute($type, $routeButtonEdit);
|
||
|
|
||
|
$this->hideActionsDropdown = $hideActionsDropdown;
|
||
|
$this->hideButtonDuplicate = $hideButtonDuplicate;
|
||
|
$this->routeButtonDuplicate = $this->getDuplicateRoute($type, $routeButtonDuplicate);
|
||
|
|
||
|
$this->hideButtonDelete = $hideButtonDelete;
|
||
|
$this->routeButtonDelete = $this->getDeleteRoute($type, $routeButtonDelete);
|
||
|
$this->textDeleteModal = $this->getTextDeleteModal($type, $textDeleteModal);
|
||
|
/* -- Buttons End -- */
|
||
|
|
||
|
/* -- Profile Start -- */
|
||
|
$this->hideProfile = $hideTopLeft;
|
||
|
$this->hideAvatar = $hideAvatar;
|
||
|
$this->hideEmail = $hideEmail;
|
||
|
$this->hidePhone = $hidePhone;
|
||
|
|
||
|
$this->hideDetails = $hideTopRight;
|
||
|
$this->hideOverdue = $hideOverdue;
|
||
|
$this->hideOpen = $hideOpen;
|
||
|
$this->hidePaid = $hidePaid;
|
||
|
|
||
|
$this->hideSummary = $hideBottomLeft;
|
||
|
$this->hideAddress = $hideAddress;
|
||
|
$this->hideTaxNumber = $hideTaxNumber;
|
||
|
$this->hideWebsite = $hideWebsite;
|
||
|
$this->hideReference = $hideReference;
|
||
|
$this->hideUser = $hideUser;
|
||
|
|
||
|
$this->hideContent = $hideBottomRight;
|
||
|
/* -- Profile End -- */
|
||
|
}
|
||
|
|
||
|
protected function getPermissionCreateDocument($type, $permissionCreateDocument)
|
||
|
{
|
||
|
if (! empty($permissionCreateDocument)) {
|
||
|
return $permissionCreateDocument;
|
||
|
}
|
||
|
|
||
|
$document_type = config('type.contact.' . $type . '.document_type', 'invoice');
|
||
|
|
||
|
$permission = '';
|
||
|
$config_key = 'create';
|
||
|
|
||
|
// if set config trasnlation config_key
|
||
|
if ($permission = config('type.document.' . $document_type . '.permission.' . $config_key)) {
|
||
|
return $permission;
|
||
|
}
|
||
|
|
||
|
$alias = config('type.document.' . $document_type . '.alias');
|
||
|
$group = config('type.document.' . $document_type . '.group');
|
||
|
$prefix = config('type.document.' . $document_type . '.permission.prefix');
|
||
|
|
||
|
$permission = $config_key . '-';
|
||
|
|
||
|
// if use module set module alias
|
||
|
if (! empty($alias)) {
|
||
|
$permission .= $alias . '-';
|
||
|
}
|
||
|
|
||
|
// if controller in folder it must
|
||
|
if (! empty($group)) {
|
||
|
$permission .= $group . '-';
|
||
|
}
|
||
|
|
||
|
$permission .= $prefix;
|
||
|
|
||
|
$permissionCreateDocument = $permission;
|
||
|
|
||
|
return $permissionCreateDocument;
|
||
|
}
|
||
|
|
||
|
protected function getPermissionCreateTransaction($type, $permissionCreateTransaction)
|
||
|
{
|
||
|
if (! empty($permissionCreateTransaction)) {
|
||
|
return $permissionCreateTransaction;
|
||
|
}
|
||
|
|
||
|
$permissionCreateTransaction = 'create-banking-transactions';
|
||
|
|
||
|
return $permissionCreateTransaction;
|
||
|
}
|
||
|
|
||
|
protected function getCreateDocumentRoute($type, $routeButtonDocument)
|
||
|
{
|
||
|
if (! empty($routeButtonDocument)) {
|
||
|
return $routeButtonDocument;
|
||
|
}
|
||
|
|
||
|
$prefix = config('type.contact.' . $type . '.route.prefix');
|
||
|
$document_type = config('type.contact.' . $type . '.document_type');
|
||
|
|
||
|
return $prefix . '.create-' . $document_type;
|
||
|
}
|
||
|
|
||
|
protected function getCreateTransactionRoute($type, $routeButtonDocument)
|
||
|
{
|
||
|
if (! empty($routeButtonDocument)) {
|
||
|
return $routeButtonDocument;
|
||
|
}
|
||
|
|
||
|
$prefix = config('type.contact.' . $type . '.route.prefix');
|
||
|
$transaction_type = config('type.contact.' . $type . '.transaction_type');
|
||
|
|
||
|
return $prefix . '.create-' . $transaction_type;
|
||
|
}
|
||
|
|
||
|
protected function getTextDocument($type, $textDocument)
|
||
|
{
|
||
|
if (! empty($textDocument)) {
|
||
|
return $textDocument;
|
||
|
}
|
||
|
|
||
|
$document_type = config('type.contact.' . $type . '.document_type');
|
||
|
|
||
|
switch ($document_type) {
|
||
|
case 'invoice':
|
||
|
$text = 'general.invoices';
|
||
|
break;
|
||
|
case 'bill':
|
||
|
$text = 'general.bills';
|
||
|
break;
|
||
|
default:
|
||
|
$text = config('type.contact.' . $type . '.translation.prefix') . '.' . config('type.contact.' . $type . '.route.prefix');
|
||
|
}
|
||
|
|
||
|
return $text;
|
||
|
}
|
||
|
|
||
|
protected function getTextTransaction($type, $textTransaction)
|
||
|
{
|
||
|
if (! empty($textTransaction)) {
|
||
|
return $textTransaction;
|
||
|
}
|
||
|
|
||
|
$document_type = config('type.contact.' . $type . '.document_type');
|
||
|
|
||
|
switch ($document_type) {
|
||
|
case 'invoice':
|
||
|
$text = 'general.incomes';
|
||
|
break;
|
||
|
case 'bill':
|
||
|
$text = 'general.expenses';
|
||
|
break;
|
||
|
default:
|
||
|
$text = config('type.contact.' . $type . '.translation.prefix') . '.' . config('type.contact.' . $type . '.transaction_type') . 's';
|
||
|
}
|
||
|
|
||
|
return $text;
|
||
|
}
|
||
|
|
||
|
protected function getTextDeleteModal($type, $textDeleteModal)
|
||
|
{
|
||
|
if (! empty($textDeleteModal)) {
|
||
|
return $textDeleteModal;
|
||
|
}
|
||
|
|
||
|
$document_type = config('type.contact.' . $type . '.document_type');
|
||
|
|
||
|
switch ($document_type) {
|
||
|
case 'invoice':
|
||
|
$text = 'general.incomes';
|
||
|
break;
|
||
|
case 'bill':
|
||
|
$text = 'general.expenses';
|
||
|
break;
|
||
|
default:
|
||
|
$text = config('type.contact.' . $type . '.translation.prefix') . '.' . config('type.contact.' . $type . '.transaction_type') . 's';
|
||
|
}
|
||
|
|
||
|
return $text;
|
||
|
}
|
||
|
}
|