2021-08-18 15:37:45 +03:00

748 lines
21 KiB
PHP

<?php
namespace App\Abstracts\View\Components;
use App\Models\Common\Media;
use App\Traits\DateTime;
use App\Traits\Transactions;
use App\Utilities\Modules;
use File;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\URL;
use Illuminate\Support\Str;
use Image;
use Intervention\Image\Exception\NotReadableException;
use Illuminate\Support\Facades\Storage;
use Illuminate\View\Component;
abstract class TransferShow extends Component
{
use DateTime, Transactions;
public $transfer;
/** @var string */
public $transferTemplate;
/** @var array */
public $payment_methods;
public $date_format;
/** @var bool */
public $hideButtonAddNew;
/** @var bool */
public $hideButtonMoreActions;
/** @var bool */
public $hideButtonEdit;
/** @var bool */
public $hideButtonDuplicate;
/** @var bool */
public $hideButtonPrint;
/** @var bool */
public $hideButtonShare;
/** @var bool */
public $hideButtonEmail;
/** @var bool */
public $hideButtonPdf;
/** @var bool */
public $hideButtonDelete;
/** @var bool */
public $hideButtonGroupDivider1;
/** @var bool */
public $hideButtonGroupDivider2;
/** @var bool */
public $hideButtonGroupDivider3;
/** @var string */
public $permissionCreate;
/** @var string */
public $permissionUpdate;
/** @var string */
public $permissionDelete;
/** @var string */
public $routeButtonAddNew;
/** @var string */
public $routeButtonEdit;
/** @var string */
public $routeButtonDuplicate;
/** @var string */
public $routeButtonPrint;
/** @var string */
public $signedUrl;
/** @var string */
public $routeButtonEmail;
/** @var string */
public $routeButtonPdf;
/** @var string */
public $hideButtonTemplate;
/** @var string */
public $routeButtonDelete;
/** @var string */
public $routeFromAccountShow;
/** @var string */
public $routeToAccountShow;
/** @var string */
public $textDeleteModal;
/** @var bool */
public $hideHeader;
/** @var bool */
public $hideHeaderFromAccount;
/** @var bool */
public $hideHeaderToAccount;
/** @var bool */
public $hideHeaderAmount;
/** @var bool */
public $hideHeaderPaidAt;
/** @var string */
public $textHeaderFromAccount;
/** @var string */
public $textHeaderToAccount;
/** @var string */
public $textHeaderAmount;
/** @var string */
public $textHeaderPaidAt;
/** @var string */
public $classHeaderFromAccount;
/** @var string */
public $classHeaderToAccount;
/** @var string */
public $classHeaderAmount;
/** @var string */
public $classHeaderPaidAt;
/** @var bool */
public $hideFromAccount;
/** @var bool */
public $hideFromAccountTitle;
/** @var bool */
public $hideFromAccountName;
/** @var bool */
public $hideFromAccountNumber;
/** @var bool */
public $hideFromAccountBankName;
/** @var bool */
public $hideFromAccountBankPhone;
/** @var bool */
public $hideFromAccountBankAddress;
/** @var string */
public $textFromAccountTitle;
/** @var string */
public $textFromAccountNumber;
/** @var bool */
public $hideToAccount;
/** @var bool */
public $hideToAccountTitle;
/** @var bool */
public $hideToAccountName;
/** @var bool */
public $hideToAccountNumber;
/** @var bool */
public $hideToAccountBankName;
/** @var bool */
public $hideToAccountBankPhone;
/** @var bool */
public $hideToAccountBankAddress;
/** @var string */
public $textToAccountTitle;
/** @var string */
public $textToAccountNumber;
/** @var bool */
public $hideDetails;
/** @var bool */
public $hideDetailTitle;
/** @var bool */
public $hideDetailDate;
/** @var bool */
public $hideDetailPaymentMethod;
/** @var bool */
public $hideDetailReference;
/** @var bool */
public $hideDetailDescription;
/** @var bool */
public $hideDetailAmount;
/** @var string */
public $textDetailTitle;
/** @var string */
public $textDetailDate;
/** @var string */
public $textDetailPaymentMethod;
/** @var string */
public $textDetailReference;
/** @var string */
public $textDetailDescription;
/** @var string */
public $textDetailAmount;
/** @var bool */
public $hideAttachment;
public $attachment;
/** @var bool */
public $hideFooter;
/** @var bool */
public $hideFooterHistories;
public $histories;
/** @var string */
public $textHistories;
/** @var string */
public $classFooterHistories;
/**
* Create a new component instance.
*
* @return void
*/
public function __construct(
$transfer, $transferTemplate = '', array $payment_methods = [],
bool $hideButtonAddNew = false, bool $hideButtonMoreActions = false, bool $hideButtonEdit = false, bool $hideButtonDuplicate = false, bool $hideButtonPrint = false, bool $hideButtonShare = false,
bool $hideButtonEmail = false, bool $hideButtonPdf = false, bool $hideButtonTemplate = false, bool $hideButtonDelete = false,
bool $hideButtonGroupDivider1 = false, bool $hideButtonGroupDivider2 = false, bool $hideButtonGroupDivider3 = false,
string $permissionCreate = '', string $permissionUpdate = '', string $permissionDelete = '',
string $routeButtonAddNew = '', string $routeButtonEdit = '', string $routeButtonDuplicate = '', string $routeButtonPrint = '', string $signedUrl = '',
string $routeButtonEmail = '', string $routeButtonPdf = '', string $routeButtonDelete = '', string $routeFromAccountShow = '', string $routeToAccountShow = '',
string $textDeleteModal = '',
bool $hideHeader = false, bool $hideHeaderFromAccount = false, bool $hideHeaderToAccount = false, bool $hideHeaderAmount = false, bool $hideHeaderPaidAt = false,
string $textHeaderFromAccount = '', string $textHeaderToAccount = '', string $textHeaderAmount = '', string $textHeaderPaidAt = '',
string $classHeaderFromAccount = '', string $classHeaderToAccount = '', string $classHeaderAmount = '', string $classHeaderPaidAt = '',
bool $hideFromAccount = false, bool $hideFromAccountTitle = false, bool $hideFromAccountName = false, bool $hideFromAccountNumber = false,
bool $hideFromAccountBankName = false, bool $hideFromAccountBankPhone = false, bool $hideFromAccountBankAddress = false,
string $textFromAccountTitle = '', string $textFromAccountNumber = '',
bool $hideToAccount = false, bool $hideToAccountTitle = false, bool $hideToAccountName = false, bool $hideToAccountNumber = false,
bool $hideToAccountBankName = false, bool $hideToAccountBankPhone = false, bool $hideToAccountBankAddress = false,
string $textToAccountTitle = '', string $textToAccountNumber = '',
bool $hideDetails = false, bool $hideDetailTitle = false, bool $hideDetailDate = false, bool $hideDetailPaymentMethod = false,
bool $hideDetailReference = false, bool $hideDetailDescription = false, bool $hideDetailAmount = false,
string $textDetailTitle = '', string $textDetailDate = '', string $textDetailPaymentMethod = '', string $textDetailReference = '',
string $textDetailDescription = '', string $textDetailAmount = '',
bool $hideAttachment = false, $attachment = [],
bool $hideFooter = false, bool $hideFooterHistories = false, $histories = [],
string $textHistories = '', string $classFooterHistories = ''
) {
$this->transfer = $transfer;
$this->transferTemplate = $this->getTransferTemplate($transferTemplate);
$this->payment_methods = ($payment_methods) ?: Modules::getPaymentMethods('all');
$this->date_format = $this->getCompanyDateFormat();
// Navbar Hide
$this->hideButtonAddNew = $hideButtonAddNew;
$this->hideButtonMoreActions = $hideButtonMoreActions;
$this->hideButtonEdit = $hideButtonEdit;
$this->hideButtonDuplicate = $hideButtonDuplicate;
$this->hideButtonPrint = $hideButtonPrint;
$this->hideButtonShare = $hideButtonShare;
$this->hideButtonEmail = $hideButtonEmail;
$this->hideButtonPdf = $hideButtonPdf;
$this->hideButtonTemplate = $hideButtonTemplate;
$this->hideButtonDelete = $hideButtonDelete;
$this->hideButtonGroupDivider1 = $hideButtonGroupDivider1;
$this->hideButtonGroupDivider2 = $hideButtonGroupDivider2;
$this->hideButtonGroupDivider3 = $hideButtonGroupDivider3;
// Navbar Permission
$this->permissionCreate = $this->getPermissionCreate($permissionCreate);
$this->permissionUpdate = $this->getPermissionUpdate($permissionUpdate);
$this->permissionDelete = $this->getPermissionDelete($permissionDelete);
// Navbar route
$this->routeButtonAddNew = $this->getRouteButtonAddNew($routeButtonAddNew);
$this->routeButtonEdit = $this->getRouteButtonEdit($routeButtonEdit);
$this->routeButtonDuplicate = $this->getRouteButtonDuplicate($routeButtonDuplicate);
$this->routeButtonPrint = $this->getRouteButtonPrint($routeButtonPrint);
$this->signedUrl = $this->getSignedUrl($signedUrl);
$this->routeButtonEmail = $this->getRouteButtonEmail($routeButtonEmail);
$this->routeButtonPdf = $this->getRouteButtonPdf($routeButtonPdf);
$this->routeButtonDelete = $this->getRouteButtonDelete($routeButtonDelete);
$this->routeFromAccountShow = $this->getRouteFromAccountShow($routeFromAccountShow);
$this->routeToAccountShow = $this->getRouteToAccountShow($routeToAccountShow);
// Navbar Text
$this->textDeleteModal = $textDeleteModal;
// Header Hide
$this->hideHeader = $hideHeader;
$this->hideHeaderFromAccount = $hideHeaderFromAccount;
$this->hideHeaderToAccount = $hideHeaderToAccount;
$this->hideHeaderToAccount = $hideHeaderToAccount;
$this->hideHeaderAmount = $hideHeaderAmount;
$this->hideHeaderPaidAt = $hideHeaderPaidAt;
// Header Text
$this->textHeaderFromAccount = $this->getTextHeaderFromAccount($textHeaderFromAccount);
$this->textHeaderToAccount = $this->getTextHeaderToAccount($textHeaderToAccount);
$this->textHeaderAmount = $this->getTextHeaderAmount($textHeaderAmount);
$this->textHeaderPaidAt = $this->gettextHeaderPaidAt($textHeaderPaidAt);
// Header Class
$this->classHeaderFromAccount = $this->getclassHeaderFromAccount($classHeaderFromAccount);
$this->classHeaderToAccount = $this->getClassHeaderToAccount($classHeaderToAccount);
$this->classHeaderAmount = $this->getClassHeaderAmount($classHeaderAmount);
$this->classHeaderPaidAt = $this->getclassHeaderPaidAt($classHeaderPaidAt);
// From account Hide
$this->hideFromAccount = $hideFromAccount;
$this->hideFromAccountTitle = $hideFromAccountTitle;
$this->hideFromAccountName = $hideFromAccountName;
$this->hideFromAccountNumber = $hideFromAccountNumber;
$this->hideFromAccountBankName = $hideFromAccountBankName;
$this->hideFromAccountBankPhone = $hideFromAccountBankPhone;
$this->hideFromAccountBankAddress = $hideFromAccountBankAddress;
// From account text
$this->textFromAccountTitle = $this->getTextFromAccountTitle($textFromAccountTitle);
$this->textFromAccountNumber = $this->getTextFromAccountNumber($textFromAccountNumber);
// To account Hide
$this->hideToAccount = $hideToAccount;
$this->hideToAccountTitle = $hideToAccountTitle;
$this->hideToAccountName = $hideToAccountName;
$this->hideToAccountNumber = $hideToAccountNumber;
$this->hideToAccountBankName = $hideToAccountBankName;
$this->hideToAccountBankPhone = $hideToAccountBankPhone;
$this->hideToAccountBankAddress = $hideToAccountBankAddress;
// To account text
$this->textToAccountTitle = $this->getTextToAccountTitle($textToAccountTitle);
$this->textToAccountNumber = $this->getTextToAccountNumber($textToAccountNumber);
// Detail Information Hide checker
$this->hideDetails = $hideDetails;
$this->hideDetailTitle = $hideDetailTitle;
$this->hideDetailDate = $hideDetailDate;
$this->hideDetailPaymentMethod = $hideDetailPaymentMethod;
$this->hideDetailReference = $hideDetailReference;
$this->hideDetailDescription = $hideDetailDescription;
$this->hideDetailAmount = $hideDetailAmount;
// Releated Information Text
$this->textDetailTitle = $this->getTextDetailTitle($textDetailTitle);
$this->textDetailDate = $this->getTextDetailDate($textDetailDate);
$this->textDetailPaymentMethod = $this->getTextDetailPaymentMethod($textDetailPaymentMethod);
$this->textDetailReference = $this->getTextDetailReference($textDetailReference);
$this->textDetailDescription = $this->getTextDetailDescription($textDetailDescription);
$this->textDetailAmount = $this->getTextDetailAmount($textDetailAmount);
// Hide Attachment
$this->hideAttachment = $hideAttachment;
// Attachment data..
$this->attachment = '';
if (!empty($attachment)) {
$this->attachment = $attachment;
} else if (!empty($transfer)) {
$this->attachment = $transfer->attachment;
}
// Histories Hide
$this->hideFooter = $hideFooter;
$this->hideFooterHistories = $hideFooterHistories;
// Histories
$this->histories = $this->getHistories($histories);
$this->textHistories = $this->getTextHistories($textHistories);
$this->classFooterHistories = $this->getClassFooterHistories($classFooterHistories);
}
protected function getTransferTemplate($transferTemplate)
{
if (!empty($transferTemplate)) {
return $transferTemplate;
}
return setting('transfer.template');
}
protected function getRouteButtonAddNew($routeButtonAddNew)
{
if (!empty($routeButtonAddNew)) {
return $routeButtonAddNew;
}
return 'transfers.create';
}
protected function getRouteButtonEdit($routeButtonEdit)
{
if (!empty($routeButtonEdit)) {
return $routeButtonEdit;
}
return 'transfers.edit';
}
protected function getRouteButtonDuplicate($routeButtonDuplicate)
{
if (!empty($routeButtonDuplicate)) {
return $routeButtonDuplicate;
}
return 'transfers.duplicate';
}
protected function getRouteButtonPrint($routeButtonPrint)
{
if (!empty($routeButtonPrint)) {
return $routeButtonPrint;
}
return 'transfers.print';
}
protected function getSignedUrl($signedUrl)
{
if (!empty($signedUrl)) {
return $signedUrl;
}
try {
$signedUrl = URL::signedRoute('signed.transfer.show', [$this->transfer->id]);
} catch (\Exception $e) {
$signedUrl = false;
}
return $signedUrl;
}
protected function getRouteButtonEmail($routeButtonEmail)
{
if (!empty($routeButtonEmail)) {
return $routeButtonEmail;
}
return 'transfers.email';
}
protected function getRouteButtonPdf($routeButtonPdf)
{
if (!empty($routeButtonPdf)) {
return $routeButtonPdf;
}
return 'transfers.pdf';
}
protected function getRouteButtonDelete($routeButtonDelete)
{
if (!empty($routeButtonDelete)) {
return $routeButtonDelete;
}
return 'transfers.destroy';
}
protected function getRouteFromAccountShow($routeFromAccountShow)
{
if (!empty($routeFromAccountShow)) {
return $routeFromAccountShow;
}
return 'accounts.show';
}
protected function getRouteToAccountShow($routeToAccountShow)
{
if (!empty($routeToAccountShow)) {
return $routeToAccountShow;
}
return 'accounts.show';
}
protected function getPermissionCreate($permissionCreate)
{
if (!empty($permissionCreate)) {
return $permissionCreate;
}
return 'create-banking-transfers';
}
protected function getPermissionUpdate($permissionUpdate)
{
if (!empty($permissionUpdate)) {
return $permissionUpdate;
}
return 'update-banking-transfers';
}
protected function getPermissionDelete($permissionDelete)
{
if (!empty($permissionDelete)) {
return $permissionDelete;
}
return 'delete-banking-transfers';
}
protected function getTextHeaderFromAccount($textHeaderFromAccount)
{
if (!empty($textHeaderFromAccount)) {
return $textHeaderFromAccount;
}
return 'transfers.from_account';
}
protected function getTextHeaderToAccount($textHeaderToAccount)
{
if (!empty($textHeaderToAccount)) {
return $textHeaderToAccount;
}
return 'transfers.to_account';
}
protected function getTextHeaderAmount($textHeaderAmount)
{
if (!empty($textHeaderAmount)) {
return $textHeaderAmount;
}
return 'general.amount';
}
protected function getTextHeaderPaidAt($textHeaderPaidAt)
{
if (!empty($textHeaderPaidAt)) {
return $textHeaderPaidAt;
}
return 'general.date';
}
protected function getClassHeaderFromAccount($classHeaderFromAccount)
{
if (!empty($classHeaderFromAccount)) {
return $classHeaderFromAccount;
}
return 'col-4 col-lg-2';
}
protected function getClassHeaderToAccount($classHeaderToAccount)
{
if (!empty($classHeaderToAccount)) {
return $classHeaderToAccount;
}
return 'col-4 col-lg-6';
}
protected function getClassHeaderAmount($classHeaderAmount)
{
if (!empty($classHeaderAmount)) {
return $classHeaderAmount;
}
return 'col-4 col-lg-2 float-right';
}
protected function getClassHeaderPaidAt($classHeaderPaidAt)
{
if (!empty($classHeaderPaidAt)) {
return $classHeaderPaidAt;
}
return 'col-4 col-lg-2';
}
protected function getTextFromAccountTitle($textToAccountTitle)
{
if (!empty($textToAccountTitle)) {
return $textToAccountTitle;
}
return 'transfers.from_account';
}
protected function getTextFromAccountNumber($textFromAccountNumber)
{
if (!empty($textFromAccountNumber)) {
return $textFromAccountNumber;
}
return 'accounts.number';
}
protected function getTextToAccountTitle($textFromAccountTitle)
{
if (!empty($textFromAccountTitle)) {
return $textFromAccountTitle;
}
return 'transfers.to_account';
}
protected function getTextToAccountNumber($textToAccountNumber)
{
if (!empty($textToAccountNumber)) {
return $textToAccountNumber;
}
return 'accounts.number';
}
protected function getTextDetailTitle($textDetailTitle)
{
if (!empty($textDetailTitle)) {
return $textDetailTitle;
}
return 'transfers.details';
}
protected function getTextDetailDate($textDetailDate)
{
if (!empty($textDetailDate)) {
return $textDetailDate;
}
return 'general.date';
}
protected function getTextDetailPaymentMethod($textDetailPaymentMethod)
{
if (!empty($textDetailPaymentMethod)) {
return $textDetailPaymentMethod;
}
return 'general.payment_methods';
}
protected function getTextDetailReference($textDetailReference)
{
if (!empty($textDetailReference)) {
return $textDetailReference;
}
return 'general.reference';
}
protected function getTextDetailDescription($textDetailDescription)
{
if (!empty($textDetailDescription)) {
return $textDetailDescription;
}
return 'general.description';
}
protected function getTextDetailAmount($textDetailAmount)
{
if (!empty($textDetailAmount)) {
return $textDetailAmount;
}
return 'general.amount';
}
protected function getHistories($histories)
{
if (!empty($histories)) {
return $histories;
}
$histories[] = $this->transfer;
return $histories;
}
protected function getTextHistories($textHistories)
{
if (!empty($textHistories)) {
return $textHistories;
}
return 'invoices.histories';
}
protected function getClassFooterHistories($classFooterHistories)
{
if (!empty($classFooterHistories)) {
return $classFooterHistories;
}
return 'col-sm-6 col-md-6 col-lg-6 col-xl-6';
}
}