diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index f584ecd7..c7fade95 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -219,6 +219,8 @@ class URLs { static get getServiceReportReasonsNew => "$_baseUrl/Lookups/GetLookupReasonNew?lookupEnum=505"; + static get getWoFrames => "$_baseUrl/Lookups/GetLookupReasonNew?lookupEnum=1254"; + static get getServiceReportRetirementType => "$_baseUrl/Lookups/GetLookup?lookupEnum=415"; static get getVisitReminderTimeValue => "$_baseUrl/Lookups/GetLookup?lookupEnum=1211"; diff --git a/lib/main.dart b/lib/main.dart index 4df50e48..88c7bdef 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -71,6 +71,7 @@ import 'package:test_sa/providers/work_order/retirement_type_provider.dart'; import 'package:test_sa/providers/work_order/service_type_provider.dart'; import 'package:test_sa/providers/work_order/supplier_engineer_provider.dart'; import 'package:test_sa/providers/work_order/vendor_provider.dart'; +import 'package:test_sa/providers/work_order/wo_frame_provider.dart'; import 'package:test_sa/views/pages/device_transfer/create__device_transfer_request.dart'; import 'package:test_sa/views/pages/device_transfer/device_filter_screen.dart'; import 'package:test_sa/views/pages/device_transfer/device_search_screen.dart'; @@ -239,6 +240,7 @@ class MyApp extends StatelessWidget { /// Loan availability not required ChangeNotifierProvider(create: (_) => LoanAvailabilityProvider()), ChangeNotifierProvider(create: (_) => ReasonProvider()), + ChangeNotifierProvider(create: (_) => WoFrameProvider()), ChangeNotifierProvider(create: (_) => RejectReasonProvider()), ChangeNotifierProvider(create: (_) => LastSituationProvider()), ChangeNotifierProvider(create: (_) => FaultDescriptionProvider()), 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 24e2fc20..cd302791 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 @@ -82,16 +82,19 @@ class EngineerUpdateWorkOrderHelperModel { num? loanAssetId; WorkOrderAsset? loanAsset; Lookup? failureReason; + Lookup? cmFrameId; FaultDescription? faultDescription; String? solution; String? callResponse; String? descriptionOfFinding; String? actionTaken; + String? edd; EngineerUpdateWorkOrderHelperModel({ this.workOrderId, this.equipmentStatus, this.failureReason, + this.cmFrameId, this.faultDescription, this.loanAvailability, this.loanAssetId, @@ -99,6 +102,7 @@ class EngineerUpdateWorkOrderHelperModel { this.serviceType, this.solution, this.returnToService, + this.edd, this.callResponse, this.descriptionOfFinding, this.actionTaken, @@ -109,9 +113,11 @@ class EngineerUpdateWorkOrderHelperModel { data['workOrderId'] = workOrderId; data['equipmentStatusId'] = equipmentStatus?.id; data['returnToService'] = returnToService; + data['edd'] = edd; data['loanAvailabilityId'] = loanAvailability?.id; data['loanAssetId'] = loanAssetId; data['failureReasonId'] = failureReason?.id; + data['cmFrameId'] = cmFrameId?.id; data['faultDescriptionId'] = faultDescription?.id; data['callResponse'] = callResponse; data['descriptionOfFinding'] = descriptionOfFinding; diff --git a/lib/modules/cm_module/views/components/asset_detail_card.dart b/lib/modules/cm_module/views/components/asset_detail_card.dart index 4f377e61..c657b891 100644 --- a/lib/modules/cm_module/views/components/asset_detail_card.dart +++ b/lib/modules/cm_module/views/components/asset_detail_card.dart @@ -64,6 +64,10 @@ class AssetDetailCard extends StatelessWidget { '${context.translation.returnToService}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService?.toAssetDetailsFormat ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), + Text( + 'EDD: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.edd?.toAssetDetailsFormat ?? '-'}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), + ), Text( '${context.translation.loanAvailability}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.loanAvailability?.name ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), @@ -72,6 +76,10 @@ class AssetDetailCard extends StatelessWidget { '${context.translation.failureReason}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.failureReason?.name ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), ), + Text( + 'Frame: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.cmFrameId?.name ?? '-'}', + style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), + ), Text( '${context.translation.faultDescription}: ${requestDetailProvider.engineerUpdateWorkOrderHelperModel?.faultDescription?.name ?? '-'}', style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120), diff --git a/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart b/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart index 9cf25350..e8c04555 100644 --- a/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart +++ b/lib/modules/cm_module/views/forms/asset_retired/verify_asset_detail.dart @@ -24,6 +24,7 @@ import 'package:test_sa/providers/service_request_providers/equipment_status_pro import 'package:test_sa/providers/service_request_providers/loan_availability_provider.dart'; import 'package:test_sa/providers/work_order/fault_description_provider.dart'; import 'package:test_sa/providers/work_order/reason_provider.dart'; +import 'package:test_sa/providers/work_order/wo_frame_provider.dart'; import 'package:test_sa/views/widgets/date_and_time/date_picker.dart'; import 'package:test_sa/views/widgets/equipment/pick_asset.dart'; @@ -101,6 +102,7 @@ class _VerifyAssetDetailsState extends State with TickerProv _loanAvailabilityProvider!.reset(); _equipmentStatusProvider = Provider.of(context, listen: false); _equipmentStatusProvider!.reset(); + Provider.of(context, listen: false).reset(); WidgetsBinding.instance.addPostFrameCallback((_) { _equipmentStatusProvider!.getDate(); }); @@ -129,7 +131,7 @@ class _VerifyAssetDetailsState extends State with TickerProv hideShadow: true, backgroundColor: AppColor.neutral100, // initialDate: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService ?? ""), - from:requestDetailProvider.currentWorkOrder?.data?.requestedDate, + from: requestDetailProvider.currentWorkOrder?.data?.requestedDate, date: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.returnToService ?? ""), formatDateWithTime: true, onDatePicker: (selectedDate) { @@ -227,7 +229,7 @@ class _VerifyAssetDetailsState extends State with TickerProv ? requestDetailProvider.engineerUpdateWorkOrderHelperModel!.solution!.bodyText2(context).custom(color: AppColor.neutral120, align: TextAlign.justify) : const SizedBox(), ], - 8.height, + 12.height, AppTextFormField( labelText: context.translation.callResponse, backgroundColor: AppColor.neutral100, @@ -240,8 +242,57 @@ class _VerifyAssetDetailsState extends State with TickerProv }, style: Theme.of(context).textTheme.titleMedium, ), + 12.height, + ADatePicker( + label: "EDD", + hideShadow: true, + backgroundColor: AppColor.neutral100, + // initialDate: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.edd ?? ""), + from: requestDetailProvider.currentWorkOrder?.data?.requestedDate, + date: DateTime.tryParse(requestDetailProvider.engineerUpdateWorkOrderHelperModel?.edd ?? ""), + formatDateWithTime: true, + onDatePicker: (selectedDate) { + 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 (requestDetailProvider.engineerUpdateWorkOrderHelperModel?.edd != null && + // selectedDateTime.isBefore(DateTime.parse(requestDetailProvider.engineerUpdateWorkOrderHelperModel!.edd!))) { + // "Return To Service Date time must be greater then previous date".showToast; + // return; + // } + setState(() { + requestDetailProvider.engineerUpdateWorkOrderHelperModel?.edd = selectedDateTime.toIso8601String(); + }); + } + }); + }, + ), + 12.height, + SingleItemDropDownMenu( + context: context, + title: "WO Frame", + backgroundColor: AppColor.neutral100, + height: 56.toScreenHeight, + showShadow: false, + initialValue: requestDetailProvider.engineerUpdateWorkOrderHelperModel?.cmFrameId, + onSelect: (value) { + if (value != null) { + requestDetailProvider.engineerUpdateWorkOrderHelperModel?.cmFrameId = value; + } + }, + ), if (Provider.of(context, listen: false).isUserFMS) ...[ - 8.height, + 12.height, AppTextFormField( labelText: "Description of Finding", backgroundColor: AppColor.neutral100, @@ -254,7 +305,7 @@ class _VerifyAssetDetailsState extends State with TickerProv }, style: Theme.of(context).textTheme.titleMedium, ), - 8.height, + 12.height, AppTextFormField( labelText: "Action Taken", backgroundColor: AppColor.neutral100, diff --git a/lib/providers/work_order/reason_provider.dart b/lib/providers/work_order/reason_provider.dart index bde828de..5e4f4085 100644 --- a/lib/providers/work_order/reason_provider.dart +++ b/lib/providers/work_order/reason_provider.dart @@ -8,7 +8,6 @@ import '../../controllers/api_routes/urls.dart'; import '../../models/lookup.dart'; class ReasonProvider extends LoadingListNotifier { - String? serviceRequestId; @override @@ -17,7 +16,7 @@ class ReasonProvider extends LoadingListNotifier { loading = true; notifyListeners(); try { - Response response = await ApiManager.instance.get(URLs.getServiceReportReasonsNew+"&serviceRequestId=$serviceRequestId"); + Response response = await ApiManager.instance.get(URLs.getServiceReportReasonsNew + "&serviceRequestId=$serviceRequestId"); stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { List categoriesListJson = json.decode(response.body)["data"]; diff --git a/lib/providers/work_order/wo_frame_provider.dart b/lib/providers/work_order/wo_frame_provider.dart new file mode 100644 index 00000000..2472af1a --- /dev/null +++ b/lib/providers/work_order/wo_frame_provider.dart @@ -0,0 +1,33 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; +import 'package:test_sa/providers/loading_list_notifier.dart'; + +import '../../controllers/api_routes/api_manager.dart'; +import '../../controllers/api_routes/urls.dart'; +import '../../models/lookup.dart'; + +class WoFrameProvider extends LoadingListNotifier { + @override + Future getDate() async { + if (loading == true) return -2; + loading = true; + notifyListeners(); + try { + Response response = await ApiManager.instance.get(URLs.getWoFrames); + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + List categoriesListJson = json.decode(response.body)["data"]; + items = categoriesListJson.map((item) => Lookup.fromJson(item)).toList(); + } + loading = false; + notifyListeners(); + return response.statusCode; + } catch (error) { + loading = false; + stateCode = -1; + notifyListeners(); + return -1; + } + } +}