From 03926a1fd128887e55e2233a7f99dd698584c1c3 Mon Sep 17 00:00:00 2001 From: zaid_daoud Date: Thu, 16 Nov 2023 13:42:36 +0300 Subject: [PATCH] Multiple spare parts in all places --- ...ice_report_fault_description_provider.dart | 2 - .../single_item_drop_down_menu.dart | 4 +- .../create_sub_workorder_page.dart | 43 ++++++++----------- .../work_order/create_service_report.dart | 3 +- .../work_order/edit_service_report.dart | 41 +++++++----------- .../service_report_fault_description.dart | 14 +++++- 6 files changed, 49 insertions(+), 58 deletions(-) diff --git a/lib/controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart b/lib/controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart index 6c892cf2..60b40d1b 100644 --- a/lib/controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart +++ b/lib/controllers/providers/api/status_drop_down/report/service_report_fault_description_provider.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:developer'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -61,7 +60,6 @@ class ServiceRequestFaultDescriptionProvider extends ChangeNotifier { // client's request was successfully received List listJson = json.decode(response.body)["data"]['asset']['modelDefinition']['modelDefRelatedDefects']; _items = listJson?.map((type) => FaultDescription.fromJson(type))?.toList() ?? []; - log("${_items}Zaid"); } _loading = false; notifyListeners(); 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 8596b210..48d863f5 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 @@ -43,7 +43,7 @@ class _SingleItemDropDownMenuState oldWidget) { if (widget.initialValue != null) { final result = (X == NullableLoadingProvider ? widget.staticData : provider.items)?.where((element) { - return element == widget.initialValue; + return element.identifier == widget.initialValue.identifier; }); if (result?.isNotEmpty ?? false) { _selectedItem = result.first; diff --git a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart index 1d7f61ee..f72a508a 100644 --- a/lib/views/pages/sub_workorder/create_sub_workorder_page.dart +++ b/lib/views/pages/sub_workorder/create_sub_workorder_page.dart @@ -42,6 +42,7 @@ import '../../widgets/status/report/service_report_fault_description.dart'; import '../../widgets/status/report/service_report_last_call.dart'; import '../../widgets/status/report/service_report_repair_location.dart'; import '../../widgets/timer/app_timer.dart'; +import '../user/requests/work_order/part_no_button.dart'; class CreateSubWorkOrderPage extends StatefulWidget { static const id = "/CreateSubWorkOrder"; @@ -58,11 +59,13 @@ class _CreateSubWorkOrderPageState extends State { SearchWorkOrder _subWorkOrders; ServiceReport _serviceReport; final List _files = []; + List _spareParts = []; bool _isLoading = false; bool _showVendorFields = false; SuppEngineerWorkOrders engineer; SupplierDetails initialSupplier; final TextEditingController _workPreformedController = TextEditingController(); + final TextEditingController _partQtyController = TextEditingController(); @override void initState() { @@ -96,7 +99,7 @@ class _CreateSubWorkOrderPageState extends State { _serviceReport.equipmentStatus = subWoDetails.equipmentStatus; _serviceReport.reason = subWoDetails.reason; initialSupplier = subWoDetails.supplier; - // _serviceReport.faultDescription = subWoDetails.faultDescription; + _serviceReport.faultDescription = subWoDetails.faultDescription; } await assetTypesProvider.getTypes(); _subWorkOrders?.assetType = assetTypesProvider.statuses?.firstWhere( @@ -110,6 +113,7 @@ class _CreateSubWorkOrderPageState extends State { } _subWorkOrders.supplier ??= SupplierDetails(id: _subWorkOrders?.supplier?.id); } + _spareParts = _serviceReport.sparePartsWorkOrders.map((e) => e.sparePart).toList(); setState(() { _isLoading = false; }); @@ -118,6 +122,7 @@ class _CreateSubWorkOrderPageState extends State { @override void dispose() { _workPreformedController?.dispose(); + _partQtyController?.dispose(); super.dispose(); } @@ -186,7 +191,7 @@ class _CreateSubWorkOrderPageState extends State { }, child: AppTextFormField( labelText: context.translation.assetType, - initialValue: _serviceReport?.assetType?.name ?? "NULL", + initialValue: _serviceReport?.assetType?.name, textAlign: TextAlign.center, enable: false, style: Theme.of(context).textTheme.titleMedium, @@ -302,30 +307,6 @@ class _CreateSubWorkOrderPageState extends State { }, ), 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.partNo, - staticData: _subWorkOrders.sparePartsWorkOrders.map((e) => e.sparePart).toList(), - initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.sparePart : null, - onSelect: (part) { - _subWorkOrders.sparePartsWorkOrders.clear(); - _subWorkOrders.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0)); - setState(() {}); - }, - ), - 8.height, - AppTextFormField( - labelText: context.translation.quantity, - textInputType: TextInputType.number, - enable: _subWorkOrders?.sparePartsWorkOrders?.isNotEmpty, - initialValue: (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) ? _subWorkOrders.sparePartsWorkOrders.first.qty?.toString() : null, - onSaved: (text) { - if (_subWorkOrders.sparePartsWorkOrders?.isNotEmpty ?? false) { - _subWorkOrders.sparePartsWorkOrders.first.qty = num.tryParse(text ?? ""); - } - }, - ), - 8.height, ServiceReportRepairLocation( label: context.translation.repairLocation, initialValue: _subWorkOrders.repairLocation, @@ -334,7 +315,17 @@ class _CreateSubWorkOrderPageState extends State { }, ), 8.height, + PartNoButton( + controller: _partQtyController, + spareParts: _spareParts, + initialList: _serviceReport.sparePartsWorkOrders, + onAdd: (parts) { + _serviceReport.sparePartsWorkOrders = parts; + }, + ), + 8.height, MultiFilesPicker(label: context.translation.attachImage, files: _files), + 8.height, AppTextFormField( labelText: context.translation.travelingExpense, initialValue: _serviceReport?.travelingExpenses?.toString(), diff --git a/lib/views/pages/user/requests/work_order/create_service_report.dart b/lib/views/pages/user/requests/work_order/create_service_report.dart index 409d77b8..3b817833 100644 --- a/lib/views/pages/user/requests/work_order/create_service_report.dart +++ b/lib/views/pages/user/requests/work_order/create_service_report.dart @@ -175,7 +175,7 @@ class _CreateServiceReportState extends State with TickerPr }, child: AppTextFormField( labelText: context.translation.assetType, - initialValue: _serviceReport?.assetType?.name ?? "NULL", + initialValue: _serviceReport?.assetType?.name, textAlign: TextAlign.center, enable: false, style: Theme.of(context).textTheme.titleMedium, @@ -272,6 +272,7 @@ class _CreateServiceReportState extends State with TickerPr PartNoButton( controller: _partQtyController, spareParts: _spareParts, + initialList: _serviceReport.sparePartsWorkOrders, onAdd: (parts) { _serviceReport.sparePartsWorkOrders = parts; }, diff --git a/lib/views/pages/user/requests/work_order/edit_service_report.dart b/lib/views/pages/user/requests/work_order/edit_service_report.dart index 73b85d8f..1c8b984f 100644 --- a/lib/views/pages/user/requests/work_order/edit_service_report.dart +++ b/lib/views/pages/user/requests/work_order/edit_service_report.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:developer'; import 'dart:io'; import 'package:flutter/material.dart'; @@ -13,6 +14,7 @@ import 'package:test_sa/extensions/text_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/service_request/service_report.dart'; import 'package:test_sa/models/service_request/service_request.dart'; +import 'package:test_sa/views/pages/user/requests/work_order/part_no_button.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/report/service_report_last_call.dart'; @@ -24,7 +26,6 @@ import '../../../../../new_views/common_widgets/app_filled_button.dart'; import '../../../../../new_views/common_widgets/app_text_form_field.dart'; import '../../../../../new_views/common_widgets/default_app_bar.dart'; import '../../../../../new_views/common_widgets/single_item_drop_down_menu.dart'; -import '../../../../../providers/loading_list_notifier.dart'; import '../../../../../providers/service_request_providers/equipment_status_provider.dart'; import '../../../../../providers/work_order/reason_provider.dart'; import '../../../../../providers/work_order/service_type_provider.dart'; @@ -58,6 +59,7 @@ class _EditServiceReportState extends State with TickerProvid final GlobalKey _scaffoldKey = GlobalKey(); final TextEditingController _faultController = TextEditingController(); final TextEditingController _workPreformedController = TextEditingController(); + final TextEditingController _partQtyController = TextEditingController(); ServiceStatusProvider _assetTypeProvider; CallRequest _callRequestForWorkOrder; @@ -73,6 +75,7 @@ class _EditServiceReportState extends State with TickerProvid _isLoading = true; setState(() {}); _callRequestForWorkOrder = await _serviceRequestsProvider?.getCallRequestForWorkOrder(callId: widget.request.id); + log(_serviceReport.faultDescription?.toJson()?.toString()); _serviceReport.assignedEmployee = _callRequestForWorkOrder?.assignedEmployee; await _assetTypeProvider?.getTypes(user: _userProvider.user, host: _settingProvider.host); _isLoading = false; @@ -83,6 +86,7 @@ class _EditServiceReportState extends State with TickerProvid void dispose() { _faultController.dispose(); _workPreformedController.dispose(); + _partQtyController.dispose(); super.dispose(); } @@ -158,7 +162,7 @@ class _EditServiceReportState extends State with TickerProvid }, child: AppTextFormField( labelText: context.translation.assetType, - initialValue: _serviceReport?.assetType?.name ?? "NULL", + initialValue: _serviceReport?.assetType?.name, textAlign: TextAlign.center, enable: false, style: Theme.of(context).textTheme.titleMedium, @@ -224,30 +228,6 @@ class _EditServiceReportState extends State with TickerProvid }, ), 8.height, - SingleItemDropDownMenu( - context: context, - title: context.translation.partNo, - staticData: _spareParts, - initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.sparePart : null, - onSelect: (part) { - _serviceReport.sparePartsWorkOrders.clear(); - _serviceReport.sparePartsWorkOrders.add(SparePartsWorkOrders(id: 0, sparePart: part, qty: 0)); - // setState(() {}); - }, - ), - 8.height, - AppTextFormField( - labelText: context.translation.quantity, - textInputType: TextInputType.number, - enable: _serviceReport.sparePartsWorkOrders.isNotEmpty, - initialValue: (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) ? _serviceReport.sparePartsWorkOrders.first.qty?.toString() : null, - onSaved: (text) { - if (_serviceReport.sparePartsWorkOrders?.isNotEmpty ?? false) { - _serviceReport.sparePartsWorkOrders.first.qty = num.tryParse(text ?? ""); - } - }, - ), - 8.height, AppTextFormField( labelText: context.translation.travelingExpense, initialValue: _serviceReport?.travelingExpenses?.toString(), @@ -276,6 +256,15 @@ class _EditServiceReportState extends State with TickerProvid }, ), 8.height, + PartNoButton( + controller: _partQtyController, + spareParts: _spareParts, + initialList: _serviceReport.sparePartsWorkOrders, + onAdd: (parts) { + _serviceReport.sparePartsWorkOrders = parts; + }, + ), + 8.height, MultiFilesPicker(label: context.translation.attachImage, files: _files), 8.height, ESignature( diff --git a/lib/views/widgets/status/report/service_report_fault_description.dart b/lib/views/widgets/status/report/service_report_fault_description.dart index 732ec023..43d21f00 100644 --- a/lib/views/widgets/status/report/service_report_fault_description.dart +++ b/lib/views/widgets/status/report/service_report_fault_description.dart @@ -21,9 +21,11 @@ class ServiceReportFaultDescription extends StatefulWidget { } class _ServiceReportFaultDescriptionState extends State { + FaultDescription initialValue; @override void initState() { super.initState(); + initialValue = widget.initialValue; if (widget.initialValue == null) { WidgetsFlutterBinding.ensureInitialized().addPostFrameCallback((timeStamp) { ServiceRequestFaultDescriptionProvider menuProvider = Provider.of(context, listen: false); @@ -33,6 +35,16 @@ class _ServiceReportFaultDescriptionState extends State(context); @@ -50,7 +62,7 @@ class _ServiceReportFaultDescriptionState extends State