File manager - Edit - /home/webapp69.cm.in.th/u69319090017/shop17/app/Http/Controllers/Api/SellerCentreController.php
Back
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\OrderItem; use App\Models\Shop; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; class SellerCentreController extends Controller { /** * Fetch orders belonging only to the current seller's shop_id. */ public function orders(Request $request, Shop $shop): JsonResponse { $orderItems = OrderItem::with(['order.buyer', 'variant.product']) ->where('shop_id', $shop->id) ->latest() ->paginate(15); return response()->json([ 'shop' => $shop->name, 'orders' => $orderItems, ]); } /** * Update shipping status (Pending, Shipped, Delivered) and add a tracking number. */ public function updateShipping(Request $request, Shop $shop, OrderItem $orderItem): JsonResponse { // Ensure the order item belongs to this shop if ($orderItem->shop_id !== $shop->id) { return response()->json(['message' => 'Order item does not belong to this shop.'], 403); } $request->validate([ 'shipping_status' => 'required|in:Pending,Shipped,Delivered', 'tracking_number' => 'required_if:shipping_status,Shipped,Delivered|string|nullable', ]); $orderItem->update([ 'shipping_status' => $request->input('shipping_status'), 'tracking_number' => $request->input('tracking_number'), ]); return response()->json([ 'message' => 'Shipping status updated successfully.', 'order_item' => $orderItem, ]); } /** * Fetch simple sales dashboard data (daily and monthly revenue). */ public function dashboard(Request $request, Shop $shop): JsonResponse { // Daily revenue for current month $dailyRevenue = OrderItem::where('shop_id', $shop->id) ->whereYear('created_at', now()->year) ->whereMonth('created_at', now()->month) ->select( DB::raw('DATE(created_at) as date'), DB::raw('SUM(quantity * price) as revenue') ) ->groupBy('date') ->orderBy('date', 'asc') ->get(); // Monthly revenue for current year $monthlyRevenue = OrderItem::where('shop_id', $shop->id) ->whereYear('created_at', now()->year) ->select( DB::raw('MONTH(created_at) as month'), DB::raw('SUM(quantity * price) as revenue') ) ->groupBy('month') ->orderBy('month', 'asc') ->get(); // Summary metrics $todayRevenue = OrderItem::where('shop_id', $shop->id) ->whereDate('created_at', now()->toDateString()) ->sum(DB::raw('quantity * price')); $thisMonthRevenue = OrderItem::where('shop_id', $shop->id) ->whereYear('created_at', now()->year) ->whereMonth('created_at', now()->month) ->sum(DB::raw('quantity * price')); return response()->json([ 'shop_id' => $shop->id, 'shop_name' => $shop->name, 'summary' => [ 'today_revenue' => $todayRevenue, 'this_month_revenue' => $thisMonthRevenue, ], 'daily_revenue' => $dailyRevenue, 'monthly_revenue' => $monthlyRevenue, ]); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings