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;
}