Untitled
unknown
dart
5 months ago
16 kB
4
Indexable
import 'dart:convert'; import 'package:get/get.dart'; import 'package:takamol_user/app/enums/enums.dart'; import 'package:takamol_user/app/modules/bus_shuttle/modules/bus_active_trip/controllers/bus_active_trip_controller.dart'; import 'package:takamol_user/app/modules/home/controllers/home_controller.dart'; import 'package:takamol_user/app/modules/hospitality/current_order/controllers/hospitality_current_order_controller.dart'; import 'package:takamol_user/app/modules/hospitality/order_history/controller/order_history_controller.dart'; import 'package:takamol_user/app/modules/hospitality/restaurant/kitchen/controllers/kitchen_controller.dart'; import 'package:takamol_user/app/modules/hospitality/restaurant/orders/controllers/orders_controller.dart'; import 'package:takamol_user/app/modules/notifications/controllers/notifications_controller.dart'; import 'package:takamol_user/app/modules/user_controller.dart'; import 'package:takamol_user/app/modules/vip/modules/vip_active_trip/controllers/vip_active_trip_controller.dart'; import 'package:takamol_user/app/modules/vip/widgets/rate_vip_trip_bottom_sheet/view/rate_vip_trip_view.dart'; import 'package:takamol_user/app/modules/visitors/calendar/controllers/calendar_controller.dart'; import 'package:takamol_user/app/modules/visitors/requests/my_requests_visits/controllers/my_requests_controller.dart'; import 'package:takamol_user/app/routes/app_pages.dart'; import 'package:takamol_user/app/server/models/lat_lng_pair.dart'; import 'package:takamol_user/main.dart'; import '../../../resources/strings_generated.dart'; import '../../data/models/signalr_notification.dart'; import '../../modules/bus_shuttle/modules/request_bus_trip/controllers/request_bus_trip_controller.dart'; import '../../modules/bus_shuttle/widgets/rate_bus_trip_bottom_sheet/view/rate_bus_trip_view.dart'; import '../../modules/drawer/view/hidden_drawer.dart'; import '../../modules/home/bindings/home_binding.dart'; import '../../utils/functions/app_functions.dart'; import '../models/users.dart'; import 'signalr_client.dart'; class EntityHub { static SignalRClient? signalR; static Future init() async { final AppFunctions appFunctions = AppFunctions(); // Channel signalR = SignalRClient("notificationHub"); // Start // Close //signalR.connection.onclose((exception) => output(exception)); if (signalR != null) { await signalR!.start(); signalR!.on( "ReceiveMessage", (data) { Get.log(data.toString()); // 14 => location // 17 boarding // 18 getoff if (data != null && data.isNotEmpty && data.first != null) { // Set notification SignalRNotification signalRNotification = SignalRNotification.fromJson(data.first); // Log // if (kDebugMode) { // Get.log(signalRNotification.toJson().toString()); // } // Get current route String currentRoute = Get.currentRoute.toString(); // Check Auth if (currentUser is User) { // BusTripDriverUpdateGeo if (signalRNotification.notificationType == 14) { if (currentRoute.contains('RequestBusTripView'.toString())) { final RequestBusTripController requestBusTripController = Get.find(); requestBusTripController.requestBusTripMethods.getOnlineBuses( isEvent: requestBusTripController.isEventsOnly.value); } else if (currentRoute .contains('BusActiveTripView'.toString())) { final BusActiveTripController busActiveTripController = Get.find(); busActiveTripController.busActiveTripMethods .getCurrentBusTrips(withLoading: false, addMarker: true); } else if (currentRoute.contains('VipActiveTripView')) { final VipActiveTripController vipController = Get.find(); Map<String, dynamic> jsonMap = jsonDecode(signalRNotification.messageParameters ?? "{}"); double? latitude = jsonMap['Latitude']; double? longitude = jsonMap['Longitude']; String? direction = jsonMap['Direction']; LatLngPair p1 = LatLngPair(lat: latitude, lng: longitude); vipController.methods.addUpdateDriverMarker( driverId: signalRNotification.userId ?? '', p1: p1, direction: direction); } // Refresh } // BusTripHeadingDestination else if (signalRNotification.notificationType == 17) { if (currentRoute.contains('BusActiveTripView'.toString())) { final BusActiveTripController busActiveTripController = Get.find(); busActiveTripController.busActiveTripMethods .getCurrentBusTrips(withLoading: false, addMarker: true); } } // BusTripArrivedDestination else if (signalRNotification.notificationType == 18) { if (currentRoute.contains('BusActiveTripView'.toString())) { final BusActiveTripController busActiveTripController = Get.find(); if (signalRNotification.transId != null) { bool isEventTrip = busActiveTripController.busTrip.id == signalRNotification.transId; appFunctions.startNotiSound(); AppFunctions().openAppBottomSheet( title: isEventTrip ? AppStrings.eventTrip : AppStrings.busOrder, body: RateBusTripView( tripId: signalRNotification.transId!, goToHome: true, ), ); } else { Get.offAll( () => const HiddenDrawerScreen(), binding: HomeBinding(), ); } } } // on going else if (signalRNotification.notificationType == 28) { if (currentRoute.contains('VipActiveTripView'.toString())) { final VipActiveTripController vipController = Get.find(); vipController.methods.getCurrentTrip(withLoading: false); appFunctions.startNotiSound(); appFunctions.showGetSnackbar( message: AppStrings.driverVipOnGoing, duration: 6); } } // arrived else if (signalRNotification.notificationType == 29) { if (currentRoute.contains('VipActiveTripView'.toString())) { final VipActiveTripController vipController = Get.find(); vipController.methods.getCurrentTrip(withLoading: false); appFunctions.startNotiSound(); appFunctions.showGetSnackbar( message: AppStrings.driverVipArrived, duration: 6); } } // trip start else if (signalRNotification.notificationType == 30) { if (currentRoute.contains('VipActiveTripView'.toString())) { final VipActiveTripController vipController = Get.find(); appFunctions.startNotiSound(); vipController.methods.getCurrentTrip(withLoading: false); } } // trip finished else if (signalRNotification.notificationType == 31) { Get.find<HomeController>().getStatisticsOrders('22'); if (signalRNotification.transId != null) { appFunctions.startNotiSound(); AppFunctions().openAppBottomSheet( title: AppStrings.privateCar, body: RateVipTripView( tripId: signalRNotification.transId!, goToHome: currentRoute.contains('VipActiveTripView'.toString()), ), ); } else { Get.offAll( () => const HiddenDrawerScreen(), binding: HomeBinding(), ); } } // new driver assigned else if (signalRNotification.notificationType == 33) { if (currentRoute.contains('VipActiveTripView'.toString())) { final VipActiveTripController vipController = Get.find(); appFunctions.startNotiSound(); vipController.methods.getCurrentTrip(withLoading: false); appFunctions.showGetSnackbar( message: AppStrings.assignedVipDriver, duration: 6); } } else if (signalRNotification.notificationType == 53) { if (!currentRoute.contains(Routes.ORDER_HISTORY)) { Get.put(OrderHistoryController()); } Get.find<OrderHistoryController>().rateOrder( orderId: signalRNotification.transId!, orderNumber: 0, ); } // Admin Accept Cancel Trip else if (signalRNotification.notificationType == 35) { if (currentRoute.contains('VipActiveTripView'.toString())) { Get.offAll( () => const HiddenDrawerScreen(), binding: HomeBinding(), ); } else { if (Get.isRegistered<HomeController>()) { final HomeController hc = Get.find(); hc.removeVipOrder(); } } appFunctions.startNotiSound(); appFunctions.showGetSnackbar( message: AppStrings.vipTripCanceledByDriver, duration: 6); } // Admin Accept Cancel Trip else if (signalRNotification.notificationType == 38) { if (currentRoute.contains('VipActiveTripView'.toString())) { Get.offAll( () => const HiddenDrawerScreen(), binding: HomeBinding(), ); } else { if (Get.isRegistered<HomeController>()) { final HomeController hc = Get.find(); hc.removeVipOrder(); } } appFunctions.startNotiSound(); appFunctions.showGetSnackbar( message: AppStrings.orderCanceledByAdmin, duration: 6); } // Users else if (signalRNotification.notificationType == 21) { // Update current user data if (signalRNotification.toUserId == currentUser!.id) { Get.find<UserController>().getAndSetUserData(); } } // Notifications else if (signalRNotification.notificationType == 22) { // Update notifications if (signalRNotification.toUserId == currentUser!.id) { Get.find<NotificationsController>() .getNotifications(replace: true); } } // Restaurants else if (signalRNotification.notificationType == 23) { if (currentRoute.contains('kitchen')) { Get.find<KitchenController>().getCategories(replace: true); Get.find<KitchenController>().getItems(replace: true); } } // RestaurantItemsCategories else if (signalRNotification.notificationType == 24) { if (currentRoute.contains(Routes.KITCHEN)) { Get.find<KitchenController>().getCategories(replace: true); } } // RestaurantItems else if (signalRNotification.notificationType == 25) { if (currentRoute.contains(Routes.KITCHEN)) { Get.find<KitchenController>().getItems(replace: true); } } // RestaurantOrders else if (signalRNotification.notificationType == 52) { // Get.find<HomeController>().getStatisticsOrders('11'); print(Get.find<HospitalityCurrentOrderController>() .restaurantOrder .id); print(signalRNotification.transId); if ((currentRoute.contains(Routes.HOSPITALITY_CURRENT_ORDER) || currentRoute.contains("HospitalityCurrentOrder")) && Get.find<HospitalityCurrentOrderController>() .restaurantOrder .id == signalRNotification.transId) { Get.find<HospitalityCurrentOrderController>() .updateOrderData(); } } else if (signalRNotification.notificationType == 26) { // Home Get.find<HomeController>().getStatisticsOrders('11'); // Get.find<HomeController>().getLatestOrder(); // Order history if (currentRoute.contains(Routes.ORDER_HISTORY)) { Get.find<OrderHistoryController>().getAllOrders(); Get.find<OrdersController>().getOrders(replace: true); } // Rate order // if (signalRNotification.message == "RequestRate" && // signalRNotification.transId != null && // signalRNotification.messageParameters != null && // signalRNotification.toUserId == currentUser?.id) { // if (!currentRoute.contains(Routes.ORDER_HISTORY)) { // Get.put(OrderHistoryController()); // } // Get.find<OrderHistoryController>().rateOrder( // orderId: signalRNotification.transId!, // orderNumber: // int.parse(signalRNotification.messageParameters!), // ); // } // Current order if ((currentRoute.contains(Routes.HOSPITALITY_CURRENT_ORDER) || currentRoute.contains("HospitalityCurrentOrder")) && Get.find<HospitalityCurrentOrderController>() .restaurantOrder .id == signalRNotification.transId) { Get.find<HospitalityCurrentOrderController>() .updateOrderData(); } // Teaboy if (currentUser?.type == UserType.restaurantWaiter) { Get.find<HomeController>().getAllOrders(); Get.find<HomeController>() .getStatusOrders(replace: true, getStatusByIndex: true); } } // Requests else if (signalRNotification.notificationType == 27) { if (signalRNotification.toUserId == currentUser!.id) { Get.find<HomeController>().getRequests(replace: true); Get.find<CalendarController>().getRequests(replace: true); Get.find<MyRequestsController>().getRequests(replace: true); } } } } }, ); } } static void startSignalRService() async { if (signalR != null && currentUser?.id != null) { await signalR!.start(); } } static void stopSignalRService() async { if (signalR != null && currentUser?.id != null) { await signalR!.stop(); } } }
Editor is loading...
Leave a Comment