diff --git a/lib/main.dart b/lib/main.dart index e828298e..99aa5e13 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -49,6 +49,7 @@ import 'package:test_sa/new_views/pages/login_page.dart'; import 'package:test_sa/new_views/pages/report_bug_page.dart'; import 'package:test_sa/new_views/pages/settings_page.dart'; import 'package:test_sa/new_views/pages/splash_page.dart'; +import 'package:test_sa/providers/asset_transfer/asset_transfer_status_provider.dart'; import 'package:test_sa/providers/department_provider.dart'; import 'package:test_sa/providers/gas_request_providers/cylinder_size_provider.dart'; import 'package:test_sa/providers/gas_request_providers/cylinder_type_provider.dart'; @@ -161,6 +162,7 @@ class MyApp extends StatelessWidget { ChangeNotifierProvider(create: (_) => GasTypesProvider()), ChangeNotifierProvider(create: (_) => GasRefillProvider()), ChangeNotifierProvider(create: (_) => AssetTransferProvider()), + ChangeNotifierProvider(create: (_) => AssetTransferStatusProvider()), ChangeNotifierProvider(create: (_) => AssignedToProvider()), ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()), ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()), diff --git a/lib/providers/asset_transfer/asset_transfer_status_provider.dart b/lib/providers/asset_transfer/asset_transfer_status_provider.dart new file mode 100644 index 00000000..23ef4d40 --- /dev/null +++ b/lib/providers/asset_transfer/asset_transfer_status_provider.dart @@ -0,0 +1,34 @@ +import 'dart:convert'; + +import 'package:http/http.dart'; + +import '../../controllers/api_routes/api_manager.dart'; +import '../../controllers/api_routes/urls.dart'; +import '../../models/lookup.dart'; +import '../loading_list_notifier.dart'; + +class AssetTransferStatusProvider extends LoadingListNotifier { + @override + Future getDate() async { + if (loading ?? false) return -2; + loading = true; + notifyListeners(); + try { + Response response = await ApiManager.instance.get(URLs.getAssetTransferStatus); + stateCode = response.statusCode; + if (response.statusCode >= 200 && response.statusCode < 300) { + // client's request was successfully received + 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; + } + } +} diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 4dd29507..f1eff387 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -52,6 +52,7 @@ class _DeviceTransferDetailsState extends State { return const ALoading(); } else { _model = snapshot.data; + return Form( key: _formKey, child: LoadingManager( @@ -114,10 +115,10 @@ class _DeviceTransferDetailsState extends State { // sender card _buildCard( isSender: true, - site: _model?.senderSiteName ?? "", + site: _model?.senderSiteName?.cleanupWhitespace?.capitalizeFirstOfEach ?? "", /// TBD - unit: _model?.senderDepartmentName ?? "", + unit: _model?.senderDepartmentName?.cleanupWhitespace?.capitalizeFirstOfEach ?? "", comment: _model?.senderComment ?? "", /// TBD @@ -134,10 +135,10 @@ class _DeviceTransferDetailsState extends State { // receiver card _buildCard( isSender: false, - site: _model?.destSiteName ?? "", + site: _model?.destSiteName?.cleanupWhitespace?.capitalizeFirstOfEach ?? "", /// TBD - unit: _model?.destDepartmentName ?? "", + unit: _model?.destDepartmentName?.cleanupWhitespace?.capitalizeFirstOfEach ?? "", comment: _model?.receiverComment ?? "", /// TBD @@ -169,6 +170,14 @@ class _DeviceTransferDetailsState extends State { } _buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}) { + bool isCurrentEngineerEligibleForEdit = isSender ? _model.senderAssignedEmployeeId == _userProvider.user.userID : _model.receiverAssignedEmployeeId == _userProvider.user.userID; + print("isCurrentEngineerEligibleForEdit:$isCurrentEngineerEligibleForEdit:${_userProvider.user.username}"); + + bool isCurrentRequestCompletedOrClosed = isSender + ? ((_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) || (_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) + : ((_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) || (_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false)); + print("isCurrentRequestCompletedOrClosed:$isSender:$isCurrentRequestCompletedOrClosed:${_userProvider.user.username}"); + return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -184,9 +193,14 @@ class _DeviceTransferDetailsState extends State { ], ), if ((_userProvider.user?.type == UsersTypes.engineer)) - if (isSender - ? (!(_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) - : ((!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) && (_userProvider.user?.username == _model.receiverAssignedEmployeeName))) + if(isCurrentEngineerEligibleForEdit && !isCurrentRequestCompletedOrClosed) + + + // if (isSender + // ? (!(_model?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) + // : (!(_model?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) && !(_model?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false))) + // + "edit".toSvgAsset(height: 48, width: 48).onPress(() { Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender))); }), diff --git a/lib/views/pages/device_transfer/request_device_transfer.dart b/lib/views/pages/device_transfer/request_device_transfer.dart index 15e7b652..4f6cfdde 100644 --- a/lib/views/pages/device_transfer/request_device_transfer.dart +++ b/lib/views/pages/device_transfer/request_device_transfer.dart @@ -104,7 +104,7 @@ class _RequestDeviceTransferState extends State { AppTextFormField( controller: _receiverNameController, labelText: context.translation.receiverName, - validator: (text) => Validator.hasValue(text) ? null : context.translation.requiredField, + //validator: (text) => Validator.hasValue(text) ? null : context.translation.requiredField, onSaved: (text) {}, ), 8.height, @@ -159,6 +159,17 @@ class _RequestDeviceTransferState extends State { }, ), 8.height, + // SingleItemDropDownMenu( + // context: context, + // title: context.translation.room, + // initialValue: _assetDestination?.department, + // enabled: _assetDestination?.floor?.departments?.isNotEmpty ?? false, + // staticData: _assetDestination?.floor?.departments ?? [], + // onSelect: (value) { + // _assetDestination?.department = value; + // }, + // ), + 8.height, AppTextFormField( labelText: context.translation.room, onSaved: (text) { diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index 12ed61ff..7ff25223 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -13,8 +13,10 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset_transfer.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; +import 'package:test_sa/providers/asset_transfer/asset_transfer_status_provider.dart'; import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; +import 'package:test_sa/views/widgets/status/asset_status.dart'; import '../../../controllers/validator/validator.dart'; import '../../../extensions/text_extensions.dart'; @@ -90,6 +92,11 @@ class _UpdateDeviceTransferState extends State { _userProvider = Provider.of(context); _settingProvider = Provider.of(context); _deviceTransferProvider = Provider.of(context, listen: false); + + bool isTimerEnable = widget.isSender + ? (!(_formModel?.senderMachineStatusName?.toLowerCase()?.contains("close") ?? false) || !(_formModel?.senderMachineStatusName?.toLowerCase()?.contains("complete") ?? false)) + : (!(_formModel?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false) || !(_formModel?.receiverMachineStatusName?.toLowerCase()?.contains("complete") ?? false)); + return Scaffold( appBar: DefaultAppBar(title: context.translation.updateRequest), key: _scaffoldKey, @@ -114,22 +121,22 @@ class _UpdateDeviceTransferState extends State { initialValue: widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours, labelText: context.translation.travelingHours, onChange: (text) { - log(widget.isSender ? _formModel.senderStartDate : _formModel.receiverStartDate); - log(widget.isSender ? _formModel.senderEndDate : _formModel.receiverEndDate); + widget.isSender ? _formModel.senderTravelingHours = text : _formModel.receiverTravelingHours = text; }, onSaved: (value) { - widget.isSender ? _formModel.senderTravelingHours : _formModel.receiverTravelingHours = value; + widget.isSender ? _formModel.senderTravelingHours = value : _formModel.receiverTravelingHours = value; //_formModel?.workingHours = double.tryParse(value); // _formModel.travelingHours = value; }, textInputType: TextInputType.number, - validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", + //validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only", ), 8.height, AppTimer( label: context.translation.workingHours, timer: widget.isSender ? _formModel.senderTimer : _formModel.receiverTimer, - enabled: widget.isSender ? _formModel.senderEndDate == null : _formModel.receiverEndDate == null, + enabled: isTimerEnable, + // enabled: widget.isSender ? _formModel.senderEndDate == null : (_formModel?.receiverMachineStatusName?.toLowerCase()?.contains("close") ?? false), timerProgress: (isRunning) { isTimerRunning = isRunning; }, @@ -143,10 +150,8 @@ class _UpdateDeviceTransferState extends State { }, ), 8.height, - - ///TBD - Consumer(builder: (context, snapshot, _) { - return SingleItemDropDownMenu( + Consumer(builder: (context, snapshot, _) { + return SingleItemDropDownMenu( context: context, title: context.translation.reportStatus, initialValue: snapshot.items @@ -155,7 +160,6 @@ class _UpdateDeviceTransferState extends State { if (widget.isSender) { _formModel.senderMachineStatusName = value.name; _formModel.senderMachineStatusId = value.id; - print("${value.id}"); } else { _formModel.receiverMachineStatusName = value.name; _formModel.receiverMachineStatusId = value.id;