Merge branch 'master' of https://git.c4m.mg/Andrii/CARING_RESTORANT
This commit is contained in:
commit
6504243ba1
@ -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';
|
|
||||||
|
|
||||||
import 'commande_item_screen.dart';
|
import 'commande_item_screen.dart';
|
||||||
|
|
||||||
@ -19,18 +18,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 {
|
||||||
@ -536,7 +528,6 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
|
|||||||
onProcessPayment: processPayment,
|
onProcessPayment: processPayment,
|
||||||
onDelete: deleteOrder,
|
onDelete: deleteOrder,
|
||||||
onViewDetails: () => getOrderById(order.id),
|
onViewDetails: () => getOrderById(order.id),
|
||||||
menuMap: menuMap,
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
@ -544,30 +535,6 @@ class _OrdersManagementScreenState extends State<OrdersManagementScreen> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Récupère la liste des menus et la stocke dans un [Map]
|
|
||||||
/// où 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;
|
||||||
@ -575,19 +542,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';
|
||||||
@ -713,7 +675,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,
|
||||||
@ -960,9 +922,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…
Reference in New Issue
Block a user