diff --git a/lib/helper/utils.dart b/lib/helper/utils.dart index 5cf0ef01..9162129d 100644 --- a/lib/helper/utils.dart +++ b/lib/helper/utils.dart @@ -61,6 +61,9 @@ class Utils { static Future delay(int millis) async { return await Future.delayed(Duration(milliseconds: millis)); } + static bool isBeforeOrEqualCurrentTime(TimeOfDay t1, TimeOfDay t2) { + return t1.hour < t2.hour || (t1.hour == t2.hour && t1.minute <= t2.minute); + } static void showLoading(BuildContext context) { WidgetsBinding.instance.addPostFrameCallback((_) { diff --git a/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart b/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart index 09e96ffe..cd265105 100644 --- a/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/components/assistant_employee_card.dart @@ -6,6 +6,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/modules/cm_module/service_request_detail_provider.dart'; import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; @@ -151,7 +152,14 @@ class _AssistantEmployeeCardState extends State { initialTime: TimeOfDay.now(), ).then((selectedTime) { // Handle the selected date and time here. + if (selectedTime != null) { + final TimeOfDay now = TimeOfDay.now(); + final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); + if (!isBeforeNow) { + "Please select a time before the current time.".showToast; + return; + } DateTime selectedDateTime = DateTime( selectedDate.year, selectedDate.month, diff --git a/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart b/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart index e0e7269c..ce7d9662 100644 --- a/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart +++ b/lib/modules/cm_module/views/forms/maintenance_request/components/external_request.dart @@ -5,6 +5,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; import 'package:test_sa/models/service_request/supplier_details.dart'; @@ -186,6 +187,13 @@ class _ExternalMaintenanceRequestState extends State ).then((selectedTime) { // Handle the selected date and time here. if (selectedTime != null) { + + final TimeOfDay now = TimeOfDay.now(); + final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); + if (!isBeforeNow) { + "Please select a time before the current time.".showToast; + return; + } DateTime selectedDateTime = DateTime( selectedDate.year, selectedDate.month, @@ -237,4 +245,5 @@ class _ExternalMaintenanceRequestState extends State ); }); } + } diff --git a/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart b/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart index 672ded7a..1f82daa6 100644 --- a/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart +++ b/lib/modules/pm_module/ppm_wo/update_ppm/wo_info_form.dart @@ -8,6 +8,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/device/model_definition.dart'; import 'package:test_sa/models/device/supplier.dart'; @@ -192,6 +193,12 @@ class _WoInfoFormState extends State { initialTime: TimeOfDay.now(), ).then((selectedTime) { if (selectedTime != null) { + final TimeOfDay now = TimeOfDay.now(); + final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); + if (!isBeforeNow) { + "Please select a time before the current time.".showToast; + return; + } DateTime selectedDateTime = DateTime( selectedDate.year, selectedDate.month, diff --git a/lib/views/widgets/timer/app_timer.dart b/lib/views/widgets/timer/app_timer.dart index 7833918f..441b3f85 100644 --- a/lib/views/widgets/timer/app_timer.dart +++ b/lib/views/widgets/timer/app_timer.dart @@ -7,6 +7,7 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/helper/utils.dart'; import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; @@ -194,7 +195,14 @@ class _AppTimerState extends State { context: context, initialTime: TimeOfDay.now(), ).then((selectedTime) { + if (selectedTime != null) { + final TimeOfDay now = TimeOfDay.now(); + final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); + if (!isBeforeNow) { + "Please select a time before the current time.".showToast; + return; + } DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute); if (_pickerStartAt != null && selectedDateTime.isBefore(_pickerStartAt!)) { "End Date time must be greater then start date".showToast;