diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index edef014e..0c882854 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -304,6 +304,9 @@ class ServiceRequestsProvider extends ChangeNotifier { "comments": request.comments, "firstActionDate": request.visitDate, "visitDate": request.visitDate, + "startDate": request.startDate, + "endDate": request.endDate, + "workingHours": request.workingHours, "callReview": null, "reviewComment": null, //"reviewComment": request.reviewComment, diff --git a/lib/models/service_request/service_request.dart b/lib/models/service_request/service_request.dart index 352adc29..45729bd1 100644 --- a/lib/models/service_request/service_request.dart +++ b/lib/models/service_request/service_request.dart @@ -37,6 +37,9 @@ class ServiceRequest { //String workPerformed; String visitDate; + String startDate; + String endDate; + String workingHours; DateTime nextVisitDate; String jobSheetNumber; int reportID; @@ -75,6 +78,9 @@ class ServiceRequest { this.faultDescription, this.jobSheetNumber, this.visitDate, + this.startDate, + this.endDate, + this.workingHours, this.nextVisitDate, //this.workPerformed, this.reportID, @@ -101,9 +107,7 @@ class ServiceRequest { return ServiceRequest( id: parsedJson["id"].toString(), requestCode: parsedJson["callNo"].toString(), - callCreatedBy: parsedJson['callCreatedBy'] != null - ? CallCreatedBy.fromJson(parsedJson['callCreatedBy']) - : null, + callCreatedBy: parsedJson['callCreatedBy'] != null ? CallCreatedBy.fromJson(parsedJson['callCreatedBy']) : null, hospitalName: parsedJson["asset"]["site"]["custName"], deviceNumber: parsedJson["asset"]["assetNumber"].toString(), @@ -130,16 +134,17 @@ class ServiceRequest { engineerMobile: parsedJson["assignedEmployee"] == null ? null : parsedJson["assignedEmployee"]["phone"], faultDescription: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["faultDescription"] != null - ? FaultDescription.fromJson(parsedJson["workOrder"]["faultDescription"]) - : null + ? FaultDescription.fromJson(parsedJson["workOrder"]["faultDescription"]) + : null : null, jobSheetNumber: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["jobSheetNumber"] : null, - visitDate: DateTime - .tryParse(parsedJson["visitDate"] ?? "") - .toString() - .split(" ") - .first, + visitDate: DateTime.tryParse(parsedJson["visitDate"] ?? "").toString().split(" ").first, + startDate: DateTime.tryParse(parsedJson["startDate"] ?? "").toString().split(" ").first, + endDate: DateTime.tryParse(parsedJson["endDate"] ?? "").toString().split(" ").first, + + workingHours: parsedJson["workingHours"], + nextVisitDate: DateTime.tryParse(parsedJson["nextVisitDate"] ?? ""), //workPerformed: parsedJson["workOrder"] != null ? parsedJson["workOrder"]["workPerformed"] : null, device: Asset.fromJson(parsedJson["asset"]), @@ -153,7 +158,6 @@ class ServiceRequest { ); } - Future validateNewRequest(BuildContext context) async { if (device == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); @@ -192,4 +196,4 @@ class CallCreatedBy { data['name'] = this.name; return data; } -} \ No newline at end of file +} diff --git a/lib/views/pages/user/requests/first_action_bottom_sheet.dart b/lib/views/pages/user/requests/first_action_bottom_sheet.dart index 1abdcff4..3046d2ff 100644 --- a/lib/views/pages/user/requests/first_action_bottom_sheet.dart +++ b/lib/views/pages/user/requests/first_action_bottom_sheet.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; +import 'package:test_sa/controllers/providers/settings/setting_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'; @@ -8,7 +9,6 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/service_request/service_request.dart'; -import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; import '../../../../controllers/providers/api/service_requests_provider.dart'; import '../../../../models/lookup.dart'; @@ -83,8 +83,8 @@ class _FirstActionBottomSheetState extends State { }); }, ), - if (firstAction?.value == 2) 8.height, - if (firstAction?.value == 2) + if (firstAction?.value == 2) ...[ + 8.height, ADatePicker( label: context.translation.visitDate, date: DateTime.tryParse(_serviceRequest.visitDate ?? ""), @@ -119,6 +119,76 @@ class _FirstActionBottomSheetState extends State { } }, ), + ], + + if (firstAction?.id == 404 && Provider.of(context, listen: false).assetGroup.id == 1) ...[ + 8.height, + Row( + children: [ + ADatePicker( + label: context.translation.startDate, + date: DateTime.tryParse(_serviceRequest.startDate ?? ""), + formatDateWithTime: true, + onDatePicker: (selectedDate) { + if (selectedDate != null) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + // Handle the selected date and time here. + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + if (selectedDateTime != null) { + setState(() { + _serviceRequest.startDate = selectedDateTime?.toIso8601String(); + }); + } + } + }); + } + }, + ).expanded, + 8.width, + ADatePicker( + label: context.translation.endDate, + date: DateTime.tryParse(_serviceRequest.endDate ?? ""), + formatDateWithTime: true, + onDatePicker: (selectedDate) { + if (selectedDate != null) { + showTimePicker( + context: context, + initialTime: TimeOfDay.now(), + ).then((selectedTime) { + // Handle the selected date and time here. + if (selectedTime != null) { + DateTime selectedDateTime = DateTime( + selectedDate.year, + selectedDate.month, + selectedDate.day, + selectedTime.hour, + selectedTime.minute, + ); + if (selectedDateTime != null) { + setState(() { + _serviceRequest.endDate = selectedDateTime?.toIso8601String(); + _serviceRequest.workingHours = + (((DateTime.parse(_serviceRequest.endDate).difference(DateTime.parse(_serviceRequest.startDate)).inSeconds ?? 0) / 60) / 60).toStringAsFixed(2); + }); + } + } + }); + } + }, + ).expanded, + ], + ) + ], /// Loan availability not required // 8.height,