| Current Path : /home/digilove/public_html/components/com_marketplace/models/ |
| Current File : /home/digilove/public_html/components/com_marketplace/models/dashboard.php |
<?php
/**
* Marketplace - Component Marketplace
* ******************************************************************
*
* PHP version 7.0
*
* @category Component
* @package Joomla
* @author WebKul software private limited <support@webkul.com>
* @copyright 2010 WebKul software private limited
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @version GIT:5.2
* @filesource http://store.webkul.com
* @link Technical Support: webkul.uvdesk.com
* ******************************************************************
*/
// no direct access
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.model');
if (!class_exists('VmConfig')) {
include JPATH_ADMINISTRATOR.'/components/com_virtuemart/helpers/config.php';
}
VmConfig::loadConfig();
if (!class_exists('CurrencyDisplay')) {
include JPATH_ADMINISTRATOR.
'/components/com_virtuemart/helpers/currencydisplay.php';
}
if (!class_exists('MarketplaceModelDashboard')) {
/**
* Marketplace Model Dashboard class
*
* @category Component
* @package Joomla
* @author WebKul software private limited <support@webkul.com>
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
* @link Technical Support: webkul.uvdesk.com
*/
class MarketplaceModelDashboard extends JModelLegacy
{
var $_data = null;
/**
* __construct function
*/
function __construct()
{
parent::__construct();
}
/**
* Get Seller Information function
*
* @param Integer $seller_id for Seller Id
*
* @return void
*/
function getSellerInfo($seller_id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select('*')
->from($db->quoteName('#__marketplace_sellerprofile'))
->where($db->quoteName('seller_id')."=".$db->quote($seller_id))
->where($db->quoteName('is_seller')."=1");
try{
$db->setQuery($query);
return $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
}
}
/**
* Get Currency function
*
* @param Integer $order_id var
*
* @return void
*/
function getCurrency($order_id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('order_currency'))
->select($db->quoteName('order_total'))
->from($db->quoteName('#__virtuemart_orders'))
->where(
$db->quoteName('virtuemart_order_id')."=".$db->quote($order_id)
)
->order($db->quoteName('created_by')." DESC");
try{
$db->setQuery($query);
return $db->loadObject();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
}
}
/**
* Get Order Number function
*
* @param Integer $virtuemart_order_id var
*
* @return void
*/
function getOrderNumber($virtuemart_order_id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('order_number'))
->from($db->quoteName('#__virtuemart_orders'))
->where(
$db->quoteName('virtuemart_order_id').
"=".$db->quote($virtuemart_order_id)
);
try{
$db->setQuery($query);
return $db->loadResult();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
}
}
/**
* Get Order Currency function
*
* @param [type] $virtuemart_order_id var
*
* @return void
*/
function getOrderCurrency($virtuemart_order_id)
{
$db=$this->_db;
$query=$db->getQuery(true);
$query->select($db->quoteName('order_currency'))
->from($db->quoteName('#__virtuemart_orders'))
->where(
$db->quoteName('virtuemart_order_id').
"=".$db->quote($virtuemart_order_id)
);
try{
$db->setQuery($query);
return $db->loadResult();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
}
/**
* Get Total Order function
*
* @return void
*/
function getTotalOrder()
{
$userdetails = JFactory::getUser();
$db = $this->_db;
$query = $db->getQuery(true);
$app=JFactory::getApplication();
$query->select($db->quoteName('b.virtuemart_order_id'))
->select('sum(virtuemart_product_total_amount) as wk_order_total')
->from($db->quoteName('#__marketplace_orderlist')." AS b")
->where('b.virtuemart_seller_id='.$userdetails->id)
->group($db->quoteName('b.virtuemart_order_id'));
$data=array();
try{
$this->_data = $this->_getList($query);
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
foreach ($this->_data as $key=>$value) {
$singleOrder=$this->getVmOrder($value->virtuemart_order_id);
if (isset($singleOrder)
&&isset($singleOrder['details'])
&&isset($singleOrder['details']['BT'])
) {
$data[$key]=$singleOrder['details']['BT'];
}
if (isset($data[$key])) {
$data[$key]->wk_order_total=$value->wk_order_total;
}
}
$this->_data=$data;
return $this->_data;
}
/**
* Load a single order, Attention, this function is not protected!
* Do the right manangement before, to be certain
* we suggest to use getMyOrderDetails
*
* @param integer $virtuemart_order_id var
* @param boolean $userlang var
*
* @return void
*/
public function getVmOrder($virtuemart_order_id, $userlang=false)
{
$virtuemart_order_id = (int)$virtuemart_order_id;
$db = JFactory::getDBO();
$order = array();
// Get the order details
// Create a new query object.
$query = $db->getQuery(true);
$query
->select(array('o.*', 'u.*', 's.order_status_name'))
->from($db->quoteName('#__virtuemart_orders', 'o'))
->join(
'LEFT',
$db->quoteName('#__virtuemart_orderstates', 's') .
' ON (' . $db->quoteName('s.order_status_code') .
' = ' . $db->quoteName('o.order_status') . ')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_order_userinfos', 'u') .
' ON (' . $db->quoteName('u.virtuemart_order_id') .
' = ' . $db->quoteName('o.virtuemart_order_id') . ')'
)
->where(
$db->quoteName('o.virtuemart_order_id') . '='.
$virtuemart_order_id
);
$db->setQuery($query);
try{
$order['details'] = $db->loadObjectList('address_type');
}
catch(Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
if ($order['details'] and isset($order['details']['BT'])) {
$concat = array();
if (!empty($order['details']['BT']->company)) {
$concat[]= $order['details']['BT']->company;
}
if (!empty($order['details']['BT']->first_name)) {
$concat[]= $order['details']['BT']->first_name;
}
if (!empty($order['details']['BT']->middle_name)) {
$concat[]= $order['details']['BT']->middle_name;
}
if (!empty($order['details']['BT']->last_name)) {
$concat[]= $order['details']['BT']->last_name;
}
$order['details']['BT']->order_name = '';
foreach ($concat as $c) {
$order['details']['BT']->order_name .= trim($c).' ';
}
$order['details']['BT']->order_name = trim(
htmlspecialchars(
strip_tags(
htmlspecialchars_decode(
$order['details']['BT']->order_name
)
)
)
);
}
if ($userlang) {
if (!empty($order['details']['BT']->order_language)) {
$olang = $order['details']['BT']->order_language;
VmConfig::loadJLang('com_virtuemart', true, $olang);
VmConfig::loadJLang('com_virtuemart_shoppers', true, $olang);
VmConfig::loadJLang('com_virtuemart_orders', true, $olang);
}
}
// Get the order history
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__virtuemart_order_histories'))
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
)
->order($db->quoteName('virtuemart_order_history_id') . ' ASC');
$db->setQuery($query);
try{
$order['history'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
// Get the order items
$query = $db->getQuery(true);
$query
->select(
array(
'virtuemart_order_item_id',
'product_quantity',
'order_item_name',
'order_item_sku',
'i.virtuemart_product_id',
'product_item_price',
'product_final_price',
'product_basePriceWithTax',
'product_discountedPriceWithoutTax',
'product_priceWithoutTax',
'product_subtotal_with_tax',
'product_subtotal_discount',
'product_tax',
'product_attribute',
'order_status',
'p.product_available_date',
'p.product_availability',
'intnotes',
'virtuemart_category_id',
'p.product_mpn'
)
)
->from($db->quoteName('#__virtuemart_order_items', 'i'))
->join(
'LEFT',
$db->quoteName('#__virtuemart_products', 'p') .
' ON (' . $db->quoteName('p.virtuemart_product_id') .
' = ' . $db->quoteName('i.virtuemart_product_id') . ')'
)
->join(
'LEFT',
$db->quoteName('#__virtuemart_product_categories', 'c') .
' ON (' . $db->quoteName('p.virtuemart_product_id') .
' = ' . $db->quoteName('c.virtuemart_product_id') . ')'
)
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
)
->group($db->quoteName('virtuemart_order_item_id'));
$db->setQuery($query);
try{
$order['items'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
$customfieldModel = VmModel::getModel('customfields');
$pModel = VmModel::getModel('product');
foreach ($order['items'] as &$item) {
$ids = array();
$product = $pModel->getProduct($item->virtuemart_product_id);
if (is_object($product)) {
$pvar = get_object_vars($product);
foreach ( $pvar as $k => $v) {
if (!isset($item->$k)
and isset($product->$k)
and '_' != substr($k, 0, 1)
) {
$item->$k = $v;
}
}
}
if (!empty($item->product_attribute)) {
$myCustoms = @json_decode($item->product_attribute, true);
$myCustoms = (array) $myCustoms;
$item->customfields = array();
foreach ($myCustoms as $custom) {
if (!is_array($custom)) {
$custom = array( $custom =>false);
}
foreach ($custom as $id=>$field) {
$item->customfields[] = $customfieldModel
->getCustomEmbeddedProductCustomField($id);
$ids[] = $id;
}
}
}
if (!empty($product->customfields)) {
if (!isset($item->customfields)) {
$item->customfields = array();
}
foreach ($product->customfields as $customfield) {
if (!in_array($customfield->virtuemart_customfield_id, $ids)
and $customfield->field_type=='E'
and ($customfield->is_input
or $customfield->is_cart_attribute)
) {
$item->customfields[] = $customfield;
}
}
}
}
// Get the order items
$query = $db->getQuery(true);
$query
->select('*')
->from($db->quoteName('#__virtuemart_order_calc_rules', 'z'))
->where(
$db->quoteName('virtuemart_order_id') . '='.
$virtuemart_order_id
);
$db->setQuery($query);
try{
$order['calc_rules'] = $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
return $order;
}
/**
* Get Order function
*
* @return void
*/
function getOrder()
{
$userdetails = JFactory::getUser();
$db = $this->getDbo();
$query = $db->getQuery(true);
$app=JFactory::getApplication();
$query->select($db->quoteName('b.virtuemart_order_id'))
->select('sum(virtuemart_product_total_amount) as wk_order_total')
->from($db->quoteName('#__marketplace_orderlist')." AS b")
->where('b.virtuemart_seller_id='.$userdetails->id)
->order(
"CAST(".
$db->quoteName('b.virtuemart_order_id').
" as UNSIGNED) DESC"
)
->group($db->quoteName('b.virtuemart_order_id'));
$query->setLimit(5);
$data=array();
try{
$this->_data = $this->_getList($query);
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
foreach ($this->_data as $key=>$value) {
$query = $db->getQuery(true);
$query->select($db->quoteName('vi.virtuemart_order_item_id'))
->from($db->quoteName('#__virtuemart_order_items', 'vi'))
->join(
'LEFT',
$db->quoteName(
'#__virtuemart_products',
'vp'
)." ON(".
$db->quoteName('vi.virtuemart_product_id').
"=".$db->quoteName('vp.virtuemart_product_id').")"
)
->where(
'vi.virtuemart_order_id='.$value->virtuemart_order_id
)
->where('vp.created_by='.JFactory::getUser()->id);
$db->setQuery($query);
try {
$item_id=$db->loadObjectList();
} catch (Exception $e) {
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
$singleOrder=$this->getVmOrder($value->virtuemart_order_id);
if (isset($singleOrder)&&isset($singleOrder['details'])
&&isset($singleOrder['details']['BT'])
) {
$data[$key]=$singleOrder['details']['BT'];
}
if (isset($item_id[0]->virtuemart_order_item_id)) {
$data[$key]->item_id= $item_id[0]->virtuemart_order_item_id;
}
if (isset($data[$key])) {
$data[$key]->wk_order_total=$value->wk_order_total;
}
}
$this->_data=$data;
return $this->_data;
}
/**
* Get Order Total function
*
* @return void
*/
function getOrderTotal()
{
$userdetails=JFactory::getUser();
$db= $this->_db;
$query= $db->getQuery(true);
$query->select($db->quoteName('b.virtuemart_order_id'))
->select('sum(virtuemart_product_total_amount) as wk_order_total')
->from($db->quoteName('#__marketplace_orderlist')." AS b")
->where('b.virtuemart_seller_id='.$userdetails->id)
->group($db->quoteName('b.virtuemart_order_id'));
$db->setQuery($query);
try{
$orders=$db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
$orderTotal=0.0;
foreach ($orders as $key => $value) {
$orderTotal+=$value->wk_order_total;
}
return $orderTotal;
}
/**
* Get PieChart Data function
*
* @return void
*/
function getPieChartData()
{
$db=$this->_db;
$query=$db->getQuery(true);
$select=array(
$db->quoteName('a.virtuemart_order_id'),
$db->quoteName('a.virtuemart_product_id'),
$db->quoteName('a.product_subtotal_with_tax'),
$db->quoteName('a.created_on')
);
$query->select($select)
->from($db->quoteName('#__virtuemart_order_items', 'a'))
->join(
'LEFT',
$db->quoteName('#__virtuemart_products', 'b')." ON ".
$db->quoteName('a.virtuemart_product_id')."=".
$db->quoteName('b.virtuemart_product_id')
)
->join(
'LEFT',
$db->quoteName('#__marketplace_orderlist', 'mo')." ON "
.$db->quoteName('mo.virtuemart_order_id')."="
.$db->quoteName('a.virtuemart_order_id')
)
->where(
$db->quoteName('b.created_by')."=".$db->quote(
JFactory::getUser()->id
)
)
->group($db->quoteName('mo.virtuemart_product_id'))
->order($db->quoteName('a.created_on'));
try{
$db->setQuery($query);
return $db->loadObjectList();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
}
}
/**
* Get Locations function
*
* @param integer $seller_id var
*
* @return void
*/
function getLocations($seller_id)
{
$userdetails=JFactory::getUser();
$db= $this->_db;
$query= $db->getQuery(true);
$query->select($db->quoteName('b.virtuemart_order_id'))
->from($db->quoteName('#__marketplace_orderlist')." AS b")
->where('b.virtuemart_seller_id='.$userdetails->id)
->group($db->quoteName('b.virtuemart_order_id'));
$db->setQuery($query);
try{
$orders=$db->loadObjectList();
}catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
$orderTotal=0.0;
$geodata=array();
$country_array=array();
foreach ($orders as $key => $value) {
$vmOrder=$this->getVmOrder($value->virtuemart_order_id);
if (isset($vmOrder)&&isset($vmOrder['details'])
&&isset($vmOrder['details']['BT'])
&&isset($vmOrder['details']['BT']->virtuemart_country_id)
) {
$query=$db->getQuery(true);
$query->select($db->quoteName('country_2_code'))
->from($db->quoteName('#__virtuemart_countries'))
->where(
$db->quoteName('virtuemart_country_id').
"=".$db->quote(
$vmOrder['details']['BT']->virtuemart_country_id
)
);
$db->setQuery($query);
try{
$country_name=$db->loadResult();
}
catch(Exception $e){
JFactory::getApplication()->enqueueMessage(
$e->getMessage(),
'error'
);
return false;
}
if (array_key_exists($country_name, $country_array)) {
$country_array[$country_name]++;
} else {
$country_array[$country_name]=1;
}
}
}
return $country_array;
}
}
}