public function getTopProducts(Request $request) { $input = $request->all(); $startDate = Carbon::today('Asia/Manila')->subDays(30); $endDate = Carbon::today('Asia/Manila'); if (isset($input['from'])) { $startDate = Carbon::createFromTimestamp(strtotime($input['from'])); $endDate = Carbon::createFromTimestamp(strtotime($input['to'])); } $cartItems = Cart::join('cart_items', 'carts.id', '=', 'cart_items.cart_id')->join('products', 'cart_items.product_id', '=', 'products.id')->select(\DB::raw('COUNT(quantity) as totalQuantity'), 'cart_items.product_id', 'products.name')->whereDate('carts.created_at', '>=', $startDate->toDateString())->whereDate('carts.created_at', '<=', $endDate->toDateString())->orderBy('totalQuantity', 'DESC')->groupBy('cart_items.product_id')->take(5)->get(); return $this->responseOk($cartItems); }