diff --git a/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart b/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart index 4b249619..046cf913 100644 --- a/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart +++ b/lib/models/helper_data_models/maintenance_request/activity_maintenance_model.dart @@ -1,5 +1,4 @@ import 'package:test_sa/models/lookup.dart'; -import 'package:test_sa/models/new_models/assigned_employee.dart'; import 'package:test_sa/models/new_models/assistant_employee.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; @@ -9,14 +8,14 @@ import 'package:test_sa/models/timer_model.dart'; class ActivityMaintenanceHelperModel { int? id; int? workOrderId; + //remove this int? lastSituationId; Lookup? lastSituation; - Lookup? activityStatus; - DateTime? startTime; - DateTime? endTime; + DateTime? startTime; + DateTime? endTime; num? workingHour; num? travelHours; Lookup? repairLocation; @@ -28,40 +27,42 @@ class ActivityMaintenanceHelperModel { DateTime? supplierStartTime; DateTime? supplierEndTime; num? supplierWorkingHour; + // AssignedEmployee? assignedEmployee; WorkOrderAssignedEmployee? assignedEmployee; SuppEngineerWorkOrders? supEngineer; ActivityMaintenanceAssistantEmployees? modelAssistantEmployees; List? assistantEmployees; - List? activityMaintenanceTimers=[]; + List? activityMaintenanceTimers = []; TimerModel? activityMaintenanceTimerModel = TimerModel(); + List? timerModelList = []; ActivityMaintenanceHelperModel( {this.id, - this.workOrderId, - this.lastSituationId, - this.lastSituation, - this.activityStatus, - this.startTime, - this.supplier, - this.endTime, - this.workingHour, - this.activityMaintenanceTimerModel, - this.travelHours, - this.repairLocation, - this.assignedEmployeeId, - this.technicalComment, - this.supplierId, - this.supplierEngineerId, - this.supplierStartTime, - this.supplierEndTime, - this.supplierWorkingHour, - this.assistantEmployees, - this.supEngineer, - this.assignedEmployee, - this.activityMaintenanceTimers, - this.modelAssistantEmployees}); - + this.workOrderId, + this.lastSituationId, + this.lastSituation, + this.activityStatus, + this.startTime, + this.supplier, + this.endTime, + this.workingHour, + this.activityMaintenanceTimerModel, + this.travelHours, + this.repairLocation, + this.assignedEmployeeId, + this.technicalComment, + this.supplierId, + this.supplierEngineerId, + this.supplierStartTime, + this.supplierEndTime, + this.supplierWorkingHour, + this.assistantEmployees, + this.supEngineer, + this.assignedEmployee, + this.activityMaintenanceTimers, + this.timerModelList, + this.modelAssistantEmployees}); Map toJson() { final Map data = {}; @@ -82,14 +83,12 @@ class ActivityMaintenanceHelperModel { data['supplierEndTime'] = supplierEndTime?.toIso8601String(); data['supplierWorkingHour'] = supplierWorkingHour; //TODO fix this properly... - data['activityMaintenanceTimers'] = activityMaintenanceTimers; - if (assistantEmployees != null&&assistantEmployees!.isNotEmpty) { - data['assistantEmployees'] = [modelAssistantEmployees?.toJson()]; - } - else{ - data['assistantEmployees']=[]; + data['activityMaintenanceTimers'] = activityMaintenanceTimers; + if (assistantEmployees != null && assistantEmployees!.isNotEmpty) { + data['assistantEmployees'] = [modelAssistantEmployees?.toJson()]; + } else { + data['assistantEmployees'] = []; } return data; } } - 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 76f4b606..126b3bfa 100644 --- a/lib/service_request_latest/views/components/activities_list_view.dart +++ b/lib/service_request_latest/views/components/activities_list_view.dart @@ -114,8 +114,7 @@ class _ActivitiesListViewState extends State { separatorBuilder: (czt, index) => 16.height, itemBuilder: (context, index) { if (activities[index].activityMaintenance != null) { - return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]) - .paddingOnly(top: 8, bottom: 8); + return maintenanceActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]); } return sparePartActivityCard(requestDetailProvider: requestDetailProvider, userProvider: userProvider, context: context, activity: activities[index]); }, 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 118fa3ce..485d898c 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 @@ -3,16 +3,16 @@ import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_repair_location_provider.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'; import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; +import 'package:test_sa/models/timer_model.dart'; 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/service_request_latest/service_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'; import 'package:test_sa/views/widgets/timer/app_timer.dart'; + import '../../../../../models/lookup.dart'; import '../../../../../new_views/common_widgets/app_text_form_field.dart'; import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; @@ -38,7 +38,8 @@ class _InternalMaintenanceRequestState extends State _requestDetailProvider = Provider.of(context, listen: false); super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { - _travellingHoursController.text= _requestDetailProvider?.activityMaintenanceHelperModel?.travelHours != null ? _requestDetailProvider!.activityMaintenanceHelperModel!.travelHours.toString() : ''; + _travellingHoursController.text = + _requestDetailProvider?.activityMaintenanceHelperModel?.travelHours != null ? _requestDetailProvider!.activityMaintenanceHelperModel!.travelHours.toString() : ''; }); // _isLoading = true; } @@ -50,12 +51,12 @@ class _InternalMaintenanceRequestState extends State super.dispose(); } - - @override Widget build(BuildContext context) { return Consumer(builder: (context, requestDetailProvider, child) { - double totalWorkingHours = _requestDetailProvider?.activityMaintenanceHelperModel?.activityMaintenanceTimers?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? 0; + double totalWorkingHours = _requestDetailProvider?.activityMaintenanceHelperModel?.activityMaintenanceTimers + ?.fold(0.0, (sum, item) => (sum ?? 0) + DateTime.parse(item.endTime!).difference(DateTime.parse(item.startTime!)).inSeconds) ?? + 0; return SingleChildScrollView( child: Column( children: [ @@ -96,13 +97,18 @@ class _InternalMaintenanceRequestState extends State AppTimer( label: context.translation.timer, timer: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel, - enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null, + // enabled: requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel?.endAt == null, timerProgress: (isRunning) { print("timerProgress:$isRunning"); }, onChange: (timer) async { - requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimerModel = timer; + if (timer.startAt != null && timer.endAt != null) { + requestDetailProvider.activityMaintenanceHelperModel?.timerModelList = requestDetailProvider.activityMaintenanceHelperModel?.timerModelList ?? []; + requestDetailProvider.activityMaintenanceHelperModel?.timerModelList!.add(timer); + + } + return true; }, ), @@ -330,6 +336,4 @@ class _InternalMaintenanceRequestState extends State ); }); } - - } diff --git a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart index ad7b8a3c..fe09764d 100644 --- a/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart +++ b/lib/service_request_latest/views/forms/maintenance_request/maintenance_request_main.dart @@ -99,9 +99,21 @@ class _MaintenanceRequestFormState extends State with Si //TODO add this as dropdown not added in design yet Bhaa need to confirm with hussain then. requestDetailProvider.activityMaintenanceHelperModel?.lastSituationId = 282; - if (validate(model: requestDetailProvider.activityMaintenanceHelperModel!)) { - requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers =requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers??[]; + requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers = requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers ?? []; + + requestDetailProvider.activityMaintenanceHelperModel?.timerModelList?.forEach((timer) { + int durationInSecond = timer.endAt!.difference(timer.startAt!).inSeconds; + requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers?.add( + ActivityMaintenanceTimers( + id: 0, + startTime: timer.startAt!.toIso8601String(), // Handle potential null + endTime: timer.endAt?.toIso8601String(), // Handle potential null + workingHours: ((durationInSecond) / 60 / 60), + ), + ); + }); + requestDetailProvider.activityMaintenanceHelperModel?.activityMaintenanceTimers?.add( ActivityMaintenanceTimers( id: 0, @@ -137,18 +149,16 @@ class _MaintenanceRequestFormState extends State with Si } bool validate({required ActivityMaintenanceHelperModel model}) { - - if (model.activityStatus == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.activityStatus}"); return false; } if (model.activityMaintenanceTimerModel?.startAt == null) { - Fluttertoast.showToast(msg: "Working Hours Required"); + Fluttertoast.showToast(msg: "Working Hours Required"); return false; } if (model.activityMaintenanceTimerModel?.endAt == null) { - Fluttertoast.showToast(msg: "Please Stop The Timer"); + Fluttertoast.showToast(msg: "Please Stop The Timer"); return false; } // if (model.startTime == null) { @@ -163,7 +173,7 @@ class _MaintenanceRequestFormState extends State with Si // Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.travelingHours}"); // return false; // } - if (model.repairLocation == null) { + if (model.repairLocation == null) { Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.repairLocation}"); return false; }