INFRA: Set Up Project.
This commit is contained in:
95
lib/controllers/complain_controller.dart
Normal file
95
lib/controllers/complain_controller.dart
Normal file
@@ -0,0 +1,95 @@
|
||||
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<CabOrderModel> order = CabOrderModel().obs;
|
||||
|
||||
final Rx<TextEditingController> title = TextEditingController().obs;
|
||||
final Rx<TextEditingController> 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<void> 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<void> 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user