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:http/http.dart' as http;
import 'dart:convert';
import './PlatEdit_screen.dart';
class OrdersManagementScreen extends StatefulWidget {
const OrdersManagementScreen({super.key});
@ -17,18 +16,11 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
bool isLoading = true;
String? errorMessage;
final String baseUrl = 'https://restaurant.careeracademy.mg/api';
Map<int, MenuPlat>? menuMap;
@override
void initState() {
super.initState();
loadOrders();
loadMenuMap();
}
Future<void> loadMenuMap() async {
final loadedMenuMap = await fetchMenuMap();
menuMap = loadedMenuMap;
}
Future<void> loadOrders() async {
@ -529,7 +521,6 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
onProcessPayment: processPayment,
onDelete: deleteOrder,
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 {
final Order order;
final Function(Order, String, {String? modePaiement}) onStatusUpdate;
@ -568,19 +535,14 @@ class OrderCard extends StatelessWidget {
final Function(Order) onDelete;
final VoidCallback onViewDetails;
// Add menuMap field to have access to menu names
// late Future<Map<int, MenuPlat>> menuMapFuture = fetchMenuMap();
final Map<int, MenuPlat> menuMap;
OrderCard({
super.key,
const OrderCard({
Key? key,
required this.order,
required this.onStatusUpdate,
required this.onProcessPayment,
required this.onDelete,
required this.onViewDetails,
required this.menuMap, // Require menuMap in constructor
});
}) : super(key: key);
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';
@ -699,7 +661,7 @@ class OrderCard extends StatelessWidget {
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'${item.quantite}x ${item.getNomById(menuMap)}',
'${item.quantite}x ${item.menuId}', // You might want to resolve menu name
style: const TextStyle(
fontSize: 14,
color: Colors.black87,
@ -942,9 +904,4 @@ class OrderItem {
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