Your IP : 216.73.216.231


Current Path : /home/digilove/public_html/components/com_marketplace/models/
Upload File :
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;
        }
    }
}