From fa331c7917a0d21937c414a4d7d77a6b93a6383c Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Mon, 9 Dec 2024 17:12:09 +0300 Subject: [PATCH] open request for engineer fixies --- lib/dashboard_latest/dashboard_provider.dart | 42 +++++++++---- lib/dashboard_latest/dashboard_view.dart | 9 ++- .../widgets/request_category_fragment.dart | 2 +- .../utilities/service_request_utils.dart | 60 ++++++++++++++----- .../service_request_bottomsheet.dart | 11 ++-- 5 files changed, 89 insertions(+), 35 deletions(-) diff --git a/lib/dashboard_latest/dashboard_provider.dart b/lib/dashboard_latest/dashboard_provider.dart index eb2cb0f1..03d5527c 100644 --- a/lib/dashboard_latest/dashboard_provider.dart +++ b/lib/dashboard_latest/dashboard_provider.dart @@ -85,7 +85,7 @@ class DashBoardProvider extends ChangeNotifier { setTabs(userType: userType, context: context); getDashBoardCount(usersType: userType); resetRequestDataList(); - getRequestDetail(usersType: userType, status: tabs[currentListIndex].tag); + getRequestDetail(usersType: userType, status: tabs[currentListIndex].tag,tabId:tabs[currentListIndex].id); // notifyListeners(); } @@ -184,7 +184,7 @@ class DashBoardProvider extends ChangeNotifier { getRequestDetail(showLoader: showLoader, usersType: usersType, status: 4); } - Future getRequestDetail({bool showLoader = true, required UsersTypes usersType, int? status, bool isHighPriority = false, bool isOverdue = false, String? date}) async { + Future getRequestDetail({bool showLoader = true, required UsersTypes usersType, int? status, bool isHighPriority = false, bool isOverdue = false, String? date,int? tabId}) async { if (showLoader) { isDetailLoading = showLoader; notifyListeners(); @@ -193,12 +193,21 @@ class DashBoardProvider extends ChangeNotifier { Response response; String url = ''; if (usersType == UsersTypes.engineer) { + // Todo need to check pagination for not assigned task @waseem. + + print('status i got is $status'); + print('id i got is $tabId'); //these checks are to call different apis for dashboard for engineer... if (status == 0) { url = URLs.engineerDashboardUpcoming; - } else if (status == 1) { + } + else if (status == 1&&tabId==1) { url = URLs.engineerDashboardNotAssignDetails; - } else { + } + else if (status == 1&&tabId==2) { + url = URLs.engineerDashboardDetailsUrl; + } + else { url = URLs.engineerDashboardDetailsUrl; } } else { @@ -299,22 +308,29 @@ class DashBoardProvider extends ChangeNotifier { class CategoryTabs { String label; int tag; + int id; - CategoryTabs(this.label, this.tag); + CategoryTabs({ + required this.label, + required this.tag, + required this.id, + }); static List getTabs({required UsersTypes userType, required BuildContext context}) { List tabs = []; if (userType == UsersTypes.engineer) { - tabs.add(CategoryTabs('Upcoming', 0)); - tabs.add(CategoryTabs('Open', 1)); - tabs.add(CategoryTabs('In Progress', 2)); - tabs.add(CategoryTabs('Completed', 3)); + tabs.add(CategoryTabs(label: 'Upcoming',tag: 0,id: 0)); + // tabs.add(CategoryTabs('Open', 1)); + tabs.add(CategoryTabs(label: 'UnAssigned Open',tag: 1,id: 1)); + tabs.add(CategoryTabs(label: 'Assigned Open',tag: 1,id: 2)); + tabs.add(CategoryTabs(label: 'In Progress',tag: 2,id: 3)); + tabs.add(CategoryTabs(label: 'Completed',tag: 3,id: 4)); return tabs; } - tabs.add(CategoryTabs('Upcoming', 3)); - tabs.add(CategoryTabs('Open Request', 1)); - tabs.add(CategoryTabs('In Progress', 2)); - tabs.add(CategoryTabs('Canceled', 6)); + tabs.add(CategoryTabs(label: 'Upcoming',tag: 3,id: 1)); + tabs.add(CategoryTabs(label: 'Open Request',tag: 1,id: 2)); + tabs.add(CategoryTabs(label: 'In Progress',tag: 2,id: 3)); + tabs.add(CategoryTabs(label: 'Canceled',tag: 6,id: 4)); return tabs; } } diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index ce8c6f23..881b0cda 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -49,10 +49,11 @@ class _DashboardViewState extends State { } void getRequests() { - _dashBoardProvider.setTabs(userType:userProvider.user!.type!,context: context); + _dashBoardProvider.setTabs(userType: userProvider.user!.type!, context: context); _dashBoardProvider.getDashBoardCount(usersType: userProvider.user!.type!); _dashBoardProvider.resetRequestDataList(); - _dashBoardProvider.getRequestDetail(usersType: userProvider.user!.type!, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag); + _dashBoardProvider.getRequestDetail( + usersType: userProvider.user!.type!, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag, tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].id); } void getInitialData() { @@ -99,8 +100,10 @@ class _DashboardViewState extends State { _scrollController = ScrollController(); _scrollController.addListener(() async { if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent && !_dashBoardProvider.isDetailLoading) { + print('handle scroll called..'); _dashBoardProvider.pageNum = _dashBoardProvider.pageNum + 1; - _dashBoardProvider.getRequestDetail(usersType: user.type!, showLoader: false, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag); + _dashBoardProvider.getRequestDetail( + usersType: user.type!, showLoader: false, status: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].tag, tabId: _dashBoardProvider.tabs[_dashBoardProvider.currentListIndex].id); } }); } diff --git a/lib/dashboard_latest/widgets/request_category_fragment.dart b/lib/dashboard_latest/widgets/request_category_fragment.dart index 83179357..9c6d4bf5 100644 --- a/lib/dashboard_latest/widgets/request_category_fragment.dart +++ b/lib/dashboard_latest/widgets/request_category_fragment.dart @@ -86,7 +86,7 @@ class RequestCategoryFragment extends StatelessWidget { onPressed: () async { requestsProvider.currentListIndex = index; requestsProvider.resetRequestDataList(); - requestsProvider.getRequestDetail(usersType: userType ?? UsersTypes.normal_user, showLoader: true, status: tabs[index].tag); + requestsProvider.getRequestDetail(usersType: userType ?? UsersTypes.normal_user, showLoader: true, status: tabs[index].tag, tabId: tabs[index].id); }, ); }, diff --git a/lib/service_request_latest/utilities/service_request_utils.dart b/lib/service_request_latest/utilities/service_request_utils.dart index 62c588bf..77f96983 100644 --- a/lib/service_request_latest/utilities/service_request_utils.dart +++ b/lib/service_request_latest/utilities/service_request_utils.dart @@ -10,6 +10,7 @@ import 'package:fluttertoast/fluttertoast.dart'; import 'package:google_api_availability/google_api_availability.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/notification/notification_manger.dart'; +import 'package:test_sa/controllers/providers/api/service_requests_provider.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; @@ -115,22 +116,53 @@ class ServiceRequestUtils { //add permission for andriod.. //add string in info.plist for ios... //create event.. - static void addEventToCalendar({required BuildContext context, required DateTime start, required DateTime end,required String title}) async { + static void addEventToCalendar({required BuildContext context, required DateTime start, required DateTime end,required String title,required int ? requestId}) async { + + var currentLocation = getLocation(await FlutterTimezone.getLocalTimezone()); - setLocalLocation(currentLocation); - await Future.delayed(const Duration(seconds: 2)); - TZDateTime startDate = TZDateTime.from(start, currentLocation); - TZDateTime endDate = TZDateTime.from(end, currentLocation); - var eventToCreate = Event( - "1", - title: title, - description: "You have reminder for Visit", - start: startDate, - end: endDate, - ); - print('title i got is ${eventToCreate.title}'); - await DeviceCalendarPlugin().createOrUpdateEvent(eventToCreate); + final calendarsResult = await DeviceCalendarPlugin().retrieveCalendars(); + calendarsResult.data?.forEach((element){ + print('calander element are ${element.toJson()}'); + }); + if (calendarsResult.data?.isNotEmpty ?? false) { + setLocalLocation(currentLocation); + await Future.delayed(const Duration(seconds: 2)); + TZDateTime startDate = TZDateTime.from(start, currentLocation); + TZDateTime endDate = TZDateTime.from(end, currentLocation); + final calendarId = calendarsResult.data!.first.id; // Use the first calendar + print('calander id i got is ${calendarId}'); + var eventToCreate = Event( + calendarId, + eventId: requestId.toString(), + title: title, + description: "You have a reminder for a visit", + start: startDate, + end: endDate, + ); + print('calander event to add is ${eventToCreate.toJson()}'); + final response = await DeviceCalendarPlugin().createOrUpdateEvent(eventToCreate); + print("Response of adding calendar is ${response?.data}"); + } else { + print("No calendars available on the device."); + // "No calendars available on the device.".showToast(); + } + // setLocalLocation(currentLocation); + // await Future.delayed(const Duration(seconds: 2)); + // TZDateTime startDate = TZDateTime.from(start, currentLocation); + // TZDateTime endDate = TZDateTime.from(end, currentLocation); + // var eventToCreate = Event( + // '0', + // // eventId:requestId.toString(), + // title: title, + // description: "You have reminder for Visit", + // start: startDate, + // end: endDate, + // ); + // print('event to add i got is ${eventToCreate.toJson()}'); + // final response = await DeviceCalendarPlugin().createOrUpdateEvent(eventToCreate); + // print("response of adding calander is ${response?.data}"); + // } // Map messageData = message.data; diff --git a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart index ce023edc..520f03a9 100644 --- a/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart +++ b/lib/service_request_latest/views/components/bottom_sheets/service_request_bottomsheet.dart @@ -306,8 +306,6 @@ class ServiceRequestBottomSheet { initialVisitReminderBottomSheet(context: context); } - - // }, ), @@ -421,7 +419,12 @@ class ServiceRequestBottomSheet { DateTime updatedDateTime = visitDateTime.subtract(Duration(minutes: selectedReminderTime.value ?? 0)); if (updatedDateTime.isAfter(DateTime.now())) { ServiceRequestUtils.scheduleNotification(context: context, scheduleDateTime: updatedDateTime); - ServiceRequestUtils.addEventToCalendar(context: context, start: updatedDateTime, end: visitDateTime, title: context.translation.needAVisit); + ServiceRequestUtils.addEventToCalendar( + context: context, + start: updatedDateTime, + end: visitDateTime, + title: context.translation.needAVisit, + requestId: requestDetailProvider.currentWorkOrder!.data!.requestId!); } } catch (e) { log('error $e'); @@ -1021,7 +1024,7 @@ class ServiceRequestBottomSheet { workOrderId: requestDetailProvider.currentWorkOrder!.data!.requestId!, signatureNurse: nurseSignature, ); - requestDetailProvider.nurseConfirm(); + requestDetailProvider.nurseConfirm(); if (requestDetailProvider.currentWorkOrder!.data!.requestId != null) { requestDetailProvider.getWorkOrderById(id: requestDetailProvider.currentWorkOrder!.data!.requestId!); }