verifyRole('viewPerformance'); $data = [ 'user_permission' => $this->permission, 'page_title' => $this->pageTitle ]; $this->render_template('performance/index', $data); } public function fetchPerformanceData() { helper(['url', 'form']); $Orders = new Orders(); $OrderItems = new OrderItems(); $Products = new Products(); $draw = intval($this->request->getVar('draw')); $date = $this->request->getGet('date'); // format: YYYY-MM-DD / YYYY-W## / YYYY-MM $type = $this->request->getGet('type'); // 'day', 'week', 'month' if (!$type || !$date) { $type = 'day'; $date = date('Y-m-d'); } // Déterminer les données à récupérer if ($type === 'day') { $performance_data = $Orders->getUserPerformanceToday($date); } elseif ($type === 'week') { $performance_data = $Orders->getUserPerformanceByWeek($date); } elseif ($type === 'month') { $performance_data = $Orders->getUserPerformanceByMonth($date); } else { $performance_data = []; } $totalOrdersAllUsers = 0; $totalSalesAllUsers = 0; $totalProductPricesAllUsers = 0; $data = []; foreach ($performance_data as $value) { $userId = $value['user_id']; $userName = $value['full_name']; $orders = (int) $value['total_user_order']; $sales = (float) $value['total_prix_vente']; $orderIds = $value['order_ids'] ?? []; $productIds = $OrderItems->getProductIds($orderIds); $totalProductPrice = $Products->getTotalProductPriceByIds($productIds); $totalOrdersAllUsers += $orders; $totalSalesAllUsers += $sales; $totalProductPricesAllUsers += $totalProductPrice; $data[] = [ $userName, number_format($orders, 0, '.', ' '), number_format($sales - $totalProductPrice, 0, '.', ' ') . ' Ar' ]; } return $this->response->setJSON([ 'data' => $data ]); } public function fetchTotalPerformanceData() { helper(['url', 'form']); $Orders = new Orders(); $OrderItems = new OrderItems(); $Products = new Products(); $draw = intval($this->request->getVar('draw')); $date = $this->request->getGet('date'); // format: YYYY-MM-DD / YYYY-W## / YYYY-MM $type = $this->request->getGet('type'); // 'day', 'week', 'month' if (!$type || !$date) { $type = 'day'; $date = date('Y-m-d'); } // Déterminer les données à récupérer if ($type === 'day') { $performance_data = $Orders->getUserPerformanceToday($date); } elseif ($type === 'week') { $performance_data = $Orders->getUserPerformanceByWeek($date); } elseif ($type === 'month') { $performance_data = $Orders->getUserPerformanceByMonth($date); } else { $performance_data = []; } $totalOrdersAllUsers = 0; $totalSalesAllUsers = 0; $totalProductPricesAllUsers = 0; $data = []; foreach ($performance_data as $value) { $userId = $value['user_id']; $userName = $value['full_name']; $orders = (int) $value['total_user_order']; $sales = (float) $value['total_prix_vente']; $orderIds = $value['order_ids'] ?? []; $productIds = $OrderItems->getProductIds($orderIds); $totalProductPrice = (float) $Products->getTotalProductPriceByIds($productIds); $totalOrdersAllUsers += $orders; $totalSalesAllUsers += $sales; $totalProductPricesAllUsers += $totalProductPrice; $data = [ "total_commande"=> $orders, "total_benefice"=> number_format($totalSalesAllUsers - $totalProductPricesAllUsers, 0, '.', ' '), ]; } return $this->response->setJSON($data); } }