apiService = $apiService; } public function index() { try { $response = $this->apiService->get('/stations'); if ($response->successful()) { return view('pages.station locator.stations', [ 'stations' => $response->json()['data'] ]); } return back()->with('error', 'Unable to fetch stations.'); } catch (\Exception $e) { return back()->with('error', 'Service unavailable.'); } } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'address' => 'required|string', 'city' => 'required|string', 'state' => 'required|string', 'postal_code' => 'required|string', 'latitude' => 'required|numeric', 'longitude' => 'required|numeric', 'contact_number' => 'required|string', 'operating_hours' => 'required|string', 'services' => 'required|array', 'status' => 'required|string|in:active,inactive,maintenance' ]); try { $response = $this->apiService->post('/stations', $validated); if ($response->successful()) { return redirect()->route('stations') ->with('success', 'Station created successfully.'); } return back()->withErrors($response->json()['errors']); } catch (\Exception $e) { return back()->with('error', 'Unable to create station.'); } } public function update(Request $request, $id) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'address' => 'required|string', 'city' => 'required|string', 'state' => 'required|string', 'postal_code' => 'required|string', 'latitude' => 'required|numeric', 'longitude' => 'required|numeric', 'contact_number' => 'required|string', 'operating_hours' => 'required|string', 'services' => 'required|array', 'status' => 'required|string|in:active,inactive,maintenance' ]); try { $response = $this->apiService->put("/stations/{$id}", $validated); if ($response->successful()) { return redirect()->route('stations') ->with('success', 'Station updated successfully.'); } return back()->withErrors($response->json()['errors']); } catch (\Exception $e) { return back()->with('error', 'Unable to update station.'); } } public function destroy($id) { try { $response = $this->apiService->delete("/stations/{$id}"); if ($response->successful()) { return redirect()->route('stations') ->with('success', 'Station deleted successfully.'); } return back()->with('error', 'Unable to delete station.'); } catch (\Exception $e) { return back()->with('error', 'Service unavailable.'); } } public function updateFuelPrices(Request $request, $id) { $validated = $request->validate([ 'fuel_prices' => 'required|array', 'fuel_prices.*.fuel_type' => 'required|string', 'fuel_prices.*.price' => 'required|numeric|min:0', 'effective_date' => 'required|date' ]); try { $response = $this->apiService->post("/stations/{$id}/fuel-prices", $validated); if ($response->successful()) { return redirect()->route('stations') ->with('success', 'Fuel prices updated successfully.'); } return back()->withErrors($response->json()['errors']); } catch (\Exception $e) { return back()->with('error', 'Unable to update fuel prices.'); } } public function getFuelPriceHistory($id) { try { $response = $this->apiService->get("/stations/{$id}/fuel-price-history"); if ($response->successful()) { return response()->json($response->json()); } return response()->json(['error' => 'Unable to fetch fuel price history'], 400); } catch (\Exception $e) { return response()->json(['error' => 'Service unavailable'], 503); } } }