input('filter_date', Carbon::today()->toDateString()); // Ambil order yang ditugaskan kepada kurir yang sedang login $orders = Order::where('kurir_id', auth()->id()) ->whereDate('updated_at', $filterDate) ->get(); return view('kurir.order', compact('orders', 'filterDate')); } public function indexCustomer() { $orders = Order::with('kurir')->latest()->get(); $kurirs = User::where('role', 'kurir')->get(); // Ambil daftar kurir return view('customer.index', compact('orders', 'kurirs')); } public function index(Request $request) { $totalOrders = Order::count(); $ordersProcessing = Order::where('status', 'Assigned')->count(); $ordersCompleted = Order::where('status', 'Delivered')->count(); $filterDate = $request->input('filter_date', Carbon::today()->toDateString()); // $orders = Order::where('owner_id', auth()->id()) // ->whereDate('updated_at', $filterDate) --> Order pakai Owner_id $orders = Order::whereDate('updated_at', $filterDate) ->get(); $kurirs = User::where('role', 'kurir')->get(); // Ambil kurir dari tabel users return view('orders.index', compact('orders', 'kurirs', 'filterDate', 'totalOrders', 'ordersProcessing', 'ordersCompleted')); } // Tampilkan form tambah pesanan (hanya untuk owner) public function create() { // Menampilkan form untuk menambah order $kurirs = User::where('role', 'kurir')->get(); // Ambil kurir dari tabel users return view('orders.create', compact('kurirs')); } // Simpan pesanan baru (hanya untuk owner) public function store(Request $request) { $request->validate([ 'recipient_name' => 'required|string|max:255', 'address' => 'required|string|max:255', 'description' => 'required|string|max:255', 'kurir_id' => 'required|exists:users,id', // Pastikan kurir ada di tabel users ]); Order::create([ // 'owner_id' => auth()->id(), // ID pemilik yang sedang login 'kurir_id' => $request->kurir_id, 'recipient_name' => $request->recipient_name, 'address' => $request->address, 'description' => $request->description, 'status' => 'Assigned', // Status awal pesanan ]); return redirect()->route('orders.index')->with('success', 'Pesanan berhasil ditambahkan!'); } // Order Store untuk Customer public function Customer(Request $request) { $request->validate([ 'recipient_name' => 'required|string|max:255', 'address' => 'required|string', 'description' => 'required|string', 'kurir_id' => 'required|exists:users,id', ]); Order::create([ 'user_id' => auth()->id(), 'recipient_name' => $request->recipient_name, 'address' => $request->address, 'description' => $request->description, 'kurir_id' => $request->kurir_id, 'status' => 'Assigned', // Status awal pesanan ]); return response()->json([ 'success' => true, 'message' => 'Pesanan berhasil ditambahkan!', 'order' => $order->load('kurir'), // Sertakan data kurir dalam response ]); } public function updateStatus($id) { $order = Order::findOrFail($id); if ($order->status === 'Assigned') { $order->status = 'Delivered'; $order->save(); return redirect()->back()->with('success', 'Status pesanan berhasil diperbarui!'); } return redirect()->back()->with('error', 'Pesanan sudah dikirim atau selesai.'); } public function deliveredOrders() { $deliveredOrders = Order::where('status', 'Delivered')->get(); // Ambil pesanan yang sudah delivered return view('kurir.deliveredOrders', compact('deliveredOrders')); } public function sendLocation(Request $request) { if (!auth()->check()) { return response()->json([ 'success' => false, 'message' => 'User belum login' ], 401); } $request->validate([ 'latitude' => 'required|numeric', 'longitude' => 'required|numeric', ]); $location = Location::create([ 'user_id' => auth()->id(), 'latitude' => $request->latitude, 'longitude' => $request->longitude, ]); return response()->json([ 'success' => true, 'location' => $location, ]); } public function uploadBuktiPengiriman(Request $request, $id) { $request->validate([ 'image' => 'required|image' ]); $order = Order::findOrFail($id); if ($request->hasFile('image')) { $path = $request->file('image')->store('public/bukti_pengiriman'); $order->bukti_pengiriman = str_replace('public/', '', $path); $order->status = 'Delivered'; $order->save(); return response()->json(['success' => true, 'message' => 'Bukti pengiriman berhasil disimpan']); } return response()->json(['success' => false, 'error' => 'Gagal menyimpan gambar'], 500); } }