diff --git a/lib/new_views/common_widgets/app_filled_button.dart b/lib/new_views/common_widgets/app_filled_button.dart index 0835c413..153f7431 100644 --- a/lib/new_views/common_widgets/app_filled_button.dart +++ b/lib/new_views/common_widgets/app_filled_button.dart @@ -15,6 +15,7 @@ class AppFilledButton extends StatelessWidget { final Color? textColor; final bool showBorder; final double radius; + final bool disableButton; const AppFilledButton( {this.onPressed, @@ -25,6 +26,7 @@ class AppFilledButton extends StatelessWidget { this.fontSize, this.loading = false, this.showBorder = false, + this.disableButton = false, this.buttonColor, this.textColor, this.radius = 10, @@ -39,7 +41,7 @@ class AppFilledButton extends StatelessWidget { alignment: Alignment.center, decoration: BoxDecoration( borderRadius: BorderRadius.circular(10), - color: buttonColor ?? AppColor.blueStatus(context), + color: disableButton ? AppColor.neutral140 : (buttonColor ?? AppColor.blueStatus(context)), border: showBorder ? Border.all(color: textColor ?? AppColor.background(context)) : null, ), child: loading @@ -58,10 +60,10 @@ class AppFilledButton extends StatelessWidget { label.heading6(context).custom(color: textColor ?? AppColor.background(context)), ]) : label.heading6(context).custom( - color: textColor ?? AppColor.background(context), + color: disableButton ? AppColor.neutral150 : (textColor ?? AppColor.background(context)), align: TextAlign.center, fontSize: fontSize ?? 16.toScreenWidth, ), - ).onPress(onPressed); + ).onPress(disableButton ? null : (loading ? null : onPressed)); } } diff --git a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart index 6ad8f9fb..0ce17697 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart @@ -55,10 +55,11 @@ class _AllRequestsFilterPageState extends State { search!.searchBySelectedValue = search?.requestNumber; } final types = { - context.translation.serviceRequest: 1, + context.translation.correctiveMaintenance: 1, context.translation.gasRefill: 2, context.translation.deviceTransfer: 3, context.translation.preventiveMaintenance: 4, + context.translation.recurrentWo: 5, }; final statuses = { context.translation.allRequests: 0, diff --git a/lib/service_request_latest/views/components/action_button/footer_action_button.dart b/lib/service_request_latest/views/components/action_button/footer_action_button.dart index 6674009c..789fe025 100644 --- a/lib/service_request_latest/views/components/action_button/footer_action_button.dart +++ b/lib/service_request_latest/views/components/action_button/footer_action_button.dart @@ -176,8 +176,9 @@ class FooterActionButton { label: context.translation.markAsCompleted, // maxWidth: true, buttonColor: AppColor.green70, - onPressed: () async { - ServiceRequestBottomSheet.feedBackBottomSheet(context: context); + onPressed: () { + bool isValid = ServiceRequestBottomSheet.validateAssetSituation(Provider.of(context, listen: false)); + if (isValid) ServiceRequestBottomSheet.feedBackBottomSheet(context: context); }, ), ] 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 b10e3aa3..76f4b606 100644 --- a/lib/service_request_latest/views/components/activities_list_view.dart +++ b/lib/service_request_latest/views/components/activities_list_view.dart @@ -54,6 +54,8 @@ class _ActivitiesListViewState extends State { List activities = []; + bool disableNewActivity = false; + @override Widget build(BuildContext context) { UserProvider userProvider = Provider.of(context); @@ -66,11 +68,11 @@ class _ActivitiesListViewState extends State { //backgroundColor: const Color(0xfff8f9fb), body: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { activities = requestDetailProvider.currentWorkOrder!.data!.activities; - // if (showReorderView && reOrderActivities.isEmpty) { - // reOrderActivities = requestDetailProvider.currentWorkOrder!.data!.activities; - // } else { - // - // } + if (activities.isNotEmpty && (activities.last.activityStatus!.value == 14 || activities.last.activityStatus!.value == 19)) { + disableNewActivity = true; + } else { + disableNewActivity = false; + } return Column( children: [ @@ -126,6 +128,7 @@ class _ActivitiesListViewState extends State { maxWidth: true, buttonColor: AppColor.primary10, loading: requestDetailProvider.isLoading, + disableButton: disableNewActivity, onPressed: () async { // if (showReorderView) { // // requestDetailProvider.currentWorkOrder!.data!.activities = reOrderActivities; 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 f5afcc2e..5a53e8b9 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 @@ -3,6 +3,7 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:fluttertoast/fluttertoast.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/app_strings/app_asset.dart'; import 'package:test_sa/extensions/context_extension.dart'; @@ -300,7 +301,7 @@ class ServiceRequestBottomSheet { requestDetailProvider.engineerUpdateNeedVisit(); try { DateTime visitDateTime = requestDetailProvider.needVisitHelperModel!.visitDate!; - int ?reminderMinutes = requestDetailProvider.currentWorkOrder!.data!.setReminder?.value; + int? reminderMinutes = requestDetailProvider.currentWorkOrder!.data!.setReminder?.value; DateTime updatedDateTime = visitDateTime.subtract(Duration(minutes: reminderMinutes ?? 0)); if (updatedDateTime.isAfter(DateTime.now())) { // ServiceRequestUtils.scheduleNotification(context: context, scheduleDateTime: updatedDateTime); @@ -310,8 +311,7 @@ class ServiceRequestBottomSheet { end: visitDateTime, title: context.translation.needAVisit, workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); - } - else{ + } else { // "Visit date is before the reminder time selected".showToast; } } catch (e) { @@ -446,9 +446,7 @@ class ServiceRequestBottomSheet { workOrderNumber: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); // uncommit this to add schedule notification need to confirm what to do in case of update.... // ServiceRequestUtils.scheduleOrUpdateNotification(context: context, scheduleDateTime: updatedDateTime,workOrderId: requestDetailProvider.currentWorkOrder!.data!.workOrderNo!); - - } - else{ + } else { "Visit date is before the reminder time selected".showToast; } } catch (e) { @@ -837,7 +835,20 @@ class ServiceRequestBottomSheet { ); } + static bool validateAssetSituation(ServiceRequestDetailProvider requestDetailProvider) { + if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) { + if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) { + if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) { + Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG); + return false; + } + } + } + return true; + } + static Future feedBackBottomSheet({required BuildContext context}) { + String feedback = ''; TextEditingController _commentController = TextEditingController(); return buildBottomSheetParent( @@ -1068,7 +1079,6 @@ class ServiceRequestBottomSheet { static Future nurseVerifyArrivalBottomSheet({required BuildContext context}) { return buildBottomSheetParent( context: context, - childWidget: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { return Column( crossAxisAlignment: CrossAxisAlignment.center, @@ -1131,7 +1141,7 @@ class ServiceRequestBottomSheet { context: context, isDismissible: false, childWidget: Consumer(builder: (context, ServiceRequestDetailProvider requestDetailProvider, child) { - return WillPopScope( + return WillPopScope( onWillPop: () async { // Return `false` to block back navigation @@ -1147,12 +1157,9 @@ class ServiceRequestBottomSheet { "Waiting...".heading4(context), Container( padding: EdgeInsets.all(5.toScreenHeight), - decoration: const BoxDecoration( - shape: BoxShape.circle, - color: AppColor.neutral80 - ), + decoration: const BoxDecoration(shape: BoxShape.circle, color: AppColor.neutral80), child: const Icon(Icons.close), - ).onPress((){ + ).onPress(() { Navigator.pop(context); }), ], diff --git a/lib/service_request_latest/views/components/service_request_detail_view.dart b/lib/service_request_latest/views/components/service_request_detail_view.dart index 9f94b6d0..e804e248 100644 --- a/lib/service_request_latest/views/components/service_request_detail_view.dart +++ b/lib/service_request_latest/views/components/service_request_detail_view.dart @@ -191,7 +191,7 @@ class ServiceRequestDetailView extends StatelessWidget { style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), Text( - '${context.translation.date}: ${workOrder.requestedDate!.toString().toServiceRequestDetailsFormat}', + 'Date/Time: ${workOrder.requestedDate!.toString().toServiceRequestDetailsFormat}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral120), ), const Divider().defaultStyle(context), @@ -203,11 +203,7 @@ class ServiceRequestDetailView extends StatelessWidget { ), 8.height, Text( - '${context.translation.serviceType}: ${workOrder.serviceType?.name ?? '-'}', - style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), - ), - Text( - '${context.translation.assignedEmployee}: ${workOrder.assignedEmployee?.userName ?? '-'}', + '${context.translation.assignedTo}: ${workOrder.assignedEmployee?.userName ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), @@ -225,7 +221,7 @@ class ServiceRequestDetailView extends StatelessWidget { const Divider().defaultStyle(context), 8.height, Text( - context.translation.callComments, + "Call Comment", style: AppTextStyles.heading4.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), ), 8.height, diff --git a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart index 6a149c1a..ffd36189 100644 --- a/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart +++ b/lib/service_request_latest/views/forms/asset_retired/asset_retired.dart @@ -118,6 +118,7 @@ class _AssetRetiredState extends State with TickerProviderStateMix child: AppFilledButton( label: context.translation.submit, buttonColor: AppColor.primary10, + loading: requestDetailProvider.isLoading, onPressed: () async { requestDetailProvider.assetRetiredHelperModel?.activityAssetToBeRetiredAttachments = []; for (var file in _files) { diff --git a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart index 104e37ba..262478cb 100644 --- a/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/service_request_latest/views/forms/asset_retired/verify_asset_detail.dart @@ -253,14 +253,14 @@ class _VerifyAssetDetailsState extends State with TickerProv if (!widget.isEdit) { return true; } - if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) { - if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) { - if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) { - Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG); - return false; - } - } - } + // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus != null) { + // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 1 || requestDetailProvider.engineerUpdateWorkOrderHelperModel!.equipmentStatus!.value == 2) { + // if (requestDetailProvider.engineerUpdateWorkOrderHelperModel!.returnToService == null) { + // Fluttertoast.showToast(msg: "Return to service is required ", toastLength: Toast.LENGTH_LONG); + // return false; + // } + // } + // } return isValid; } diff --git a/lib/views/pages/user/notifications/notifications_list.dart b/lib/views/pages/user/notifications/notifications_list.dart index bfa96a8e..e82a2fb5 100644 --- a/lib/views/pages/user/notifications/notifications_list.dart +++ b/lib/views/pages/user/notifications/notifications_list.dart @@ -17,7 +17,7 @@ class NotificationsList extends StatelessWidget { @override Widget build(BuildContext context) { if (notifications.isEmpty) { - return NoDataFound(message: context.translation.notificationsNotFound); + return NoDataFound(message: context.translation.notificationsNotFound).center; } return LazyLoading( nextPage: nextPage,