90 lines
3.6 KiB
PHP
90 lines
3.6 KiB
PHP
<?php
|
|
class Crunchbutton_Sheriff extends Cana_Model {
|
|
public function restaurants() {
|
|
return Restaurant::q('SELECT * FROM restaurant WHERE active = 1 and id_restaurant=1 ORDER BY name ASC');
|
|
|
|
|
|
/*
|
|
} else {
|
|
$_restaurants_id = c::admin()->getRestaurantsUserHasCurationPermission();
|
|
$in = join( ',', $_restaurants_id );
|
|
$restaurants = Restaurant::q("SELECT * FROM restaurant WHERE active = 1 AND id_restaurant IN( {$in} ) ORDER BY name ASC");
|
|
}
|
|
*/
|
|
}
|
|
|
|
public function foodReport($params = []) {
|
|
|
|
// $orderByCategory = false, $showInactive = false
|
|
|
|
if( $orderByCategory ){
|
|
$orderBy = 'ORDER BY c.sort ASC, total DESC';
|
|
} else {
|
|
$orderBy = 'ORDER BY total DESC';
|
|
}
|
|
|
|
if( !$showInactive ){
|
|
$active = ' AND d.active = 1 ';
|
|
}
|
|
|
|
$query = '
|
|
SELECT
|
|
d.id_dish AS id_dish,
|
|
d.name AS dish,
|
|
c.name AS category,
|
|
ordered.total AS times,
|
|
d.active AS active,
|
|
first_order.date AS date,
|
|
top,
|
|
DATE_FORMAT( first_order.date ,"%b %d %Y") AS date_formated
|
|
FROM dish d
|
|
INNER JOIN category c ON c.id_category = d.id_category
|
|
LEFT JOIN
|
|
(SELECT COUNT(*) total,
|
|
id_dish
|
|
FROM order_dish od
|
|
INNER JOIN `order` o ON o.id_order = od.id_order AND o.name NOT LIKE "%test%"
|
|
GROUP BY id_dish) ordered ON ordered.id_dish = d.id_dish
|
|
LEFT JOIN
|
|
(SELECT min(date) AS date,
|
|
od.id_dish AS id_dish
|
|
FROM order_dish od
|
|
INNER JOIN `order` o ON od.id_order = o.id_order
|
|
GROUP BY od.id_dish) first_order ON first_order.id_dish = d.id_dish
|
|
WHERE d.id_restaurant = '.$params['id_restaurant'].' '.$active.' '.$orderBy.'
|
|
limit 9
|
|
';
|
|
|
|
$foods = c::db()->get( $query );
|
|
|
|
$data = [];
|
|
|
|
$query = 'SELECT COUNT(*) AS total FROM `order` o WHERE o.id_restaurant = '.$params['id_restaurant'].' AND o.name NOT LIKE "%test%" ';
|
|
$totalOrder = c::db()->get( $query );
|
|
$totalOrder = $totalOrder->_items[0]->total;
|
|
|
|
$query = 'SELECT COUNT(*) AS total FROM `order` o INNER JOIN order_dish od ON od.id_order = o.id_order WHERE o.id_restaurant = '.$params['id_restaurant'].' AND o.name NOT LIKE "%test%" ';
|
|
$restaurant_ordered = c::db()->get( $query );
|
|
$restaurant_ordered = $restaurant_ordered->_items[0]->total;
|
|
|
|
foreach( $foods as $food ){
|
|
|
|
$query = 'SELECT COUNT( DISTINCT( o.phone ) ) AS total FROM order_dish od INNER JOIN `order` o ON o.id_order = od.id_order AND o.name NOT LIKE "%test%" WHERE od.id_dish = "'.$food->id_dish.'" ';
|
|
$unique_users = c::db()->get( $query );
|
|
$unique_users = $unique_users->_items[0]->total;
|
|
|
|
$query = 'SELECT COUNT(*) AS total FROM `order` o INNER JOIN order_dish od ON od.id_order = o.id_order WHERE o.date >= "'.$food->date.'" AND o.id_restaurant = '.$params['id_restaurant'].' AND o.name NOT LIKE "%test%" ';
|
|
$restaurant_orderedSince = c::db()->get( $query );
|
|
$restaurant_orderedSince = $restaurant_orderedSince->_items[0]->total;
|
|
|
|
$query = 'SELECT COUNT(*) AS total FROM `order` o WHERE o.date >= "'.$food->date.'" AND o.id_restaurant = '.$params['id_restaurant'].' AND o.name NOT LIKE "%test%" ';
|
|
$ordersSince = c::db()->get( $query );
|
|
$ordersSince = $ordersSince->_items[0]->total;
|
|
|
|
$all_orderedSince = Crunchbutton_Order_Dish::totalDishesSince( $food->date );
|
|
|
|
$data[] = array( 'name' => $food->dish, 'times' => $food->times, 'category' => $food->category, 'active' => $food->active, 'date' => $food->date, 'restaurant_orderedSince' => $restaurant_orderedSince, 'ordersSince' => $ordersSince, 'restaurant_ordered' => $restaurant_ordered, 'totalOrder' => $totalOrder, 'all_orderedSince' => $all_orderedSince, 'date_formated' => $food->date_formated, 'unique_users' => $unique_users );
|
|
}
|
|
return $data;
|
|
}
|
|
} |