504 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			504 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace App\Abstracts\View\Components\Contacts;
 | |
| 
 | |
| use App\Abstracts\View\Component;
 | |
| use App\Traits\ViewComponents;
 | |
| 
 | |
| abstract class Form 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;
 | |
|     /* -- Main End -- */
 | |
| 
 | |
|     /* -- Content Start -- */
 | |
|     public $formId;
 | |
| 
 | |
|     public $formRoute;
 | |
| 
 | |
|     public $formMethod;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideSectionGeneral;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideSectionBilling;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideSectionAddress;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionGeneralTitle;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionGeneralDescription;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideName;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textName;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $classNameFromGroupClass;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideEmail;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textEmail;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hidePhone;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textPhone;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideWebsite;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textWebsite;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideReference;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textReference;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideCanLogin;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideLogo;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionBillingTitle;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionBillingDescription;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideTaxNumber;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textTaxNumber;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideCurrency;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionAddressTitle;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textSectionAddressDescription;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideAddress;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textAddress;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideCity;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textCity;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideZipCode;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textZipCode;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideState;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $textState;
 | |
| 
 | |
|     /** @var bool */
 | |
|     public $hideCountry;
 | |
| 
 | |
|     /** @var string */
 | |
|     public $cancelRoute;
 | |
|     /* -- Content End -- */
 | |
| 
 | |
|     /**
 | |
|      * Create a new component instance.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct(
 | |
|         string $type, $model = false, $contact = false,
 | |
|         string $formId = 'contact', $formRoute = '', $formMethod = '',
 | |
|         bool $hideSectionGeneral = false, bool $hideSectionBilling = false, bool $hideSectionAddress = false,
 | |
|         string $textSectionGeneralTitle = '', string $textSectionGeneralDescription = '',
 | |
|         bool $hideName = false, string $textName = '', string $classNameFromGroupClass = '',
 | |
|         bool $hideEmail = false, string $textEmail = '',
 | |
|         bool $hidePhone = false, string $textPhone = '',
 | |
|         bool $hideWebsite = false, string $textWebsite = '',
 | |
|         bool $hideReference = false, string $textReference = '',
 | |
|         bool $hideCanLogin = false,
 | |
|         bool $hideLogo = false,
 | |
|         string $textSectionBillingTitle = '', string $textSectionBillingDescription = '',
 | |
|         bool $hideTaxNumber = false, string $textTaxNumber = '',
 | |
|         bool $hideCurrency = false,
 | |
|         string $textSectionAddressTitle = '', string $textSectionAddressDescription = '',
 | |
|         bool $hideAddress = false, string $textAddress = '',
 | |
|         bool $hideCity = false, string $textCity = '',
 | |
|         bool $hideZipCode = false, string $textZipCode = '',
 | |
|         bool $hideState = false, string $textState = '',
 | |
|         bool $hideCountry = false,
 | |
|         string $cancelRoute = ''
 | |
|     ) {
 | |
|         $this->type = $type;
 | |
| 
 | |
|         $this->model = ! empty($model) ? $model : $contact;
 | |
|         $this->contact = $this->model;
 | |
| 
 | |
|         /* -- Content Start -- */
 | |
|         $this->formId = $formId;
 | |
|         $this->formRoute = $this->getFormRoute($type, $formRoute, $this->model);
 | |
|         $this->formMethod = $this->getFormMethod($type, $formMethod, $this->model);
 | |
| 
 | |
|         $this->hideSectionGeneral = $hideSectionGeneral;
 | |
|         $this->hideSectionBilling = $hideSectionBilling;
 | |
|         $this->hideSectionAddress = $hideSectionAddress;
 | |
| 
 | |
|         /* -- General Start -- */
 | |
|         $this->textSectionGeneralTitle = $this->getTextSectionGeneralTitle($type, $textSectionGeneralTitle);
 | |
|         $this->textSectionGeneralDescription = $this->getTextSectionGeneralDescription($type, $textSectionGeneralDescription);
 | |
| 
 | |
|         $this->hideName = $hideName;
 | |
|         $this->textName = $this->getTextName($type, $textName);
 | |
|         $this->classNameFromGroupClass = $this->getClassNameFormGroupClass($type, $classNameFromGroupClass);
 | |
| 
 | |
|         $this->hideEmail = $hideEmail;
 | |
|         $this->textEmail = $this->getTextEmail($type, $textEmail);
 | |
| 
 | |
|         $this->hidePhone = $hidePhone;
 | |
|         $this->textPhone = $this->getTextPhone($type, $textPhone);
 | |
| 
 | |
|         $this->hideWebsite = $hideWebsite;
 | |
|         $this->textWebsite = $this->getTextWebsite($type, $textWebsite);
 | |
| 
 | |
|         $this->hideReference = $hideReference;
 | |
|         $this->textReference = $this->getTextReference($type, $textReference);
 | |
| 
 | |
|         $this->hideCanLogin = $hideCanLogin;
 | |
|         $this->hideLogo = $hideLogo;
 | |
|         /* -- General End -- */
 | |
| 
 | |
|         /* -- Billing Start -- */
 | |
|         $this->textSectionBillingTitle = $this->getTextSectionBillingTitle($type, $textSectionBillingTitle);
 | |
|         $this->textSectionBillingDescription = $this->getTextSectionBillingDescription($type, $textSectionBillingDescription);
 | |
| 
 | |
|         $this->hideTaxNumber = $hideTaxNumber;
 | |
|         $this->textTaxNumber = $this->getTextTaxNumber($type, $textTaxNumber);
 | |
| 
 | |
|         $this->hideCurrency = $hideCurrency;
 | |
|         /* -- Billing End -- */
 | |
| 
 | |
|         /* -- Address Start -- */
 | |
|         $this->textSectionAddressTitle = $this->getTextSectionAddressTitle($type, $textSectionAddressTitle);
 | |
|         $this->textSectionAddressDescription = $this->getTextSectionAddressDescription($type, $textSectionAddressDescription);
 | |
| 
 | |
|         $this->hideAddress = $hideAddress;
 | |
|         $this->textAddress = $this->getTextAddress($type, $textAddress);
 | |
| 
 | |
|         $this->hideCity = $hideCity;
 | |
|         $this->textCity = $this->getTextCity($type, $textCity);
 | |
| 
 | |
|         $this->hideZipCode = $hideZipCode;
 | |
|         $this->textZipCode = $this->getTextZipCode($type, $textZipCode);
 | |
| 
 | |
|         $this->hideState = $hideState;
 | |
|         $this->textState = $this->getTextState($type, $textState);
 | |
| 
 | |
|         $this->hideState = $hideTaxNumber;
 | |
|         /* -- Address End -- */
 | |
| 
 | |
|         /* -- Buttons Start -- */
 | |
|         $this->cancelRoute = $this->getCancelRoute($type, $cancelRoute);
 | |
|         /* -- Buttons End -- */
 | |
|         /* -- Content End -- */
 | |
| 
 | |
|         // Set Parent data
 | |
|         $this->setParentData();
 | |
|     }
 | |
| 
 | |
|     /* -- Content Start -- */
 | |
|     /* -- General Start -- */
 | |
|     protected function getTextSectionGeneralTitle($type, $textSectionGeneralTitle)
 | |
|     {
 | |
|         if (! empty($textSectionGeneralTitle)) {
 | |
|             return $textSectionGeneralTitle;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_general_title', 'general');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.general';
 | |
|     }
 | |
| 
 | |
|     protected function getTextSectionGeneralDescription($type, $textSectionGeneralDescription)
 | |
|     {
 | |
|         if (! empty($textSectionGeneralDescription)) {
 | |
|             return $textSectionGeneralDescription;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_general_description', 'form_description.general');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'customers.form_description.general';
 | |
|     }
 | |
| 
 | |
|     protected function getTextName($type, $textName)
 | |
|     {
 | |
|         if (! empty($textName)) {
 | |
|             return $textName;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'name', 'name');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.name';
 | |
|     }
 | |
| 
 | |
|     protected function getClassNameFormGroupClass($type, $classNameFromGroupClass)
 | |
|     {
 | |
|         if (! empty($classNameFromGroupClass)) {
 | |
|             return $classNameFromGroupClass;
 | |
|         }
 | |
| 
 | |
|         $class = $this->getClassFromConfig($type, 'name');
 | |
| 
 | |
|         if (! empty($class)) {
 | |
|             return $class;
 | |
|         }
 | |
| 
 | |
|         return 'sm:col-span-6';
 | |
|     }
 | |
| 
 | |
|     protected function getTextEmail($type, $textEmail)
 | |
|     {
 | |
|         if (! empty($textEmail)) {
 | |
|             return $textEmail;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'email', 'email');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.email';
 | |
|     }
 | |
| 
 | |
|     protected function getTextPhone($type, $textPhone)
 | |
|     {
 | |
|         if (! empty($textPhone)) {
 | |
|             return $textPhone;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'phone', 'phone');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.phone';
 | |
|     }
 | |
| 
 | |
|     protected function getTextWebsite($type, $textWebsite)
 | |
|     {
 | |
|         if (! empty($textWebsite)) {
 | |
|             return $textWebsite;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'website', 'website');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.website';
 | |
|     }
 | |
| 
 | |
|     protected function getTextReference($type, $textReference)
 | |
|     {
 | |
|         if (! empty($textReference)) {
 | |
|             return $textReference;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'reference', 'reference');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.reference';
 | |
|     }
 | |
|     /* -- General End -- */
 | |
| 
 | |
|     /* -- Billing Start -- */
 | |
|     protected function getTextSectionBillingTitle($type, $textSectionBillingTitle)
 | |
|     {
 | |
|         if (! empty($textSectionBillingTitle)) {
 | |
|             return $textSectionBillingTitle;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_billing_title');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'items.billing';
 | |
|     }
 | |
| 
 | |
|     protected function getTextSectionBillingDescription($type, $textSectionBillingDescription)
 | |
|     {
 | |
|         if (! empty($textSectionBillingDescription)) {
 | |
|             return $textSectionBillingDescription;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_billing_description');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'customers.form_description.billing';
 | |
|     }
 | |
| 
 | |
|     protected function getTextTaxNumber($type, $textTaxNumber)
 | |
|     {
 | |
|         if (! empty($textTaxNumber)) {
 | |
|             return $textTaxNumber;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'tax_number', 'tax_number');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.tax_number';
 | |
|     }
 | |
|     /* -- Billing End -- */
 | |
| 
 | |
|     /* -- Address Start -- */
 | |
|     protected function getTextSectionAddressTitle($type, $textSectionAddressTitle)
 | |
|     {
 | |
|         if (! empty($textSectionAddressTitle)) {
 | |
|             return $textSectionAddressTitle;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_address_title', 'address');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.address';
 | |
|     }
 | |
| 
 | |
|     protected function getTextSectionAddressDescription($type, $textSectionAddressDescription)
 | |
|     {
 | |
|         if (! empty($textSectionAddressDescription)) {
 | |
|             return $textSectionAddressDescription;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'section_address_description');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'customers.form_description.address';
 | |
|     }
 | |
| 
 | |
|     protected function getTextAddress($type, $textAddress)
 | |
|     {
 | |
|         if (! empty($textAddress)) {
 | |
|             return $textAddress;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'address', 'address');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.address';
 | |
|     }
 | |
| 
 | |
|     protected function getTextCity($type, $textCity)
 | |
|     {
 | |
|         if (! empty($textCity)) {
 | |
|             return $textCity;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'city', 'cities');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.cities';
 | |
|     }
 | |
| 
 | |
|     protected function getTextZipCode($type, $textZipCode)
 | |
|     {
 | |
|         if (! empty($textZipCode)) {
 | |
|             return $textZipCode;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'zip_code', 'zip_code');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.zip_code';
 | |
|     }
 | |
| 
 | |
|     protected function getTextState($type, $textState)
 | |
|     {
 | |
|         if (! empty($textState)) {
 | |
|             return $textState;
 | |
|         }
 | |
| 
 | |
|         $translation = $this->getTextFromConfig($type, 'state', 'state');
 | |
| 
 | |
|         if (! empty($translation)) {
 | |
|             return $translation;
 | |
|         }
 | |
| 
 | |
|         return 'general.state';
 | |
|     }
 | |
|     /* -- Address End -- */
 | |
|     /* -- Content End -- */
 | |
| }
 |