From 0930950f5fd3691c38933cd3eb839123623ee9bd Mon Sep 17 00:00:00 2001 From: Xor290 Date: Fri, 6 Mar 2026 12:35:45 +0100 Subject: [PATCH] add: new button in admin & cabine --- frontend-admin/src/api/api_admin.ts | 7 + .../src/screens/admin/OrderDetailScreen.tsx | 142 +++++++++++++++++- .../src/screens/cabine/OrdersScreen.tsx | 1 + 3 files changed, 147 insertions(+), 3 deletions(-) diff --git a/frontend-admin/src/api/api_admin.ts b/frontend-admin/src/api/api_admin.ts index baff19fc..249e3fbe 100644 --- a/frontend-admin/src/api/api_admin.ts +++ b/frontend-admin/src/api/api_admin.ts @@ -130,6 +130,13 @@ export const getCommandItems = async (commandId: number) => { }; }; +export const deleteCommand = async (commandId: number) => { + const { data } = await apiClient.delete( + `${V2}/admin/protected/orders/${commandId}`, + ); + return { success: true, message: data.message }; +}; + export const deleteCommandItem = async (commandId: number, itemId: number) => { const { data } = await apiClient.delete( `${V2}/admin/protected/orders/${commandId}/items/${itemId}`, diff --git a/frontend-admin/src/screens/admin/OrderDetailScreen.tsx b/frontend-admin/src/screens/admin/OrderDetailScreen.tsx index 603a090d..68530c12 100644 --- a/frontend-admin/src/screens/admin/OrderDetailScreen.tsx +++ b/frontend-admin/src/screens/admin/OrderDetailScreen.tsx @@ -9,7 +9,7 @@ import { StatusBar, Alert, } from "react-native"; -import { useRoute, type RouteProp } from "@react-navigation/native"; +import { useRoute, useNavigation, type RouteProp } from "@react-navigation/native"; import { Ionicons } from "@expo/vector-icons"; import MapView, { Marker, Polyline, PROVIDER_DEFAULT } from "react-native-maps"; import { spacing, fontSize, borderRadius } from "../../theme"; @@ -23,6 +23,7 @@ import { notifyClientToDescend, getDeliveryPersonDetails, deleteCommandItem, + deleteCommand, } from "../../api/api_admin"; import { geocodeAddress, calculateRoute } from "../../api/tomtom"; import type { RouteInfo, LatLng } from "../../api/tomtom"; @@ -41,10 +42,12 @@ const MAP_HEIGHT = 240; export default function OrderDetailScreen() { const { colors } = useTheme(); const route = useRoute(); + const navigation = useNavigation(); const { orderId } = route.params; const [command, setCommand] = useState(null); const [items, setItems] = useState([]); const [loading, setLoading] = useState(true); + const [showItemsModal, setShowItemsModal] = useState(false); // Map / tracking const mapRef = useRef(null); @@ -218,6 +221,28 @@ export default function OrderDetailScreen() { } }; + const handleDeleteCommand = () => { + Alert.alert( + "Supprimer la commande", + `Supprimer définitivement la commande #${orderId} ?`, + [ + { text: "Annuler", style: "cancel" }, + { + text: "Supprimer", + style: "destructive", + onPress: async () => { + try { + await deleteCommand(orderId); + navigation.goBack(); + } catch (e: any) { + showError("Erreur", e.message); + } + }, + }, + ], + ); + }; + const styles = useMemo( () => StyleSheet.create({ @@ -374,6 +399,37 @@ export default function OrderDetailScreen() { marginTop: spacing.xs, }, + // Items modal + itemsModalOverlay: { + flex: 1, + backgroundColor: "rgba(0,0,0,0.6)", + justifyContent: "flex-end", + }, + itemsModalContainer: { + backgroundColor: colors.bgPrimary, + borderTopLeftRadius: borderRadius.lg, + borderTopRightRadius: borderRadius.lg, + maxHeight: "75%", + padding: spacing.l, + }, + itemsModalHeader: { + flexDirection: "row", + justifyContent: "space-between", + alignItems: "center", + marginBottom: spacing.m, + }, + itemsModalTitle: { + fontSize: fontSize.lg, + fontWeight: "700", + color: colors.textWhite, + }, + itemsModalCard: { + backgroundColor: colors.bgCard, + borderRadius: borderRadius.sm, + padding: spacing.m, + marginBottom: spacing.s, + }, + // Fullscreen fullscreenContainer: { flex: 1, @@ -681,6 +737,12 @@ export default function OrderDetailScreen() { {/* Actions */} Actions +