Untitled
unknown
dart
4 years ago
7.9 kB
6
Indexable
import 'dart:async';
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:iketfaa_delivery/App/Common/Models/Main/AppUser.dart';
import 'package:iketfaa_delivery/App/Common/Modules/Dashboard/controller/dashboard_controller.dart';
import 'package:iketfaa_delivery/App/Common/Services/AuthenticationService/Core/manager.dart';
import 'package:iketfaa_delivery/App/Common/Utilities/Constants/Strings/Backend.dart';
import 'package:iketfaa_delivery/App/Delivery/Backend/Add.dart';
import 'package:iketfaa_delivery/App/Delivery/Backend/Delete.dart';
import 'package:iketfaa_delivery/App/Delivery/Backend/Read.dart';
import 'package:iketfaa_delivery/App/Delivery/Backend/Storage.dart';
import 'package:iketfaa_delivery/App/Delivery/Backend/Update.dart';
import 'package:iketfaa_delivery/App/Delivery/Models/Main/ActiveOrder.dart';
import 'package:iketfaa_delivery/App/Delivery/Models/Main/AmoutCalculatorFactor.dart';
import 'package:iketfaa_delivery/App/Delivery/Models/Main/Cart.dart';
import 'package:iketfaa_delivery/App/Delivery/Models/Main/OrderAddress.dart';
import 'package:iketfaa_delivery/App/Delivery/Models/Main/PersonalAddress.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryCustomerCurrentOrder/view/delivery_customer_current_order_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryCustomerMyOrders/view/delivery_customer_completed_orders_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryDriverActiveOrder/controller/delivery_driver_active_order_controller.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryDriverActiveOrder/view/delivery_driver_active_order_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryDriverCompletedOrders/view/delivery_driver_completed_orders_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryHome/view/delivery_home_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryHub/view/delivery_required_login_page..dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryHub/view/dummy_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryUser/DeliveryCustomer/Profile/view/user_profile_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DeliveryUser/DeliveryDriver/DeliveryDriverProfile/view/driver_profile_view.dart';
import 'package:iketfaa_delivery/App/Delivery/Modules/DriverNewOrders/view/delivery_driver_new_order.dart';
class DeliveryHubController extends GetxController {
final AuthenticationManager authManager = Get.find();
final RxList<Widget> customerPages = <Widget>[].obs;
final RxList<Widget> driverPages = <Widget>[].obs;
final RxList<Widget> guestPages = <Widget>[].obs;
final DashboardController dashboardController = Get.find();
final AddToDatabase addToDatabase = new AddToDatabase();
final ReadDatabase readDatabase = new ReadDatabase();
final DeleteDatabase deleteDatabase = new DeleteDatabase();
final StorageFiles storageFiles = new StorageFiles();
final UpdateDatabase updateDatabase = new UpdateDatabase();
final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
var data = Get.arguments;
final GetStorage globalStorage = GetStorage();
RxInt currentPos = 0.obs;
StreamSubscription<Position>? _positionStreamSubscription;
final GeolocatorPlatform _geolocatorPlatform = GeolocatorPlatform.instance;
ActiveOrder activeOrder = ActiveOrder();
Rx<PersonalAddress> currentPersonalAddress = PersonalAddress().obs;
Rx<Cart> cart = Cart().obs;
AmonutCalculatorFactor amoutCalculatorFactor = AmonutCalculatorFactor();
RxInt cartLength = 0.obs;
int mainOrderIndex = 0;
RxInt currentPage = 0.obs;
RxBool isChecked = false.obs;
LatLng? pos;
void clearCart() {
cart.value.orders!.clear();
cartLength.value = 0;
cart.refresh();
}
void removeItem(int index) {
cart.value.orders!.removeAt(index);
cartLength.value -= 1;
cart.refresh();
}
@override
Future<void> onInit() async {
cart.value.orders = [];
if (authManager.isLogged.value) {
customerPages.value = [
DeliveryHomeView(),
DeliveryCustomerCurrentOrderView(),
DummyView(),
DeliveryCustomerCompletedOrdersView(),
UserProfileView()
];
driverPages.value = [
DeliveryDriverActiveOrderView(),
DeliveryDrierNewOrderView(),
DummyView(),
DeliveryDriverCompletedOrdersView(),
DriverProfileView()
];
} else
guestPages.value = [
DeliveryHomeView(),
DeliveryRequiredLoginPage(),
DeliveryRequiredLoginPage(),
DeliveryRequiredLoginPage(),
DeliveryRequiredLoginPage()
];
super.onInit();
}
@override
Future<void> onReady() async {
if (dashboardController.deliveryCart.value.orderID != null) {
cart.value = dashboardController.deliveryCart.value;
}
_toggleListening();
super.onReady();
}
void openDrawer() {
scaffoldKey.currentState?.openDrawer();
}
void closeDrawer() {
scaffoldKey.currentState?.openEndDrawer();
}
void _toggleListening() {
if (_positionStreamSubscription == null) {
final positionStream = _geolocatorPlatform.getPositionStream(
locationSettings: LocationSettings(
timeLimit: Duration(seconds: 5),
accuracy: LocationAccuracy.bestForNavigation));
_positionStreamSubscription = positionStream.handleError((error) {
_positionStreamSubscription?.cancel();
_positionStreamSubscription = null;
}).listen((position) {
if (authManager.appUser.value.locationData == null) {
final DeliveryDriverActiveOrderController
deliveryDriverActiveOrderController =
Get.put(DeliveryDriverActiveOrderController());
if (deliveryDriverActiveOrderController.driverActiveOrder.orderID !=
null) {
OrderAddress address = OrderAddress(
geoPoint: GeoPoint(position.latitude, position.longitude),
);
Map<String, dynamic> values = {
ADDRESS_FIELD: address.toMap(),
};
updateDatabase.updateActiveOrderOfferLocation(
deliveryDriverActiveOrderController.driverActiveOrder.offerID!,
values);
}
} else if (authManager
.appUser.value.locationData!.localPosition!.latitude !=
position.latitude) {
final DeliveryDriverActiveOrderController
deliveryDriverActiveOrderController =
Get.put(DeliveryDriverActiveOrderController());
if (deliveryDriverActiveOrderController.driverActiveOrder.orderID !=
null) {
OrderAddress address = OrderAddress(
geoPoint: GeoPoint(position.latitude, position.longitude),
);
Map<String, dynamic> values = {
ADDRESS_FIELD: address.toMap(),
};
updateDatabase.updateActiveOrderOfferLocation(
deliveryDriverActiveOrderController.driverActiveOrder.offerID!,
values);
}
} else {}
});
_positionStreamSubscription?.pause();
}
if (_positionStreamSubscription == null) {
return;
}
String statusDisplayValue;
if (_positionStreamSubscription!.isPaused) {
_positionStreamSubscription!.resume();
statusDisplayValue = 'resumed';
} else {
_positionStreamSubscription!.pause();
statusDisplayValue = 'paused';
}
print(statusDisplayValue);
}
}
Editor is loading...