import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:glowwheels/constants/api.dart'; import 'package:glowwheels/models/order_model.dart'; import 'package:http/http.dart' as http; class OrdersProvider with ChangeNotifier { List _orders = []; bool _isLoading = false; bool _isRefreshing = false; String? _errorMessage; List get orders => _orders; bool get isLoading => _isLoading; bool get isRefreshing => _isRefreshing; String? get errorMessage => _errorMessage; Future fetchOrders(String shopId, {bool refresh = false}) async { final ordersUri = Uri.parse(ApiConstants.ordersByShop(shopId)); if (refresh) { _isRefreshing = true; } else { _isLoading = true; } notifyListeners(); try { final response = await http.get(ordersUri); if (response.statusCode == 200) { final data = json.decode(response.body); if (data['success'] == true) { final List ordersJson = data['orders']; _orders = ordersJson.map((orderJson) => Order.fromJson(orderJson)).toList(); _errorMessage = null; } else { _errorMessage = 'Failed to fetch orders'; } } else { _errorMessage = 'Server error: ${response.statusCode}'; } } catch (e) { _errorMessage = 'An error occurred: $e'; } _isLoading = false; _isRefreshing = false; notifyListeners(); } Future assignServiceBoyToOrder({ required String orderId, required String serviceBoyId, required String shopId, }) async { final assignUri = Uri.parse(ApiConstants.assignServiceBoy(orderId)); try { final response = await http.put( assignUri, headers: {'Content-Type': 'application/json'}, body: jsonEncode({'serviceBoyId': serviceBoyId}), ); if (response.statusCode == 200) { print('Successfully assigned service boy'); } else { print('Failed to assign service boy: ${response.statusCode}'); } } catch (e) { print('Error assigning service boy: $e'); } } Future updateOrderStatus({ required String orderId, required String status, }) async { final updateStatusUri = Uri.parse(ApiConstants.updateOrderStatusByAdmin(orderId)); try { final response = await http.put( updateStatusUri, headers: {'Content-Type': 'application/json'}, body: jsonEncode({'status': status}), ); if (response.statusCode == 200) { final index = _orders.indexWhere((o) => o.id == orderId); if (index != -1) { _orders[index] = _orders[index].copyWith(status: status); notifyListeners(); } } else { print('Failed to update status: ${response.statusCode}'); } } catch (e) { print('Error updating order status: $e'); } } }