diff --git a/lib/models/helper_data_models/workorder/work_order_helper_models.dart b/lib/models/helper_data_models/workorder/work_order_helper_models.dart index 1a2960e2..60b373bc 100644 --- a/lib/models/helper_data_models/workorder/work_order_helper_models.dart +++ b/lib/models/helper_data_models/workorder/work_order_helper_models.dart @@ -7,7 +7,7 @@ class FixRemotelyHelperModel { int? workOrderId; DateTime? startDate; DateTime? endDate; - int? workingHour; + dynamic workingHour; String? comment; FixRemotelyHelperModel({this.workOrderId, this.startDate, this.endDate, this.workingHour, this.comment}); diff --git a/lib/new_views/common_widgets/single_item_drop_down_menu.dart b/lib/new_views/common_widgets/single_item_drop_down_menu.dart index 8672818a..879865da 100644 --- a/lib/new_views/common_widgets/single_item_drop_down_menu.dart +++ b/lib/new_views/common_widgets/single_item_drop_down_menu.dart @@ -53,16 +53,6 @@ class _SingleItemDropDownMenuState(widget.context); } - print('initial value i got is ${widget.initialValue?.identifier}'); - print('condition value ${X == NullableLoadingProvider}'); - if(widget.staticData!=null){ - - - for(int i = 0;i element.identifier == widget.initialValue?.identifier); if (result?.isNotEmpty ?? false) _selectedItem = result!.first as T?; diff --git a/lib/service_request_latest/utilities/service_request_utils.dart b/lib/service_request_latest/utilities/service_request_utils.dart index 5acb4a51..d634d13d 100644 --- a/lib/service_request_latest/utilities/service_request_utils.dart +++ b/lib/service_request_latest/utilities/service_request_utils.dart @@ -1,25 +1,23 @@ import 'package:flutter/material.dart'; -class ServiceRequestUtils{ - static int calculateAndAssignWorkingHours({ +class ServiceRequestUtils { + static double calculateAndAssignWorkingHours({ required DateTime? startTime, required DateTime? endTime, required TextEditingController workingHoursController, - required Function(int) updateModel, // A callback to update the model + required Function(double) updateModel, // A callback to update the model }) { - print('end date i got is ${endTime}'); + print('start date i got is $startTime'); + print('end date i got is $endTime'); if (startTime != null && endTime != null) { - Duration difference = endTime.difference(startTime); - int hours = difference.inHours; - - // Update the controller and model - workingHoursController.text = hours.toString(); + double hours = difference.inMinutes / 60.0; // Calculate hours as a decimal + workingHoursController.text = hours.toStringAsFixed(1); // Format to 1 decimal places updateModel(hours); // Call the function to update the model - return hours; } else { return -1; // Indicating invalid input } } -} \ No newline at end of file + +} 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 5989533d..ce5d4f1a 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 @@ -18,6 +18,7 @@ import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; import 'package:test_sa/providers/service_request_providers/reject_reason_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart'; import 'package:test_sa/service_request_latest/views/forms/spare_part/spare_part_request.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; @@ -43,23 +44,6 @@ class ServiceRequestBottomSheet { static Future fixRemotelyBottomSheet({required BuildContext context}) { TextEditingController _workingHoursController = TextEditingController(); - int calculateWorkingHours(DateTime? startTime, DateTime? endTime) { - if (startTime != null && endTime != null) { - Duration difference = endTime.difference(startTime); - int hours = difference.inHours; - return hours; - } else { - return -1; - } - } - - assignWorkingHours({required RequestDetailProvider requestDetailProvider}) { - int hours = calculateWorkingHours(requestDetailProvider.fixRemotelyHelperModel?.startDate, requestDetailProvider.fixRemotelyHelperModel?.endDate); - if (hours != -1) { - _workingHoursController.text = hours.toString(); - requestDetailProvider.fixRemotelyHelperModel?.workingHour = hours; - } - } return buildBottomSheetParent( context: context, @@ -95,10 +79,18 @@ class ServiceRequestBottomSheet { selectedTime.hour, selectedTime.minute, ); - requestDetailProvider.fixRemotelyHelperModel?.startDate = selectedDateTime; + requestDetailProvider.fixRemotelyHelperModel?.endDate = null; requestDetailProvider.updateFixRemotelyHelperModel(requestDetailProvider.fixRemotelyHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + _workingHoursController.clear(); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.fixRemotelyHelperModel?.startDate, + endTime: requestDetailProvider.fixRemotelyHelperModel?.endDate, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.fixRemotelyHelperModel?.workingHour = hours; + }, + ); // serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest); } }); @@ -131,12 +123,16 @@ class ServiceRequestBottomSheet { "End Date time must be greater then start date".showToast; return; } - requestDetailProvider.fixRemotelyHelperModel?.endDate = selectedDateTime; requestDetailProvider.updateFixRemotelyHelperModel(requestDetailProvider.fixRemotelyHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); - - // serviceRequestProvider.updateCurrentSelectedRequest(serviceRequestProvider.currentSelectedRequest); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.fixRemotelyHelperModel?.startDate, + endTime: requestDetailProvider.fixRemotelyHelperModel?.endDate, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.fixRemotelyHelperModel?.workingHour = hours; + }, + ); } }); }, 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 a543b0bc..48df8598 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 @@ -10,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/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/status/report/service_report_assistant_employee_menu.dart'; @@ -120,7 +121,13 @@ class _AssistantEmployeeCardState extends State { ); requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel?.startTime, + endTime: requestDetailProvider.activityMaintenanceHelperModel?.endTime, + workingHoursController: _workingHoursController, + updateModel: (hours){ + + }); } }); }, @@ -153,7 +160,7 @@ class _AssistantEmployeeCardState extends State { } requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + // assignWorkingHours(requestDetailProvider: requestDetailProvider); } }); }, @@ -200,24 +207,24 @@ class _AssistantEmployeeCardState extends State { }); } -//TODO move this to some common place....@waseem - double calculateWorkingHours(DateTime? startTime, DateTime? endTime) { - if (startTime != null && endTime != null) { - Duration difference = endTime.difference(startTime); - int hours = difference.inHours; - int minutes = difference.inMinutes % 60; - return hours.toDouble(); - } else { - return -1; - } - } - - assignWorkingHours({required RequestDetailProvider requestDetailProvider}) { - double hours = calculateWorkingHours( - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate); - if (hours != -1) { - _workingHoursController.text = hours.toString(); - requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.workingHours = hours; - } - } +// //TODO move this to some common place....@waseem +// double calculateWorkingHours(DateTime? startTime, DateTime? endTime) { +// if (startTime != null && endTime != null) { +// Duration difference = endTime.difference(startTime); +// int hours = difference.inHours; +// int minutes = difference.inMinutes % 60; +// return hours.toDouble(); +// } else { +// return -1; +// } +// } +// +// assignWorkingHours({required RequestDetailProvider requestDetailProvider}) { +// double hours = calculateWorkingHours( +// requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.startDate, requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.endDate); +// if (hours != -1) { +// _workingHoursController.text = hours.toString(); +// requestDetailProvider.activityMaintenanceHelperModel?.modelAssistantEmployees?.workingHours = hours; +// } +// } } diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart index 18ca109f..076aeb12 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/external_request.dart @@ -20,6 +20,7 @@ import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/work_order/reason_provider.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/views/pages/user/requests/add_supplier_engineer_bottom_sheet.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; @@ -168,8 +169,18 @@ class _ExternalMaintenanceRequestState extends State selectedTime.minute, ); requestDetailProvider.activityMaintenanceHelperModel?.supplierStartTime = selectedDateTime; + requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = null; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + _workingHoursController.clear(); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime, + endTime: requestDetailProvider.activityMaintenanceHelperModel!.endTime, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.activityMaintenanceHelperModel?.supplierWorkingHour = hours; + }, + ); + } }); }, @@ -202,7 +213,14 @@ class _ExternalMaintenanceRequestState extends State } requestDetailProvider.activityMaintenanceHelperModel?.supplierEndTime = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime, + endTime: requestDetailProvider.activityMaintenanceHelperModel!.supplierEndTime, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.activityMaintenanceHelperModel?.supplierWorkingHour = hours; + }, + ); } }); }, @@ -232,22 +250,4 @@ class _ExternalMaintenanceRequestState extends State }); } - int calculateWorkingHours(DateTime? startTime, DateTime? endTime) { - if (startTime != null && endTime != null) { - Duration difference = endTime.difference(startTime); - int hours = difference.inHours; - int minutes = difference.inMinutes % 60; - return hours; - } else { - return -1; - } - } - - assignWorkingHours({required RequestDetailProvider requestDetailProvider}) { - int hours = calculateWorkingHours(requestDetailProvider.activityMaintenanceHelperModel!.supplierStartTime, requestDetailProvider.activityMaintenanceHelperModel!.supplierEndTime); - if (hours != -1) { - _workingHoursController.text = hours.toString(); - requestDetailProvider.activityMaintenanceHelperModel!.supplierWorkingHour = hours; - } - } } diff --git a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart index a6805804..a94a62ba 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/components/internal_request.dart @@ -13,6 +13,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/providers/service_request_providers/last_situation_provider.dart'; import 'package:test_sa/providers/work_order/activity_status_provider.dart'; import 'package:test_sa/service_request_latest/request_detail_provider.dart'; +import 'package:test_sa/service_request_latest/utilities/service_request_utils.dart'; import 'package:test_sa/service_request_latest/views/forms/maintenance_request/components/assistant_employee_card.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; @@ -140,8 +141,17 @@ class _InternalMaintenanceRequestState extends State selectedTime.minute, ); requestDetailProvider.activityMaintenanceHelperModel?.startTime = selectedDateTime; + requestDetailProvider.activityMaintenanceHelperModel?.endTime = null; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + _workingHoursController.clear(); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel!.startTime, + endTime: requestDetailProvider.activityMaintenanceHelperModel!.endTime, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.activityMaintenanceHelperModel?.workingHour = hours; + }, + ); } }); }, @@ -168,7 +178,14 @@ class _InternalMaintenanceRequestState extends State } requestDetailProvider.activityMaintenanceHelperModel?.endTime = selectedDateTime; requestDetailProvider.updateActivityMaintenanceHelperModel(requestDetailProvider.activityMaintenanceHelperModel); - assignWorkingHours(requestDetailProvider: requestDetailProvider); + ServiceRequestUtils.calculateAndAssignWorkingHours( + startTime: requestDetailProvider.activityMaintenanceHelperModel!.startTime, + endTime: requestDetailProvider.activityMaintenanceHelperModel!.endTime, + workingHoursController: _workingHoursController, + updateModel: (hours) { + requestDetailProvider.activityMaintenanceHelperModel?.workingHour = hours; + }, + ); } }); }, @@ -296,22 +313,5 @@ class _InternalMaintenanceRequestState extends State }); } - int calculateWorkingHours(DateTime? startTime, DateTime? endTime) { - if (startTime != null && endTime != null) { - Duration difference = endTime.difference(startTime); - int hours = difference.inHours; - int minutes = difference.inMinutes % 60; - return hours; - } else { - return -1; - } - } - assignWorkingHours({required RequestDetailProvider requestDetailProvider}) { - int hours = calculateWorkingHours(requestDetailProvider.activityMaintenanceHelperModel!.startTime, requestDetailProvider.activityMaintenanceHelperModel!.endTime); - if (hours != -1) { - _workingHoursController.text = hours.toString(); - requestDetailProvider.activityMaintenanceHelperModel!.workingHour = hours; - } - } }