chart.php (6564B)
1 <?php 2 class ModelExtensionDashboardChart extends Model { 3 public function getTotalOrdersByDay() { 4 $implode = array(); 5 6 foreach ($this->config->get('config_complete_status') as $order_status_id) { 7 $implode[] = "'" . (int)$order_status_id . "'"; 8 } 9 10 $order_data = array(); 11 12 for ($i = 0; $i < 24; $i++) { 13 $order_data[$i] = array( 14 'hour' => $i, 15 'total' => 0 16 ); 17 } 18 19 $query = $this->db->query("SELECT COUNT(*) AS total, HOUR(date_added) AS hour FROM `" . DB_PREFIX . "order` WHERE order_status_id IN(" . implode(",", $implode) . ") AND DATE(date_added) = DATE(NOW()) GROUP BY HOUR(date_added) ORDER BY date_added ASC"); 20 21 foreach ($query->rows as $result) { 22 $order_data[$result['hour']] = array( 23 'hour' => $result['hour'], 24 'total' => $result['total'] 25 ); 26 } 27 28 return $order_data; 29 } 30 31 public function getTotalOrdersByWeek() { 32 $implode = array(); 33 34 foreach ($this->config->get('config_complete_status') as $order_status_id) { 35 $implode[] = "'" . (int)$order_status_id . "'"; 36 } 37 38 $order_data = array(); 39 40 $date_start = strtotime('-' . date('w') . ' days'); 41 42 for ($i = 0; $i < 7; $i++) { 43 $date = date('Y-m-d', $date_start + ($i * 86400)); 44 45 $order_data[date('w', strtotime($date))] = array( 46 'day' => date('D', strtotime($date)), 47 'total' => 0 48 ); 49 } 50 51 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "order` WHERE order_status_id IN(" . implode(",", $implode) . ") AND DATE(date_added) >= DATE('" . $this->db->escape(date('Y-m-d', $date_start)) . "') GROUP BY DAYNAME(date_added)"); 52 53 foreach ($query->rows as $result) { 54 $order_data[date('w', strtotime($result['date_added']))] = array( 55 'day' => date('D', strtotime($result['date_added'])), 56 'total' => $result['total'] 57 ); 58 } 59 60 return $order_data; 61 } 62 63 public function getTotalOrdersByMonth() { 64 $implode = array(); 65 66 foreach ($this->config->get('config_complete_status') as $order_status_id) { 67 $implode[] = "'" . (int)$order_status_id . "'"; 68 } 69 70 $order_data = array(); 71 72 for ($i = 1; $i <= date('t'); $i++) { 73 $date = date('Y') . '-' . date('m') . '-' . $i; 74 75 $order_data[date('j', strtotime($date))] = array( 76 'day' => date('d', strtotime($date)), 77 'total' => 0 78 ); 79 } 80 81 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "order` WHERE order_status_id IN(" . implode(",", $implode) . ") AND DATE(date_added) >= '" . $this->db->escape(date('Y') . '-' . date('m') . '-1') . "' GROUP BY DATE(date_added)"); 82 83 foreach ($query->rows as $result) { 84 $order_data[date('j', strtotime($result['date_added']))] = array( 85 'day' => date('d', strtotime($result['date_added'])), 86 'total' => $result['total'] 87 ); 88 } 89 90 return $order_data; 91 } 92 93 public function getTotalOrdersByYear() { 94 $implode = array(); 95 96 foreach ($this->config->get('config_complete_status') as $order_status_id) { 97 $implode[] = "'" . (int)$order_status_id . "'"; 98 } 99 100 $order_data = array(); 101 102 for ($i = 1; $i <= 12; $i++) { 103 $order_data[$i] = array( 104 'month' => date('M', mktime(0, 0, 0, $i)), 105 'total' => 0 106 ); 107 } 108 109 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "order` WHERE order_status_id IN(" . implode(",", $implode) . ") AND YEAR(date_added) = YEAR(NOW()) GROUP BY MONTH(date_added)"); 110 111 foreach ($query->rows as $result) { 112 $order_data[date('n', strtotime($result['date_added']))] = array( 113 'month' => date('M', strtotime($result['date_added'])), 114 'total' => $result['total'] 115 ); 116 } 117 118 return $order_data; 119 } 120 121 public function getTotalCustomersByDay() { 122 $customer_data = array(); 123 124 for ($i = 0; $i < 24; $i++) { 125 $customer_data[$i] = array( 126 'hour' => $i, 127 'total' => 0 128 ); 129 } 130 131 $query = $this->db->query("SELECT COUNT(*) AS total, HOUR(date_added) AS hour FROM `" . DB_PREFIX . "customer` WHERE DATE(date_added) = DATE(NOW()) GROUP BY HOUR(date_added) ORDER BY date_added ASC"); 132 133 foreach ($query->rows as $result) { 134 $customer_data[$result['hour']] = array( 135 'hour' => $result['hour'], 136 'total' => $result['total'] 137 ); 138 } 139 140 return $customer_data; 141 } 142 143 public function getTotalCustomersByWeek() { 144 $customer_data = array(); 145 146 $date_start = strtotime('-' . date('w') . ' days'); 147 148 for ($i = 0; $i < 7; $i++) { 149 $date = date('Y-m-d', $date_start + ($i * 86400)); 150 151 $customer_data[date('w', strtotime($date))] = array( 152 'day' => date('D', strtotime($date)), 153 'total' => 0 154 ); 155 } 156 157 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "customer` WHERE DATE(date_added) >= DATE('" . $this->db->escape(date('Y-m-d', $date_start)) . "') GROUP BY DAYNAME(date_added)"); 158 159 foreach ($query->rows as $result) { 160 $customer_data[date('w', strtotime($result['date_added']))] = array( 161 'day' => date('D', strtotime($result['date_added'])), 162 'total' => $result['total'] 163 ); 164 } 165 166 return $customer_data; 167 } 168 169 public function getTotalCustomersByMonth() { 170 $customer_data = array(); 171 172 for ($i = 1; $i <= date('t'); $i++) { 173 $date = date('Y') . '-' . date('m') . '-' . $i; 174 175 $customer_data[date('j', strtotime($date))] = array( 176 'day' => date('d', strtotime($date)), 177 'total' => 0 178 ); 179 } 180 181 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "customer` WHERE DATE(date_added) >= '" . $this->db->escape(date('Y') . '-' . date('m') . '-1') . "' GROUP BY DATE(date_added)"); 182 183 foreach ($query->rows as $result) { 184 $customer_data[date('j', strtotime($result['date_added']))] = array( 185 'day' => date('d', strtotime($result['date_added'])), 186 'total' => $result['total'] 187 ); 188 } 189 190 return $customer_data; 191 } 192 193 public function getTotalCustomersByYear() { 194 $customer_data = array(); 195 196 for ($i = 1; $i <= 12; $i++) { 197 $customer_data[$i] = array( 198 'month' => date('M', mktime(0, 0, 0, $i)), 199 'total' => 0 200 ); 201 } 202 203 $query = $this->db->query("SELECT COUNT(*) AS total, date_added FROM `" . DB_PREFIX . "customer` WHERE YEAR(date_added) = YEAR(NOW()) GROUP BY MONTH(date_added)"); 204 205 foreach ($query->rows as $result) { 206 $customer_data[date('n', strtotime($result['date_added']))] = array( 207 'month' => date('M', strtotime($result['date_added'])), 208 'total' => $result['total'] 209 ); 210 } 211 212 return $customer_data; 213 } 214 }