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