diff --git a/lib/controllers/notification/firebase_notification_manger.dart b/lib/controllers/notification/firebase_notification_manger.dart index 4d7cc0d2..4e2ec5c1 100644 --- a/lib/controllers/notification/firebase_notification_manger.dart +++ b/lib/controllers/notification/firebase_notification_manger.dart @@ -163,11 +163,14 @@ class FirebaseNotificationManger { }); FirebaseMessaging.onMessage.listen((RemoteMessage message) { + print('notification i got is ${message.toMap()}'); if (Platform.isAndroid) { - NotificationManger.showNotification( - title: message.notification?.title ?? "", subtext: message.notification?.body ?? "", hashcode: int.tryParse("1234" ?? "") ?? 1, payload: json.encode(message.data), context: context); - } + if(message.data["notificationType"]!='NurseConfirmArrive'){ + NotificationManger.showNotification( + title: message.notification?.title ?? "", subtext: message.notification?.body ?? "", hashcode: int.tryParse("1234" ?? "") ?? 1, payload: json.encode(message.data), context: context); + } + } return; }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) { diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index da938a3a..a4b82bd8 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -115,9 +115,10 @@ class AllRequestsProvider extends ChangeNotifier { SearchAllRequestsModel? searchedModel; Future getAllRequests(BuildContext context, {int? typeTransaction, SearchAllRequestsModel? search}) async { + print('loading value is $isAllLoading'); if (isAllLoading == true) return -2; isAllLoading = true; - if (_allRequestsAndCount == null) notifyListeners(); + if (_allRequestsAndCount == null) notifyListeners(); Response response; try { if (search != null) { diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index ce8c6f23..6457ec2b 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -70,6 +70,7 @@ class _DashboardViewState extends State { if (isFCM) { FirebaseNotificationManger.initialized(context); NotificationManger.initialisation((notificationDetails) { + print('i am called with notification details ${notificationDetails.toString()}'); FirebaseNotificationManger.handleMessage(context, json.decode(notificationDetails.payload!)); }, (id, title, body, payload) async {}); diff --git a/lib/models/all_requests_and_count_model.dart b/lib/models/all_requests_and_count_model.dart index 64715e46..06b17864 100644 --- a/lib/models/all_requests_and_count_model.dart +++ b/lib/models/all_requests_and_count_model.dart @@ -121,6 +121,7 @@ class RequestsDetails { String? date; String? siteTransferFrom; String? siteTransferTo; + int? transactionType; RequestsDetails({ this.id, @@ -144,6 +145,7 @@ class RequestsDetails { this.siteTransferFrom, this.siteTransferTo, this.date, + this.transactionType }); RequestsDetails.fromJson(Map json) { @@ -168,6 +170,7 @@ class RequestsDetails { date = json['date']; siteTransferFrom = json['siteTransferFrom']; siteTransferTo = json['siteTransferTo']; + transactionType = json['transactionType']; } Map toJson() { @@ -193,6 +196,7 @@ class RequestsDetails { data['date'] = date; data['siteTransferFrom'] = siteTransferFrom; data['siteTransferTo'] = siteTransferTo; + data['transactionType'] = transactionType; return data; } } diff --git a/lib/models/new_models/work_order_detail_model.dart b/lib/models/new_models/work_order_detail_model.dart index 63e8cca7..dd8dc6fb 100644 --- a/lib/models/new_models/work_order_detail_model.dart +++ b/lib/models/new_models/work_order_detail_model.dart @@ -535,6 +535,8 @@ class WorkOrderHistory { WorkOrderHistory({ required this.id, required this.workorderStatus, + this.assetVerificationType, + this.photoVerfication, required this.activityStatus, required this.date, required this.timeDifference, @@ -549,9 +551,11 @@ class WorkOrderHistory { int? id; Lookup? workorderStatus; + Lookup? assetVerificationType; dynamic activityStatus; DateTime? date; String timeDifference =''; + String? photoVerfication; WorkOrderAssignedEmployee? user; Lookup? step; DateTime? fixRemotlyStartTime; @@ -564,7 +568,9 @@ class WorkOrderHistory { return WorkOrderHistory( id: json["id"], workorderStatus: json["workorderStatus"] == null ? null : Lookup.fromJson(json["workorderStatus"]), + assetVerificationType: json["assetVerificationType"] == null ? null : Lookup.fromJson(json["assetVerificationType"]), activityStatus: json["activityStatus"], + photoVerfication: json["photoVerfication"], date: DateTime.tryParse(json["date"] ?? ""), user: json["user"] == null ? null : WorkOrderAssignedEmployee.fromJson(json["user"]), step: json["step"] == null ? null : Lookup.fromJson(json["step"]), @@ -580,6 +586,8 @@ class WorkOrderHistory { Map toJson() => { "id": id, "workorderStatus": workorderStatus?.toJson(), + "assetVerificationType": assetVerificationType?.toJson(), + "photoVerfication": photoVerfication, "activityStatus": activityStatus, "date": date?.toIso8601String(), "user": user?.toJson(), diff --git a/lib/new_views/pages/land_page/requests/service_request_item_view.dart b/lib/new_views/pages/land_page/requests/service_request_item_view.dart index 95e7fc09..42590f0b 100644 --- a/lib/new_views/pages/land_page/requests/service_request_item_view.dart +++ b/lib/new_views/pages/land_page/requests/service_request_item_view.dart @@ -56,7 +56,7 @@ class ServiceRequestItemView extends StatelessWidget { // '${context.translation.assetNumber}: ${request.assetNo}'.bodyText(context), // '${context.translation.requestType}: ${requestData!.requestTypeName}'.bodyText(context), '${context.translation.requestNo}: ${requestData!.requestNo}'.bodyText(context), - if (requestData?.statusName == 'Cancelled') ...[ + if (requestData?.statusName == 'Canceled') ...[ '${context.translation.rejectionReason}: ${requestData!.rejectReason}'.bodyText(context), ], 8.height, diff --git a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart index 5050a9c8..783671aa 100644 --- a/lib/new_views/pages/land_page/widgets/request_item_view_list.dart +++ b/lib/new_views/pages/land_page/widgets/request_item_view_list.dart @@ -25,10 +25,10 @@ class RequestItemViewList extends StatelessWidget { shrinkWrap: true, itemBuilder: (cxt, index) { if (isLoading) return const SizedBox().toRequestShimmer(cxt, isLoading); - bool isServiceRequest = list[index].nameOfType == "ServiceRequest"; - bool isGasRefill = list[index].nameOfType == "GasRefill"; - bool isAssetTransfer = list[index].nameOfType == "AssetTransfer"; - bool isPPMs = list[index].nameOfType == "PPMs"; + bool isServiceRequest = list[index].transactionType == 1; + bool isGasRefill = list[index].transactionType == 2; + bool isAssetTransfer = list[index].transactionType == 3; + bool isPPMs = list[index].transactionType == 4; return isServiceRequest ? ServiceRequestItemView(requestDetails: list[index]) diff --git a/lib/service_request_latest/service_request_detail_provider.dart b/lib/service_request_latest/service_request_detail_provider.dart index 9136bb4e..b62ab23e 100644 --- a/lib/service_request_latest/service_request_detail_provider.dart +++ b/lib/service_request_latest/service_request_detail_provider.dart @@ -739,6 +739,7 @@ class ServiceRequestDetailProvider extends ChangeNotifier { body: activityMaintenanceHelperModel!.toJson(), ); stateCode = response.statusCode; + print('response of activity maintenace part is ${response.body}'); if (response.statusCode >= 200 && response.statusCode < 300) { // currentWorkOrder = WorkOrderDetail.fromJson(json.decode(response.body)); // updateCurrentWorkOrder(currentWorkOrder); diff --git a/lib/service_request_latest/views/components/activities_list_view.dart b/lib/service_request_latest/views/components/activities_list_view.dart index 2c14c93b..b8c982d1 100644 --- a/lib/service_request_latest/views/components/activities_list_view.dart +++ b/lib/service_request_latest/views/components/activities_list_view.dart @@ -154,8 +154,10 @@ class _ActivitiesListViewState extends State { children: [ StatusLabel( label: activity.activityStatus?.name, - textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!), - backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!), + textColor: AppColor.white10, + // textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!), + // backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!), + backgroundColor: AppColor.primary10, ), "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160), if (userProvider.user!.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3) @@ -246,6 +248,7 @@ class _ActivitiesListViewState extends State { } Widget maintenanceActivityCard({required ServiceRequestDetailProvider requestDetailProvider, required UserProvider userProvider, required BuildContext context, required Activities activity}) { + print('activity i got is ${activity.toJson()}'); return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -256,8 +259,10 @@ class _ActivitiesListViewState extends State { //TODO will be here when fixed from backend.. StatusLabel( label: activity.activityStatus?.name, - textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!), - backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!), + textColor: AppColor.white10, + // textColor: AppColor.getHistoryLogStatusTextColorByName(activity.activityStatus!.name!), + // backgroundColor: AppColor.getHistoryLogStatusColorByName(activity.activityStatus!.name!), + backgroundColor: AppColor.primary10, ), "drag_icon".toSvgAsset(height: 12, width: 23, color: AppColor.neutral160), if (userProvider.user!.type == UsersTypes.engineer && requestDetailProvider.currentWorkOrder?.data?.status?.value != 5 && requestDetailProvider.currentWorkOrder?.data?.status?.value != 3) diff --git a/lib/service_request_latest/views/components/history_log_view.dart b/lib/service_request_latest/views/components/history_log_view.dart index 09840e6c..8dd19ba9 100644 --- a/lib/service_request_latest/views/components/history_log_view.dart +++ b/lib/service_request_latest/views/components/history_log_view.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; +import 'package:test_sa/controllers/api_routes/urls.dart'; import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; @@ -9,6 +10,7 @@ import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/service_request_latest/service_request_detail_provider.dart'; import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; +import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/requests/request_status.dart'; @@ -73,8 +75,6 @@ class HistoryLogView extends StatelessWidget { child: Column(children: items), ); }), - - ], )); }); @@ -98,8 +98,31 @@ class HistoryLogView extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + if (object.assetVerificationType?.value == 4 && object.photoVerfication != null) ...[ + Padding( + padding: EdgeInsets.symmetric(vertical: 12.toScreenWidth), + + child: InteractiveViewer(child: Image.network(URLs.getFileUrl(object.photoVerfication ?? '')!, height: 143.toScreenHeight)), + ).onPress(() async { + Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => Scaffold( + body: SafeArea( + child: Stack( + children: [ + InteractiveViewer(child: Image.network(URLs.getFileUrl(object.photoVerfication ?? '')!)).center, + const ABackButton(), + ], + ), + ), + ), + ), + ); + }), + ], object.step!.name!.bodyText(context).custom(color: AppColor.black10), object.timeDifference.isNotEmpty ? object.timeDifference.tinyFont(context).custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120) : const SizedBox(), + ], ), ), @@ -123,7 +146,7 @@ class HistoryLogView extends StatelessWidget { String statusText(String status) { if (status == "new" || status == "open") { return "Open Request".addTranslation; - } else if (status == "in progress") { + } else if (status == "in progress") { return "Status update to In Progress".addTranslation; } else if (status == "closed") { return "Status update to Closed".addTranslation; diff --git a/lib/service_request_latest/views/components/verify_arrival_view.dart b/lib/service_request_latest/views/components/verify_arrival_view.dart index fe312ef0..9a6dbd19 100644 --- a/lib/service_request_latest/views/components/verify_arrival_view.dart +++ b/lib/service_request_latest/views/components/verify_arrival_view.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'dart:io'; import 'package:flutter/material.dart'; @@ -225,16 +226,6 @@ class _VerifyArrivalViewState extends State { requestDetailProvider.isVerifyArrivalBottomSheetOpen=false; }); bool ?isArrived = await ServiceRequestUtils.listenForApproval(); - // bool? isArrived = (await showModalBottomSheet( - // context: context, - // useSafeArea: true, - // isScrollControlled: true, - // isDismissible: false, - // backgroundColor: Colors.transparent, - // builder: (context) => RequestApprovalBottomSheet(), - // )); - print('value of arrived i got is ${isArrived}'); - // return ; if (requestDetailProvider.isVerifyArrivalBottomSheetOpen) { if (isArrived == null) { "Requester not confirmed you arrival".showToast; @@ -252,7 +243,7 @@ class _VerifyArrivalViewState extends State { } } else{ - print('bottomsheet closed ...'); + log('bottomsheet closed ...'); } } } diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart b/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart index 113ee16e..0e1764e7 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart @@ -86,7 +86,6 @@ class _AssistantEmployeeCardState extends State { //TODO add check... // enable: !isCurrentUserIsAssistantEmp, onSelect: (employee) { - print('on select called...${employee?.toJson()}'); if (employee == null) { requestDetailProvider.activityMaintenanceHelperModel?.assistantEmployees = []; } else { @@ -122,11 +121,11 @@ class _AssistantEmployeeCardState extends State { requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); ServiceRequestUtils.calculateAndAssignWorkingHours( - startTime: requestDetailProvider.activityMaintenanceHelperModel?.startTime, - endTime: requestDetailProvider.activityMaintenanceHelperModel?.endTime, + startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, + endTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, workingHoursController: _workingHoursController, updateModel: (hours){ - + requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours=hours; }); } }); @@ -160,7 +159,13 @@ class _AssistantEmployeeCardState extends State { } requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - // assignWorkingHours(requestDetailProvider: requestDetailProvider); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, + endTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate, + workingHoursController: _workingHoursController, + updateModel: (hours){ + requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.workingHours=hours; + }); } }); }, diff --git a/lib/service_request_latest/views/service_request_detail_main_view.dart b/lib/service_request_latest/views/service_request_detail_main_view.dart index 5b1f8854..dd74af82 100644 --- a/lib/service_request_latest/views/service_request_detail_main_view.dart +++ b/lib/service_request_latest/views/service_request_detail_main_view.dart @@ -33,7 +33,6 @@ class _ServiceRequestDetailMainState extends State { @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) { getInitialData(); }); @@ -43,8 +42,6 @@ class _ServiceRequestDetailMainState extends State { bool isNurse = (Provider.of(context, listen: false).user?.type) == UsersTypes.normal_user; _requestProvider = Provider.of(context, listen: false); await _requestProvider.getWorkOrderById(id: widget.requestId); - print('nextstep i got is ${_requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum}'); - print('loading value is ${_requestProvider.isLoading}'); if (isNurse && (_requestProvider.currentWorkOrder?.data?.nextStep?.workOrderNextStepEnum == WorkOrderNextStepEnum.waitingForRequesterToConfirm)) { ServiceRequestBottomSheet.nurseVerifyArrivalBottomSheet(context: context); } @@ -67,13 +64,12 @@ class _ServiceRequestDetailMainState extends State { bool isNurse = (Provider.of(context, listen: false).user?.type) == UsersTypes.normal_user; return WillPopScope( onWillPop: () async { - // Implement custom back button handling logic here ServiceRequestDetailProvider requestDetailProvider = Provider.of(context, listen: false); if (requestDetailProvider.timer != null && requestDetailProvider.timer!.isActive) { requestDetailProvider.stopTimer(); } stopTimer(); - return true; // Return true if you want to allow popping the screen, false otherwise + return true; }, child: Scaffold( backgroundColor: AppColor.neutral100,