From adab2e36ea09d19b2859106e96bb95b3738321dd Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Tue, 13 Feb 2024 12:18:22 +0300 Subject: [PATCH] first action time added, comment fixed, --- .../api/service_requests_provider.dart | 3 +- lib/extensions/string_extensions.dart | 9 ++++ .../requests/first_action_bottom_sheet.dart | 45 ++++++++++++++----- .../requests/service_request_details.dart | 4 ++ .../widgets/date_and_time/date_picker.dart | 7 ++- 5 files changed, 56 insertions(+), 12 deletions(-) diff --git a/lib/controllers/providers/api/service_requests_provider.dart b/lib/controllers/providers/api/service_requests_provider.dart index 645a8a09..b9c4523a 100644 --- a/lib/controllers/providers/api/service_requests_provider.dart +++ b/lib/controllers/providers/api/service_requests_provider.dart @@ -286,11 +286,12 @@ class ServiceRequestsProvider extends ChangeNotifier { "callLastSituation": null, "firstAction": request.firstAction?.toJson(), "loanAvailablity": request.loanAvailability?.toJson(), - "comments": request.reviewComment, + "comments": request.comments, "firstActionDate": request.visitDate, "visitDate": request.visitDate, "callReview": null, "reviewComment": null, + //"reviewComment": request.reviewComment, }; try { response = await ApiManager.instance.put( diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index a73b1ac5..3bf44786 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -20,6 +20,15 @@ extension StringExtensions on String { } } + + String get toFirstActionFormat { + try { + DateTime dateTime = DateTime.tryParse(this); + return "${DateFormat('yyyy-MM-dd').format(dateTime)} ${DateFormat('hh:mm a').format(dateTime)}"; + } catch (e) { + return ""; + } + } String get toAssetDetailsFormat { try { DateTime dateTime = DateTime.tryParse(this); 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 f0fe1dc5..3dbe4e95 100644 --- a/lib/views/pages/user/requests/first_action_bottom_sheet.dart +++ b/lib/views/pages/user/requests/first_action_bottom_sheet.dart @@ -32,10 +32,13 @@ class _FirstActionBottomSheetState extends State { Asset asset; final GlobalKey _formKey = GlobalKey(); + Lookup firstAction; + @override void initState() { super.initState(); _serviceRequest = widget.request; + firstAction = _serviceRequest.firstAction; } @override @@ -68,25 +71,46 @@ class _FirstActionBottomSheetState extends State { SingleItemDropDownMenu( context: context, title: context.translation.firstActionStatus, - initialValue: _serviceRequest.firstAction, + initialValue: firstAction, //_serviceRequest.firstAction, onSelect: (value) { setState(() { - _serviceRequest.firstAction = value; - if (_serviceRequest?.firstAction?.value != 2) { + //_serviceRequest.firstAction = value; + firstAction = value; + if (firstAction.value != 2) { _serviceRequest.visitDate = null; } }); }, ), - if (_serviceRequest?.firstAction?.value == 2) 8.height, - if (_serviceRequest?.firstAction?.value == 2) + if (firstAction?.value == 2) 8.height, + if (firstAction?.value == 2) ADatePicker( label: context.translation.visitDate, date: DateTime.tryParse(_serviceRequest.visitDate ?? ""), - onDatePicker: (date) { - setState(() { - _serviceRequest.visitDate = date?.toIso8601String(); - }); + 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.visitDate = selectedDateTime?.toIso8601String(); + }); + } + } + }); + } }, ), @@ -131,10 +155,11 @@ class _FirstActionBottomSheetState extends State { Consumer( builder: (context, snapshot, _) => AppFilledButton( label: context.translation.save, - loading: snapshot.isLoading, + loading: snapshot.isLoading ?? false, onPressed: () async { _formKey.currentState.save(); _serviceRequest.device = asset; + _serviceRequest.firstAction = firstAction; await snapshot.updateRequest(user: userProvider.user, request: _serviceRequest); Navigator.pop(context, true); }, diff --git a/lib/views/pages/user/requests/service_request_details.dart b/lib/views/pages/user/requests/service_request_details.dart index f0f6e1c6..79b5bdac 100644 --- a/lib/views/pages/user/requests/service_request_details.dart +++ b/lib/views/pages/user/requests/service_request_details.dart @@ -101,6 +101,10 @@ class _ServiceRequestDetailsPageState extends State { '${context.translation.requestType}: ${serviceRequest.type.name}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), ), + Text( + '${context.translation.equipmentStatus}: ${serviceRequest.defectType.name}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), + ), Text( '${context.translation.requestNo}: ${serviceRequest.requestCode}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20), diff --git a/lib/views/widgets/date_and_time/date_picker.dart b/lib/views/widgets/date_and_time/date_picker.dart index 6abd1fef..c1dd7d0f 100644 --- a/lib/views/widgets/date_and_time/date_picker.dart +++ b/lib/views/widgets/date_and_time/date_picker.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.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/new_views/app_style/app_color.dart'; @@ -13,6 +14,7 @@ class ADatePicker extends StatelessWidget { final Function(DateTime) onDatePicker; final bool enable, withBorder; final Color backgroundColor; + final bool formatDateWithTime; const ADatePicker({ Key key, @@ -20,6 +22,7 @@ class ADatePicker extends StatelessWidget { this.withBorder = true, this.backgroundColor, this.date, + this.formatDateWithTime = false, this.onDatePicker, this.from, this.to, @@ -49,7 +52,9 @@ class ADatePicker extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ label.tinyFont(context), - ((date?.toIso8601String()?.split("T")?.first) ?? context.translation.pickADate).bodyText(context).custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), + (formatDateWithTime ? date?.toIso8601String().toFirstActionFormat: + + ((date?.toIso8601String()?.split("T")?.first) ?? context.translation.pickADate)).bodyText(context).custom(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50), ], ).expanded : label.bodyText(context).paddingOnly(top: 8, bottom: 8),