| Current Path : /home/megadansyp/www/components/com_eventgallery/library/ |
| Current File : /home/megadansyp/www/components/com_eventgallery/library/servicelineitem.php |
<?php
/**
* @package Sven.Bluege
* @subpackage com_eventgallery
*
* @copyright Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
class EventgalleryLibraryServicelineitem extends EventgalleryLibraryLineitem
{
const TYPE_SHIPINGMETHOD = 1;
const TYPE_PAYMENTMETHOD = 2;
const TYPE_SURCHARGE = 3;
/**
* @var EventgalleryTableServicelineitem
*/
protected $_lineitem = null;
protected $_data = null;
/**
* @var string
*/
protected $_lineitem_table = 'Servicelineitem';
/**
* creates the lineitem object. The given $lineitem can be an stdClass object or a id of a line item.
* This is necessary since a lineitemcontainer can already preload it's line items with a single query.
*
* @param $lineitem
*/
function __construct($lineitem)
{
parent::__construct($lineitem);
}
/**
* @return EventgalleryLibraryMethodsPayment|EventgalleryLibraryMethodsShipping|EventgalleryLibraryMethodsSurcharge
*/
public function getMethod() {
if ($this->isPaymentMethod()) {
/**
* @var EventgalleryLibraryFactoryPaymentmethod $paymentMethodFactory
*/
$paymentMethodFactory = EventgalleryLibraryFactoryPaymentmethod::getInstance();
return $paymentMethodFactory->getMethodById($this->_lineitem->methodid, false);
}
if ($this->isShippingMethod()) {
/* @var EventgalleryLibraryFactoryShippingmethod $shippingMethodFactory */
$shippingMethodFactory = EventgalleryLibraryFactoryShippingmethod::getInstance();
return $shippingMethodFactory->getMethodById($this->_lineitem->methodid, false);
}
if ($this->isSurcharge()) {
/* @var EventgalleryLibraryFactorySurcharge $surchargeFactory */
$surchargeFactory = EventgalleryLibraryFactorySurcharge::getInstance();
return $surchargeFactory->getMethodById($this->_lineitem->methodid, false);
}
return null;
}
function getName() {
return $this->_lineitem->name;
}
function getDisplayName() {
if ($this->getMethod()) {
return $this->getMethod()->getDisplayName();
}
return "undefined";
}
function getDescription() {
if ($this->getMethod()) {
return $this->getMethod()->getDescription();
}
return "undefined";
}
/**
* @return bool
*/
public function isShippingMethod() {
return $this->_lineitem->type==self::TYPE_SHIPINGMETHOD?true:false;
}
/**
* @return bool
*/
public function isSurcharge() {
return $this->_lineitem->type==self::TYPE_SURCHARGE?true:false;
}
/**
* @return bool
*/
public function isPaymentMethod() {
return $this->_lineitem->type==self::TYPE_PAYMENTMETHOD?true:false;
}
/**
* @return mixed|null
*/
public function getData()
{
if (null == $this->_data) {
if ($this->_lineitem->data == null) {
$this->_data = new stdClass();
} else {
$this->_data = json_decode($this->_lineitem->data);
}
}
return $this->_data;
}
public function setData($key, $value) {
$this->getData()->$key = $value;
$this->_lineitem->data = json_encode($this->_data);
$this->_store();
$this->_data = null;
}
/**
* updates the price attributes of the service line item to match
* the price of the method.
* @param $lineitemcontainer
*/
public function recalculate($lineitemcontainer) {
$method = $this->getMethod();
$singleprice = $method->getPrice($lineitemcontainer)->getAmount();
$this->_lineitem->singleprice = $singleprice;
$this->_lineitem->price = $this->getQuantity() * $singleprice;
$this->_lineitem->taxrate = $method->getTaxrate();
$this->_store();
}
}