494 lines
14 KiB
PHP
494 lines
14 KiB
PHP
<?php
|
|
|
|
namespace App\Abstracts\View\Components\Contacts;
|
|
|
|
use App\Abstracts\View\Component;
|
|
use App\Traits\Documents;
|
|
use App\Traits\ViewComponents;
|
|
|
|
abstract class Index extends Component
|
|
{
|
|
use Documents, ViewComponents;
|
|
|
|
public const OBJECT_TYPE = 'contact';
|
|
public const DEFAULT_TYPE = 'customer';
|
|
public const DEFAULT_PLURAL_TYPE = 'customers';
|
|
|
|
/* -- Main Start -- */
|
|
/** @var string */
|
|
public $type;
|
|
|
|
public $contacts;
|
|
|
|
/** @var string */
|
|
public $textPage;
|
|
|
|
/** @var string */
|
|
public $group;
|
|
|
|
/** @var string */
|
|
public $page;
|
|
|
|
public $permissionCreate;
|
|
/* -- Main End -- */
|
|
|
|
/* -- Buttons Start -- */
|
|
public $checkPermissionCreate;
|
|
|
|
/** @var bool */
|
|
public $hideCreate;
|
|
|
|
/** @var bool */
|
|
public $hideImport;
|
|
|
|
/** @var bool */
|
|
public $hideExport;
|
|
|
|
/** @var string */
|
|
public $createRoute;
|
|
|
|
/** @var string */
|
|
public $importRoute;
|
|
|
|
/** @var array */
|
|
public $importRouteParameters;
|
|
|
|
/** @var string */
|
|
public $exportRoute;
|
|
/* -- Buttons End -- */
|
|
|
|
/* -- Content Start -- */
|
|
/** @var bool */
|
|
public $hideEmptyPage;
|
|
|
|
/** @var bool */
|
|
public $hideSummary;
|
|
|
|
public $summaryItems;
|
|
|
|
/** @var bool */
|
|
public $hideSearchString;
|
|
|
|
/** @var bool */
|
|
public $hideBulkAction;
|
|
|
|
/** @var string */
|
|
public $searchStringModel;
|
|
|
|
/** @var string */
|
|
public $bulkActionClass;
|
|
|
|
/** @var array */
|
|
public $bulkActionRouteParameters;
|
|
|
|
/** @var string */
|
|
public $searchRoute;
|
|
|
|
/** @var string */
|
|
public $classBulkAction;
|
|
|
|
/** @var bool */
|
|
public $showLogo;
|
|
|
|
/** @var bool */
|
|
public $hideName;
|
|
|
|
/** @var bool */
|
|
public $hideTaxNumber;
|
|
|
|
/** @var string */
|
|
public $classNameAndTaxNumber;
|
|
|
|
/** @var string */
|
|
public $textName;
|
|
|
|
/** @var string */
|
|
public $textTaxNumber;
|
|
|
|
/** @var bool */
|
|
public $hideEmail;
|
|
|
|
/** @var bool */
|
|
public $hidePhone;
|
|
|
|
/** @var string */
|
|
public $classEmailAndPhone;
|
|
|
|
/** @var string */
|
|
public $textEmail;
|
|
|
|
/** @var string */
|
|
public $textPhone;
|
|
|
|
/** @var bool */
|
|
public $hideCountry;
|
|
|
|
/** @var bool */
|
|
public $hideCurrencyCode;
|
|
|
|
/** @var string */
|
|
public $classCountryAndCurrencyCode;
|
|
|
|
/** @var string */
|
|
public $textCountry;
|
|
|
|
/** @var string */
|
|
public $textCurrencyCode;
|
|
|
|
/** @var bool */
|
|
public $hideOpen;
|
|
|
|
/** @var bool */
|
|
public $hideOverdue;
|
|
|
|
/** @var string */
|
|
public $classOpenAndOverdue;
|
|
|
|
/** @var string */
|
|
public $textOpen;
|
|
|
|
/** @var string */
|
|
public $textOverdue;
|
|
/* -- Content End -- */
|
|
|
|
/* -- Empty Start -- */
|
|
/** @var string */
|
|
public $imageEmptyPage;
|
|
|
|
/** @var string */
|
|
public $textEmptyPage;
|
|
|
|
/** @var string */
|
|
public $urlDocsPath;
|
|
|
|
/** @var string */
|
|
public $routeButtonShow;
|
|
/* -- Empty End -- */
|
|
|
|
/**
|
|
* Create a new component instance.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function __construct(
|
|
string $type, $contacts = [], string $textPage = '', string $group = '', string $page = '',
|
|
string $permissionCreate = '', string $permissionUpdate = '', string $permissionDelete = '',
|
|
bool $checkPermissionCreate = true,
|
|
bool $hideCreate = false, bool $hideImport = false, bool $hideExport = false,
|
|
string $createRoute = '', string $importRoute = '', array $importRouteParameters = [], string $exportRoute = '',
|
|
bool $hideEmptyPage = false, bool $hideSummary = false, $summaryItems = [], bool $hideSearchString = false, bool $hideBulkAction = false,
|
|
string $searchStringModel = '', string $bulkActionClass = '', array $bulkActions = [], array $bulkActionRouteParameters = [], string $searchRoute = '',
|
|
string $classBulkAction = '',
|
|
bool $showLogo = false, bool $hideName = false, bool $hideTaxNumber = false, string $classNameAndTaxNumber = '', string $textName = '', string $textTaxNumber = '',
|
|
bool $hideEmail = false, bool $hidePhone = false, string $classEmailAndPhone = '', string $textEmail = '', string $textPhone = '',
|
|
bool $hideCountry = false, bool $hideCurrencyCode = false, string $classCountryAndCurrencyCode = '', string $textCountry = '', string $textCurrencyCode = '',
|
|
bool $hideOpen = false, bool $hideOverdue = false, string $classOpenAndOverdue = '', string $textOpen = '', string $textOverdue = '',
|
|
string $imageEmptyPage = '', string $textEmptyPage = '', string $urlDocsPath = '', string $routeButtonShow = '',
|
|
) {
|
|
/* -- Main Start -- */
|
|
$this->type = $type;
|
|
$this->group = $this->getGroup($type, $group);
|
|
$this->page = $this->getPage($type, $page);
|
|
$this->contacts = ($contacts) ? $contacts : collect();
|
|
$this->textPage = $this->getTextPage($type, $textPage);
|
|
|
|
$this->permissionCreate = $this->getPermissionCreate($type, $permissionCreate);
|
|
$this->permissionUpdate = $this->getPermissionUpdate($type, $permissionUpdate);
|
|
$this->permissionDelete = $this->getPermissionDelete($type, $permissionDelete);
|
|
/* -- Main End -- */
|
|
|
|
/* -- Buttons Start -- */
|
|
$this->checkPermissionCreate = $checkPermissionCreate;
|
|
|
|
$this->hideCreate = $hideCreate;
|
|
$this->hideImport = $hideImport;
|
|
$this->hideExport = $hideExport;
|
|
|
|
$this->routeButtonShow = $this->getRouteButtonShow($type, $routeButtonShow);
|
|
$this->createRoute = $this->getCreateRoute($type, $createRoute);
|
|
$this->importRoute = $this->getImportRoute($importRoute);
|
|
$this->importRouteParameters = $this->getImportRouteParameters($type, $importRouteParameters);
|
|
$this->exportRoute = $this->getExportRoute($type, $exportRoute);
|
|
/* -- Buttons End -- */
|
|
|
|
/* -- Content Start -- */
|
|
$this->hideEmptyPage = $hideEmptyPage;
|
|
|
|
$this->hideSummary = $hideSummary;
|
|
$this->summaryItems = $this->getSummaryItems($type, $summaryItems);
|
|
|
|
$this->hideSearchString = $hideSearchString;
|
|
$this->hideBulkAction = $hideBulkAction;
|
|
|
|
$this->searchStringModel = $this->getSearchStringModel($type, $searchStringModel);
|
|
|
|
$this->bulkActionClass = $this->getBulkActionClass($type, $bulkActionClass);
|
|
$this->bulkActionRouteParameters = $this->getBulkActionRouteParameters($type, $bulkActionRouteParameters);
|
|
|
|
$this->searchRoute = $this->getIndexRoute($type, $searchRoute);
|
|
|
|
$this->classBulkAction = $this->getClassBulkAction($type, $classBulkAction);
|
|
|
|
$this->showLogo = $showLogo;
|
|
$this->hideName = $hideName;
|
|
$this->hideTaxNumber = $hideTaxNumber;
|
|
$this->classNameAndTaxNumber = $this->getClassNameAndTaxNumber($type, $classNameAndTaxNumber);
|
|
$this->textName = $this->getTextName($type, $textName);
|
|
$this->textTaxNumber = $this->getTextTaxNumber($type, $textTaxNumber);
|
|
|
|
$this->hideEmail = $hideEmail;
|
|
$this->hidePhone = $hidePhone;
|
|
$this->classEmailAndPhone = $this->getClassEmailAndPhone($type, $classEmailAndPhone);
|
|
$this->textEmail = $this->getTextEmail($type, $textEmail);
|
|
$this->textPhone = $this->getTextPhone($type, $textPhone);
|
|
|
|
$this->hideCountry = $hideCountry;
|
|
$this->hideCurrencyCode = $hideCurrencyCode;
|
|
$this->classCountryAndCurrencyCode = $this->getClassCountryAndCurrencyCode($type, $classCountryAndCurrencyCode);
|
|
$this->textCountry = $this->getTextCountry($type, $textCountry);
|
|
$this->textCurrencyCode = $this->getTextCurrencyCode($type, $textCurrencyCode);
|
|
|
|
$this->hideOpen = $hideOpen;
|
|
$this->hideOverdue = $hideOverdue;
|
|
$this->classOpenAndOverdue = $this->getClassOpenAndOverdue($type, $classOpenAndOverdue);
|
|
$this->textOpen = $this->getTextOpen($type, $textOpen);
|
|
$this->textOverdue = $this->getTextOverdue($type, $textOverdue);
|
|
/* -- Content End -- */
|
|
|
|
/* -- Empty Start -- */
|
|
$this->imageEmptyPage = $this->getImageEmptyPage($type, $imageEmptyPage);
|
|
$this->textEmptyPage = $this->getTextEmptyPage($type, $textEmptyPage);
|
|
$this->urlDocsPath = $this->getUrlDocsPath($type, $urlDocsPath);
|
|
/* -- Empty End -- */
|
|
|
|
// Set Parent data
|
|
$this->setParentData();
|
|
}
|
|
|
|
public function getSummaryItems($type, $summaryItems)
|
|
{
|
|
if (! empty($summaryItems)) {
|
|
return $summaryItems;
|
|
}
|
|
|
|
$route = $this->getIndexRoute($type, null);
|
|
|
|
$document_type = config('type.contact.' . $type . '.document_type', 'invoice');
|
|
|
|
$totals = $this->getTotalsForFutureDocuments($document_type);
|
|
|
|
$items = [];
|
|
|
|
foreach ($totals as $key => $total) {
|
|
$items[] = [
|
|
'title' => ($key == 'overdue') ? trans('general.overdue') : trans('documents.statuses.' . $key),
|
|
//'href' => route($route, ['search' => 'status:' . $key]),
|
|
'amount' => money($total, default_currency(), true)->formatForHumans(),
|
|
'tooltip' => money($total, default_currency(), true)->format(),
|
|
];
|
|
}
|
|
|
|
return $items;
|
|
}
|
|
|
|
/* -- Content Start -- */
|
|
protected function getClassNameAndTaxNumber($type, $classNameAndTaxNumber)
|
|
{
|
|
if (! empty($classNameAndTaxNumber)) {
|
|
return $classNameAndTaxNumber;
|
|
}
|
|
|
|
$class = $this->getClassFromConfig($type, 'name_and_tax_number');
|
|
|
|
if (! empty($class)) {
|
|
return $class;
|
|
}
|
|
|
|
return 'w-6/12 sm:w-3/12 truncate';
|
|
}
|
|
|
|
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 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';
|
|
}
|
|
|
|
protected function getClassEmailAndPhone($type, $classEmailAndPhone)
|
|
{
|
|
if (! empty($classEmailAndPhone)) {
|
|
return $classEmailAndPhone;
|
|
}
|
|
|
|
$class = $this->getClassFromConfig($type, 'email_and_phone');
|
|
|
|
if (! empty($class)) {
|
|
return $class;
|
|
}
|
|
|
|
return 'w-3/12 hidden sm:table-cell';
|
|
}
|
|
|
|
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 getClassCountryAndCurrencyCode($type, $classCountryAndCurrencyCode)
|
|
{
|
|
if (! empty($classCountryAndCurrencyCode)) {
|
|
return $classCountryAndCurrencyCode;
|
|
}
|
|
|
|
$class = $this->getClassFromConfig($type, 'country_and_currency_code');
|
|
|
|
if (! empty($class)) {
|
|
return $class;
|
|
}
|
|
|
|
return 'w-3/12 hidden sm:table-cell';
|
|
}
|
|
|
|
protected function getTextCountry($type, $textCountry)
|
|
{
|
|
if (! empty($textCountry)) {
|
|
return $textCountry;
|
|
}
|
|
|
|
$translation = $this->getTextFromConfig($type, 'country', 'countries');
|
|
|
|
if (! empty($translation)) {
|
|
return $translation;
|
|
}
|
|
|
|
return 'general.countries';
|
|
}
|
|
|
|
protected function getTextCurrencyCode($type, $textCurrencyCode)
|
|
{
|
|
if (! empty($textCurrencyCode)) {
|
|
return $textCurrencyCode;
|
|
}
|
|
|
|
$translation = $this->getTextFromConfig($type, 'currency_code', 'currencies');
|
|
|
|
if (! empty($translation)) {
|
|
return $translation;
|
|
}
|
|
|
|
return 'general.currencies';
|
|
}
|
|
|
|
protected function getClassOpenAndOverdue($type, $classOpenAndOverdue)
|
|
{
|
|
if (! empty($classOpenAndOverdue)) {
|
|
return $classOpenAndOverdue;
|
|
}
|
|
|
|
$class = $this->getClassFromConfig($type, 'open_and_overdue');
|
|
|
|
if (! empty($class)) {
|
|
return $class;
|
|
}
|
|
|
|
return 'w-6/12 sm:w-3/12';
|
|
}
|
|
|
|
protected function getTextOpen($type, $textOpen)
|
|
{
|
|
if (! empty($textOpen)) {
|
|
return $textOpen;
|
|
}
|
|
|
|
$translation = $this->getTextFromConfig($type, 'open', 'open');
|
|
|
|
if (! empty($translation)) {
|
|
return $translation;
|
|
}
|
|
|
|
return 'general.open';
|
|
}
|
|
|
|
protected function getTextOverdue($type, $textOverdue)
|
|
{
|
|
if (! empty($textOverdue)) {
|
|
return $textOverdue;
|
|
}
|
|
|
|
$translation = $this->getTextFromConfig($type, 'overdue', 'overdue');
|
|
|
|
if (! empty($translation)) {
|
|
return $translation;
|
|
}
|
|
|
|
return 'general.overdue';
|
|
}
|
|
|
|
protected function getRouteButtonShow($type, $routeButtonShow)
|
|
{
|
|
if (!empty($routeButtonShow)) {
|
|
return $routeButtonShow;
|
|
}
|
|
|
|
//example route parameter.
|
|
$parameter = 1;
|
|
|
|
$route = $this->getRouteFromConfig($type, 'show', $parameter);
|
|
|
|
if (!empty($route)) {
|
|
return $route;
|
|
}
|
|
|
|
return 'customer.show';
|
|
}
|
|
/* -- Content End -- */
|
|
}
|