Back to PhocacartStatistics class

Method getDataChart

public
getDataChart
(mixed $numberOfDate = '', mixed $dateFrom = '', mixed $dateTo = '')

Method getDataChart - Source code

public function getDataChart($numberOfDate = '', $dateFrom = '', $dateTo = '')
{
    $db = Factory::getDbo();
    $q = $db->getQuery(true);
    //- $q->select('a.id, DATE(a.date) AS date_only, COUNT(DATE(a.date)) AS count_orders');
    $q->select('DATE(a.date) AS date_only, COUNT(DATE(a.date)) AS count_orders');
    $q->from('`#__phocacart_orders` AS a');
    $q->select('SUM(t.amount) AS order_amount');
    $q->join('LEFT', '#__phocacart_order_total AS t ON a.id=t.order_id');
    $q->where('t.type = \'brutto\'');
    // Filter by order status
    $whereOrderStatus = '';
    if (!PhocacartStatistics::setWhereByOrderStatus($whereOrderStatus)) {
        return false;
    }
    if ($whereOrderStatus != '') {
        $q->where($whereOrderStatus);
    }
    if ($numberOfDate == '') {
        $numberOfDate = 6;
        //7 days
    }
    if ($dateFrom == '') {
        $dateFrom = PhocacartDate::getCurrentDate($numberOfDate);
    }
    if ($dateTo == '') {
        $dateTo = PhocacartDate::getCurrentDate();
    }
    $dateDays = PhocacartDate::getDateDays($dateFrom, $dateTo);
    if ($dateTo != '' && $dateFrom != '') {
        $dateFrom = $db->Quote($dateFrom);
        $dateTo = $db->Quote($dateTo);
        $q->where('DATE(a.date) >= ' . $dateFrom . ' AND DATE(a.date) <= ' . $dateTo);
    }
    //- $q->group('DATE(a.date), a.id');
    $q->group('DATE(a.date)');
    $q->order($db->escape('a.date ASC'));
    //echo nl2br(str_replace('#__', 'jos_', $q->__toString()));
    $db->setQuery($q);
    $items = $db->loadObjectList();
    $amount = array();
    $orders = array();
    if (!empty($items) && !empty($dateDays)) {
        foreach ($dateDays as $date) {
            $amount[$date->format('Y-m-d')] = 0;
            $orders[$date->format('Y-m-d')] = 0;
        }
        foreach ($items as $k => $v) {
            if (isset($amount[$v->date_only])) {
                //- $amount[$v->date_only] += $v->order_amount;
                $amount[$v->date_only] = $v->order_amount;
            }
            if (isset($orders[$v->date_only])) {
                //- $orders[$v->date_only] += $v->count_orders;
                $orders[$v->date_only] = $v->count_orders;
            }
        }
    }
    $dataAmount = '';
    $dataOrders = '';
    $dataTicks = '';
    $i = 1;
    foreach ($amount as $k => $v) {
        if ($dataAmount != '') {
            $dataAmount .= ', ';
        }
        $dataAmount .= (int) $v;
        $i++;
    }
    $i = 1;
    foreach ($orders as $k => $v) {
        if ($dataOrders != '') {
            $dataOrders .= ', ';
        }
        if ($dataTicks != '') {
            $dataTicks .= ', ';
        }
        $dataOrders .= (int) $v;
        $dataTicks .= '\'' . $k . '\'';
        $i++;
    }
    $rData = array();
    $rData['amount'] = $dataAmount;
    $rData['orders'] = $dataOrders;
    $rData['ticks'] = $dataTicks;
    return $rData;
}