import 'dart:convert'; import 'package:SEFER/constant/colors.dart'; import 'package:SEFER/constant/style.dart'; import 'package:SEFER/controller/home/map_passenger_controller.dart'; import 'package:SEFER/views/widgets/elevated_btn.dart'; import 'package:SEFER/views/widgets/mycircular.dart'; import 'package:flutter/material.dart'; import 'package:flutter_font_icons/flutter_font_icons.dart'; import 'package:get/get.dart'; import 'package:intl/intl.dart'; import '../../constant/links.dart'; import '../functions/crud.dart'; class VipWaittingPage extends StatelessWidget { const VipWaittingPage({super.key}); @override Widget build(BuildContext context) { Get.put(VipOrderController()); return Scaffold( appBar: AppBar( title: Text("Waiting VIP".tr), ), body: GetBuilder(builder: (vipOrderController) { var data = vipOrderController.tripData[0]; // Function to get the localized status string String getLocalizedStatus(String status) { switch (status) { case 'pending': return 'pending'.tr; case 'accepted': return 'accepted'.tr; case 'rejected': return 'rejected'.tr; default: return 'unknown'.tr; // Fallback for unexpected statuses } } // Function to get the appropriate status color Color getStatusColor(String status) { switch (status) { case 'pending': return Colors.yellow; case 'accepted': return Colors.green; case 'rejected': return Colors.red; default: return Colors.grey; // Default color for unknown statuses } } return vipOrderController.isLoading ? const MyCircularProgressIndicator() : Card( elevation: 4, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), margin: const EdgeInsets.all(16), child: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "${'Driver Name:'.tr} ${data['name']}", style: AppStyle.title, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Column( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "${'Car Plate:'.tr} ${data['car_plate']}", style: AppStyle.title, ), Text( "${'Car Make:'.tr} ${data['make']}", style: AppStyle.title, ), Text( "${'Car Model:'.tr} ${data['model']}", style: AppStyle.title, ), Text( "${"Car Color:".tr} ${data['color']}", style: AppStyle.title, ), ], ), SizedBox( width: 100, height: 100, child: Icon(Fontisto.car, size: 80, color: Color(int.parse(data['color_hex'] .replaceFirst('#', '0xff'))))), ], ), // Text( // "${'Driver Phone:'.tr} ${data['phone']}", // style: AppStyle.title, // ), const SizedBox(height: 12), const Divider(), const SizedBox(height: 12), Container( color: getStatusColor( data['status']), // Correctly assigns a Color child: Padding( padding: const EdgeInsets.all(8.0), child: Text( "${'Trip Status:'.tr} ${getLocalizedStatus(data['status'])}", // Uses the String function style: const TextStyle( fontSize: 16, ), ), ), ), Text( "${'Scheduled Time:'.tr} ${DateFormat('yyyy-MM-dd hh:mm a').format(DateTime.parse(data['timeSelected']))}", style: const TextStyle(fontSize: 16), ), const SizedBox(height: 12), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ MyElevatedButton( title: "Cancel Trip".tr, kolor: AppColor.redColor, onPressed: () { Get.find().cancelVip( data['token'].toString(), data['id'].toString(), ); }, ), // MyElevatedButton( // title: "Accept Trip".tr, // kolor: AppColor.greenColor, // onPressed: () { // // Add your cancel trip logic here // }, // ), ], ), ], ), ), ); }), ); } } class VipOrderController extends GetxController { bool isLoading = false; final arguments = Get.arguments; late String body; List tripData = []; fetchOrder() async { isLoading = true; update(); var res = await CRUD().get(link: AppLink.getMishwari, payload: { 'driverId': Get.find().driverIdVip.toString(), }); isLoading = false; update(); if (res != 'failure') { tripData = jsonDecode(res)['message']; update(); } } @override void onInit() async { fetchOrder(); super.onInit(); } }