Browse Source

tsy hita

master
Stephane 4 months ago
parent
commit
58bff6bf42
  1. 53
      lib/pages/commandes_screen.dart

53
lib/pages/commandes_screen.dart

@ -3,7 +3,6 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
import 'dart:convert'; import 'dart:convert';
import './PlatEdit_screen.dart';
class OrdersManagementScreen extends StatefulWidget { class OrdersManagementScreen extends StatefulWidget {
const OrdersManagementScreen({super.key}); const OrdersManagementScreen({super.key});
@ -17,18 +16,11 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
bool isLoading = true; bool isLoading = true;
String? errorMessage; String? errorMessage;
final String baseUrl = 'https://restaurant.careeracademy.mg/api'; final String baseUrl = 'https://restaurant.careeracademy.mg/api';
Map<int, MenuPlat>? menuMap;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
loadOrders(); loadOrders();
loadMenuMap();
}
Future<void> loadMenuMap() async {
final loadedMenuMap = await fetchMenuMap();
menuMap = loadedMenuMap;
} }
Future<void> loadOrders() async { Future<void> loadOrders() async {
@ -529,7 +521,6 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
onProcessPayment: processPayment, onProcessPayment: processPayment,
onDelete: deleteOrder, onDelete: deleteOrder,
onViewDetails: () => getOrderById(order.id), onViewDetails: () => getOrderById(order.id),
menuMap: menuMap,
); );
}, },
), ),
@ -537,30 +528,6 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
} }
} }
/// Récupère la liste des menus et la stocke dans un [Map]
/// la clé est l'ID du menu et la valeur est le [MenuPlat] correspondant.
///
/// Si la requête échoue, lève une [Exception] avec un message d'erreur.
Future<Map<int, MenuPlat>> fetchMenuMap() async {
final response = await http.get(
Uri.parse('https://restaurant.careeracademy.mg/api/menus'),
);
if (response.statusCode == 200) {
final List<dynamic> menuList = json.decode(response.body);
final Map<int, MenuPlat> menuMap = {};
for (var menu in menuList) {
final menuPlat = MenuPlat.fromJson(menu);
menuMap[menuPlat.id] = menuPlat;
}
return menuMap;
} else {
throw Exception('Échec de la récupération des menus');
}
}
class OrderCard extends StatelessWidget { class OrderCard extends StatelessWidget {
final Order order; final Order order;
final Function(Order, String, {String? modePaiement}) onStatusUpdate; final Function(Order, String, {String? modePaiement}) onStatusUpdate;
@ -568,19 +535,14 @@ class OrderCard extends StatelessWidget {
final Function(Order) onDelete; final Function(Order) onDelete;
final VoidCallback onViewDetails; final VoidCallback onViewDetails;
// Add menuMap field to have access to menu names const OrderCard({
Key? key,
// late Future<Map<int, MenuPlat>> menuMapFuture = fetchMenuMap();
final Map<int, MenuPlat> menuMap;
OrderCard({
super.key,
required this.order, required this.order,
required this.onStatusUpdate, required this.onStatusUpdate,
required this.onProcessPayment, required this.onProcessPayment,
required this.onDelete, required this.onDelete,
required this.onViewDetails, required this.onViewDetails,
required this.menuMap, // Require menuMap in constructor }) : super(key: key);
});
String _formatTime(DateTime dateTime) { String _formatTime(DateTime dateTime) {
return '${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}${dateTime.day.toString().padLeft(2, '0')}/${dateTime.month.toString().padLeft(2, '0')}/${dateTime.year} •1 personne'; return '${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}${dateTime.day.toString().padLeft(2, '0')}/${dateTime.month.toString().padLeft(2, '0')}/${dateTime.year} •1 personne';
@ -699,7 +661,7 @@ class OrderCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text( Text(
'${item.quantite}x ${item.getNomById(menuMap)}', '${item.quantite}x ${item.menuId}', // You might want to resolve menu name
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
color: Colors.black87, color: Colors.black87,
@ -942,9 +904,4 @@ class OrderItem {
commentaires: json['commentaires'], commentaires: json['commentaires'],
); );
} }
// Pass a Map of menus to get the name
String getNomById(Map<int, MenuPlat> menuMap) {
return menuMap[menuId]?.nom ?? 'Menu Item $menuId';
}
} }

Loading…
Cancel
Save