import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../models/cab_order_model.dart'; import '../service/fire_store_utils.dart'; import '../themes/show_toast_dialog.dart'; class ComplainController extends GetxController { Rx order = CabOrderModel().obs; final Rx title = TextEditingController().obs; final Rx comment = TextEditingController().obs; final RxBool isLoading = false.obs; @override void onInit() { super.onInit(); final args = Get.arguments; if (args != null && args is Map && args['order'] is CabOrderModel) { order.value = args['order'] as CabOrderModel; getComplain(); } else { ShowToastDialog.showToast("Order data not found".tr()); Get.back(); } } Future getComplain() async { isLoading.value = true; try { final data = await FireStoreUtils.getRideComplainData(order.value.id ?? ''); if (data != null) { title.value.text = data['title'] ?? ''; comment.value.text = data['description'] ?? ''; } } catch (e) { ShowToastDialog.showToast("Failed to load complaint".tr()); } finally { isLoading.value = false; } } Future submitComplain() async { // Validation if (title.value.text.trim().isEmpty) { ShowToastDialog.showToast("Please enter complaint title".tr()); return; } if (comment.value.text.trim().isEmpty) { ShowToastDialog.showToast("Please enter complaint description".tr()); return; } isLoading.value = true; ShowToastDialog.showLoader("Please wait..."); try { // Check if complaint already exists bool exists = await FireStoreUtils.isRideComplainAdded(order.value.id ?? ''); if (!exists) { await FireStoreUtils.setRideComplain( orderId: order.value.id ?? '', title: title.value.text.trim(), description: comment.value.text.trim(), customerID: order.value.authorID ?? '', customerName: "${order.value.author?.firstName ?? ''} ${order.value.author?.lastName ?? ''}".trim(), driverID: order.value.driverId ?? '', driverName: "${order.value.driver?.firstName ?? ''} ${order.value.driver?.lastName ?? ''}".trim(), ); ShowToastDialog.closeLoader(); ShowToastDialog.showToast("Your complaint has been submitted to admin".tr()); Get.back(); } else { ShowToastDialog.closeLoader(); ShowToastDialog.showToast("Your complaint is already submitted".tr()); } } catch (e) { ShowToastDialog.closeLoader(); ShowToastDialog.showToast("Something went wrong, please try again".tr()); } finally { isLoading.value = false; } } @override void onClose() { title.value.dispose(); comment.value.dispose(); super.onClose(); } }