timer picker end date selection fixed.

design_3.0_demo_module
Sikander Saleem 9 months ago
parent be2fd8a2d5
commit 616ce9b630

@ -3,14 +3,14 @@ class URLs {
static const String appReleaseBuildNumber = "17"; static const String appReleaseBuildNumber = "17";
static const host1 = "https://atomsm.hmg.com"; // production url // static const host1 = "https://atomsm.hmg.com"; // production url
// static const host1 = "https://atomsmdev.hmg.com"; // local DEV url // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url
// static const host1 = "https://atomsmuat.hmg.com"; // local UAT url static const host1 = "https://atomsmuat.hmg.com"; // local UAT url
// static String _baseUrl = "$_host/mobile"; static String _baseUrl = "$_host/mobile";
// static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis
// static final String _baseUrl = "$_host/mobile"; // host local UAT // static final String _baseUrl = "$_host/mobile"; // host local UAT
static final String _baseUrl = "$_host/v3/mobile"; // v3 for new CM,PM,TM // static final String _baseUrl = "$_host/v3/mobile"; // v3 for new CM,PM,TM
static String _host = host1; static String _host = host1;

@ -107,7 +107,7 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
label: context.translation.startTime, label: context.translation.startTime,
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
from:requestDetailProvider.currentWorkOrder?.data?.requestedDate, from: requestDetailProvider.currentWorkOrder?.data?.requestedDate,
date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate,
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
@ -117,13 +117,13 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year, if (selectedDateTime.isAfter(DateTime.now())) {
selectedDate.month, "Start time is after than current time".showToast;
selectedDate.day, selectedTime = null;
selectedTime.hour, return;
selectedTime.minute, }
);
requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime; requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
@ -141,8 +141,9 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
ADatePicker( ADatePicker(
label: context.translation.endTime, label: context.translation.endTime,
hideShadow: true, hideShadow: true,
from:requestDetailProvider.currentWorkOrder?.data?.requestedDate, from: requestDetailProvider.currentWorkOrder?.data?.requestedDate,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
enable: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate != null,
date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate, date: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate,
formatDateWithTime: true, formatDateWithTime: true,
to: DateTime.now(), to: DateTime.now(),
@ -154,25 +155,19 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
final TimeOfDay now = TimeOfDay.now(); selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
if (!isBeforeNow) { bool isAfterStartTime = selectedDate.isAfter(requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.startDate!);
if (!isBeforeCurrentTime) {
"Please select a time before the current time.".showToast; "Please select a time before the current time.".showToast;
return; return;
} }
DateTime selectedDateTime = DateTime( if (!isAfterStartTime) {
selectedDate.year,
selectedDate.month,
selectedDate.day,
selectedTime.hour,
selectedTime.minute,
);
if (requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate != null &&
selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.modelAssistantEmployees!.startDate!)) {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime;
requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDate;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, startTime: requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate,

@ -146,13 +146,12 @@ class _ExternalMaintenanceRequestState extends State<ExternalMaintenanceRequest>
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year, if (selectedDateTime.isAfter(DateTime.now())) {
selectedDate.month, "Start time is after than current time".showToast;
selectedDate.day, selectedTime = null;
selectedTime.hour, return;
selectedTime.minute, }
);
requestDetailProvider.activityMaintenanceHelperModel?.supplierStartTime = selectedDateTime; requestDetailProvider.activityMaintenanceHelperModel?.supplierStartTime = selectedDateTime;
requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = null; requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = null;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
@ -176,6 +175,7 @@ class _ExternalMaintenanceRequestState extends State<ExternalMaintenanceRequest>
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
from: requestDetailProvider.currentWorkOrder?.data?.requestedDate, from: requestDetailProvider.currentWorkOrder?.data?.requestedDate,
to: DateTime.now(), to: DateTime.now(),
enable: requestDetailProvider.activityMaintenanceHelperModel?.supplierStartTime != null,
date: requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime, date: requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime,
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
@ -185,25 +185,38 @@ class _ExternalMaintenanceRequestState extends State<ExternalMaintenanceRequest>
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
final TimeOfDay now = TimeOfDay.now(); // final TimeOfDay now = TimeOfDay.now();
final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); // final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now);
if (!isBeforeNow) { // if (!isBeforeNow) {
// "Please select a time before the current time.".showToast;
// return;
// }
selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
bool isAfterStartTime = selectedDate.isAfter(requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime!);
if (!isBeforeCurrentTime) {
"Please select a time before the current time.".showToast; "Please select a time before the current time.".showToast;
return; return;
} }
DateTime selectedDateTime = DateTime( if (!isAfterStartTime) {
selectedDate.year,
selectedDate.month,
selectedDate.day,
selectedTime.hour,
selectedTime.minute,
);
if (requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime != null &&
selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime!)) {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = selectedDateTime;
// if (requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime != null &&
// selectedDateTime.isBefore(requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime!)) {
// "End Date time must be greater then start date".showToast;
// return;
// }
requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = selectedDate;
requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel);
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime, startTime: requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime,

@ -1,5 +1,3 @@
import 'dart:developer';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/ppm_provider.dart'; import 'package:test_sa/controllers/providers/api/ppm_provider.dart';
@ -91,7 +89,7 @@ class ExternalDetailItem extends StatefulWidget {
final PreventiveVisitSuppliers model; final PreventiveVisitSuppliers model;
final VoidCallback onRemove; final VoidCallback onRemove;
final int index; final int index;
final String ?createdDate; final String? createdDate;
const ExternalDetailItem({ const ExternalDetailItem({
Key? key, Key? key,
@ -187,20 +185,19 @@ class _ExternalDetailItemState extends State<ExternalDetailItem> {
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: widget.model.startDateTime, date: widget.model.startDateTime,
formatDateWithTime: true, formatDateWithTime: true,
from:DateTime.tryParse(_ppmProvider?.planPreventiveVisit?.creationDate??'') , from: DateTime.tryParse(_ppmProvider?.planPreventiveVisit?.creationDate ?? ''),
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
context: context, context: context,
initialTime: TimeOfDay.now(), initialTime: TimeOfDay.now(),
).then((selectedTime) { ).then((selectedTime) {
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year, if (selectedDateTime.isAfter(DateTime.now())) {
selectedDate.month, "Start time is after than current time".showToast;
selectedDate.day, selectedTime = null;
selectedTime.hour, return;
selectedTime.minute, }
);
setState(() { setState(() {
widget.model.startDateTime = selectedDateTime; widget.model.startDateTime = selectedDateTime;
}); });
@ -224,27 +221,29 @@ class _ExternalDetailItemState extends State<ExternalDetailItem> {
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: widget.model.endDateTime, date: widget.model.endDateTime,
enable: widget.model.startDateTime != null,
formatDateWithTime: true, formatDateWithTime: true,
from:DateTime.tryParse(_ppmProvider?.planPreventiveVisit?.creationDate??'') , from: DateTime.tryParse(_ppmProvider?.planPreventiveVisit?.creationDate ?? ''),
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
context: context, context: context,
initialTime: TimeOfDay.now(), initialTime: TimeOfDay.now(),
).then((selectedTime) { ).then((selectedTime) {
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
selectedDate.year, bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
selectedDate.month, bool isAfterStartTime = selectedDate.isAfter(widget.model.startDateTime!);
selectedDate.day, if (!isBeforeCurrentTime) {
selectedTime.hour, "Please select a time before the current time.".showToast;
selectedTime.minute, return;
); }
if (widget.model.startDateTime != null && selectedDateTime.isBefore(widget.model.startDateTime!)) { if (!isAfterStartTime) {
"End Date time must be greater than start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
setState(() { setState(() {
widget.model.endDateTime = selectedDateTime; widget.model.endDateTime = selectedDate;
}); });
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: widget.model.startDateTime, startTime: widget.model.startDateTime,

@ -185,7 +185,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: widget.planPreventiveVisit.acutalDateOfVisit, date: widget.planPreventiveVisit.acutalDateOfVisit,
from: DateTime.tryParse(widget.planPreventiveVisit.creationDate??''), from: DateTime.tryParse(widget.planPreventiveVisit.creationDate ?? ''),
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
@ -193,19 +193,19 @@ class _WoInfoFormState extends State<WoInfoForm> {
initialTime: TimeOfDay.now(), initialTime: TimeOfDay.now(),
).then((selectedTime) { ).then((selectedTime) {
if (selectedTime != null) { if (selectedTime != null) {
final TimeOfDay now = TimeOfDay.now(); // final TimeOfDay now = TimeOfDay.now();
final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); // final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now);
if (!isBeforeNow) { // if (!isBeforeNow) {
"Please select a time before the current time.".showToast; // "Please select a time before the current time.".showToast;
// return;
// }
DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
if (selectedDateTime.isAfter(DateTime.now())) {
"Start time is after than current time".showToast;
selectedTime = null;
return; return;
} }
DateTime selectedDateTime = DateTime(
selectedDate.year,
selectedDate.month,
selectedDate.day,
selectedTime.hour,
selectedTime.minute,
);
setState(() { setState(() {
widget.planPreventiveVisit.acutalDateOfVisit = selectedDateTime; widget.planPreventiveVisit.acutalDateOfVisit = selectedDateTime;
}); });
@ -363,7 +363,7 @@ class _WoInfoFormState extends State<WoInfoForm> {
width: double.infinity, width: double.infinity,
timer: widget.planPreventiveVisit.tbsTimer, timer: widget.planPreventiveVisit.tbsTimer,
pickerTimer: widget.planPreventiveVisit.ppMTimePicker, pickerTimer: widget.planPreventiveVisit.ppMTimePicker,
pickerFromDate: DateTime.tryParse(widget.planPreventiveVisit.creationDate??''), pickerFromDate: DateTime.tryParse(widget.planPreventiveVisit.creationDate ?? ''),
onPick: (time) { onPick: (time) {
widget.planPreventiveVisit.ppMTimePicker = time; widget.planPreventiveVisit.ppMTimePicker = time;
}, },

@ -1,5 +1,6 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -7,11 +8,11 @@ import 'package:test_sa/controllers/providers/api/all_requests_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/new_models/building.dart';
import 'package:test_sa/models/new_models/department.dart';
import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/floor.dart';
import 'package:test_sa/models/new_models/task_request/task_request_model.dart'; import 'package:test_sa/models/new_models/task_request/task_request_model.dart';
import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart'; import 'package:test_sa/modules/cm_module/utilities/service_request_utils.dart';
@ -33,6 +34,7 @@ import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/no_data_found.dart'; import 'package:test_sa/views/widgets/loaders/no_data_found.dart';
import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart'; import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart';
import 'package:test_sa/views/widgets/timer/app_timer.dart'; import 'package:test_sa/views/widgets/timer/app_timer.dart';
import '../../../../models/new_models/site.dart'; import '../../../../models/new_models/site.dart';
import '../../../../models/new_models/work_order_detail_model.dart'; import '../../../../models/new_models/work_order_detail_model.dart';
@ -654,13 +656,12 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year, if (selectedDateTime.isAfter(DateTime.now())) {
selectedDate.month, "Start time is after than current time".showToast;
selectedDate.day, selectedTime = null;
selectedTime.hour, return;
selectedTime.minute, }
);
taskModel?.modelAssistantEmployees?.startDate = selectedDateTime; taskModel?.modelAssistantEmployees?.startDate = selectedDateTime;
taskRequestProvider.updateTaskModel(taskModel); taskRequestProvider.updateTaskModel(taskModel);
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
@ -680,6 +681,7 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: taskModel?.modelAssistantEmployees?.endDate, date: taskModel?.modelAssistantEmployees?.endDate,
enable: taskModel?.modelAssistantEmployees?.startDate != null,
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
@ -688,19 +690,32 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( // DateTime selectedDateTime = DateTime(
selectedDate.year, // selectedDate.year,
selectedDate.month, // selectedDate.month,
selectedDate.day, // selectedDate.day,
selectedTime.hour, // selectedTime.hour,
selectedTime.minute, // selectedTime.minute,
); // );
//
// if (taskModel?.modelAssistantEmployees?.startDate != null && selectedDateTime.isBefore(taskModel!.modelAssistantEmployees!.startDate!)) {
// "End Date time must be greater then start date".showToast;
// return;
// }
if (taskModel?.modelAssistantEmployees?.startDate != null && selectedDateTime.isBefore(taskModel!.modelAssistantEmployees!.startDate!)) { selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
bool isAfterStartTime = selectedDate.isAfter(taskModel!.modelAssistantEmployees!.startDate!);
if (!isBeforeCurrentTime) {
"Please select a time before the current time.".showToast;
return;
}
if (!isAfterStartTime) {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
taskModel?.modelAssistantEmployees?.endDate = selectedDateTime;
taskModel?.modelAssistantEmployees?.endDate = selectedDate;
taskRequestProvider.updateTaskModel(taskModel); taskRequestProvider.updateTaskModel(taskModel);
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: taskModel?.modelAssistantEmployees?.startDate, startTime: taskModel?.modelAssistantEmployees?.startDate,

@ -457,13 +457,12 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
).then((selectedTime) { ).then((selectedTime) {
// Handle the selected date and time here. // Handle the selected date and time here.
if (selectedTime != null) { if (selectedTime != null) {
DateTime selectedDateTime = DateTime( DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
selectedDate.year, if (selectedDateTime.isAfter(DateTime.now())) {
selectedDate.month, "Start time is after than current time".showToast;
selectedDate.day, selectedTime = null;
selectedTime.hour, return;
selectedTime.minute, }
);
widget.formModel?.modelAssistantEmployees?.startDate = selectedDateTime; widget.formModel?.modelAssistantEmployees?.startDate = selectedDateTime;
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: widget.formModel?.modelAssistantEmployees?.startDate, startTime: widget.formModel?.modelAssistantEmployees?.startDate,
@ -501,6 +500,22 @@ class _AssistantEmployeeCardState extends State<AssistantEmployeeCard> {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
bool isAfterStartTime = selectedDate.isAfter(widget.formModel!.modelAssistantEmployees!.startDate!);
if (!isBeforeCurrentTime) {
"Please select a time before the current time.".showToast;
return;
}
if (!isAfterStartTime) {
"End Date time must be greater then start date".showToast;
return;
}
widget.formModel?.modelAssistantEmployees?.endDate = selectedDateTime; widget.formModel?.modelAssistantEmployees?.endDate = selectedDateTime;
ServiceRequestUtils.calculateAndAssignWorkingHours( ServiceRequestUtils.calculateAndAssignWorkingHours(
startTime: widget.formModel?.modelAssistantEmployees?.startDate, startTime: widget.formModel?.modelAssistantEmployees?.startDate,

@ -7,7 +7,6 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_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/models/timer_model.dart';
import 'package:test_sa/modules/cm_module/utilities/service_request_utils.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'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
@ -166,7 +165,7 @@ class _AppTimerState extends State<AppTimer> {
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
date: _pickerStartAt, date: _pickerStartAt,
from: widget.pickerFromDate, from: widget.pickerFromDate,
enable: widget.enabled ? _tempPickerTimer == null:false, enable: widget.enabled ? _tempPickerTimer == null : false,
formatDateWithTime: true, formatDateWithTime: true,
onDatePicker: (selectedDate) { onDatePicker: (selectedDate) {
showTimePicker( showTimePicker(
@ -175,6 +174,12 @@ class _AppTimerState extends State<AppTimer> {
).then((selectedTime) { ).then((selectedTime) {
if (selectedTime != null) { if (selectedTime != null) {
_pickerStartAt = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute); _pickerStartAt = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute);
if (_pickerStartAt!.isAfter(DateTime.now())) {
"Start time is after than current time".showToast;
_pickerStartAt = null;
selectedTime = null;
return;
}
setState(() {}); setState(() {});
} }
}); });
@ -185,8 +190,8 @@ class _AppTimerState extends State<AppTimer> {
label: context.translation.endTime, label: context.translation.endTime,
hideShadow: true, hideShadow: true,
backgroundColor: AppColor.neutral100, backgroundColor: AppColor.neutral100,
enable: widget.enabled? _pickerStartAt != null:false, enable: widget.enabled ? _pickerStartAt != null : false,
from:_pickerStartAt, from: _pickerStartAt,
date: _pickerEndAt, date: _pickerEndAt,
to: DateTime.now(), to: DateTime.now(),
formatDateWithTime: true, formatDateWithTime: true,
@ -195,20 +200,19 @@ class _AppTimerState extends State<AppTimer> {
context: context, context: context,
initialTime: TimeOfDay.now(), initialTime: TimeOfDay.now(),
).then((selectedTime) { ).then((selectedTime) {
if (selectedTime != null) { if (selectedTime != null) {
final TimeOfDay now = TimeOfDay.now(); selectedDate = selectedDate.add(Duration(hours: selectedTime.hour, minutes: selectedTime.minute));
final bool isBeforeNow = Utils.isBeforeOrEqualCurrentTime(selectedTime, now); bool isBeforeCurrentTime = selectedDate.isBefore(DateTime.now());
if (!isBeforeNow) { bool isAfterStartTime = selectedDate.isAfter(_pickerStartAt!);
if (!isBeforeCurrentTime) {
"Please select a time before the current time.".showToast; "Please select a time before the current time.".showToast;
return; return;
} }
DateTime selectedDateTime = DateTime(selectedDate.year, selectedDate.month, selectedDate.day, selectedTime.hour, selectedTime.minute); if (!isAfterStartTime) {
if (_pickerStartAt != null && selectedDateTime.isBefore(_pickerStartAt!)) {
"End Date time must be greater then start date".showToast; "End Date time must be greater then start date".showToast;
return; return;
} }
_pickerEndAt = selectedDateTime; _pickerEndAt = selectedDate;
setPickerTime(); setPickerTime();
} }
}); });

Loading…
Cancel
Save