diff --git a/lib/controllers/providers/api/asset_transfer_provider.dart b/lib/controllers/providers/api/asset_transfer_provider.dart index 8b5099cb..06da088c 100644 --- a/lib/controllers/providers/api/asset_transfer_provider.dart +++ b/lib/controllers/providers/api/asset_transfer_provider.dart @@ -170,7 +170,7 @@ class AssetTransferProvider extends ChangeNotifier { stateCode = response.statusCode; if (response.statusCode >= 200 && response.statusCode < 300) { reset(); - Fluttertoast.showToast(msg: context.translation.successfulRequestMessage); + // Fluttertoast.showToast(msg: context.translation.successfulRequestMessage); Navigator.of(context).pop(); // oldModel.fromDeviceTransfer( // DeviceTransfer.fromJson( @@ -181,7 +181,7 @@ class AssetTransferProvider extends ChangeNotifier { } else { Fluttertoast.showToast(msg: "${context.translation.failedToCompleteRequest} :${json.decode(response.body)['message']}"); } - Navigator.pop(context); + Navigator.pop(context,true); return response.statusCode; } catch (error) { Navigator.pop(context); diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index 2fc750f8..4ccd2042 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -78,7 +78,7 @@ class _DeviceTransferDetailsState extends State { _buildTextWidget('${context.translation.model} : ${_model?.modelName ?? ""}'), _buildTextWidget('${context.translation.sn} : ${_model?.assetSerialNo ?? ""}'), if (_model?.receiverEndUserName != null) _buildTextWidget('${context.translation.receiverName} : ${_model?.receiverEndUserName ?? ""}'), - _buildTextWidget('${context.translation.requestNo} : ${_model.transferCode ?? ""}'), + _buildTextWidget('${context.translation.requestNo} : ${_model?.transferCode ?? ""}'), if ((_model?.comment ?? "").isNotEmpty) ...[ 8.height, const Divider().defaultStyle(context), @@ -177,13 +177,13 @@ 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 isCurrentEngineerEligibleForEdit = isSender ? _model?.senderAssignedEmployeeId == _userProvider.user?.userID : _model?.receiverAssignedEmployeeId == _userProvider.user?.userID; + 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, @@ -207,8 +207,11 @@ class _DeviceTransferDetailsState extends State { // : (!(_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))); + "edit".toSvgAsset(height: 48, width: 48).onPress(() async { + bool isReload = (await Navigator.of(context).push(MaterialPageRoute(builder: (_) => UpdateDeviceTransfer(model: _model, isSender: isSender)))) as bool; + if (isReload ?? false) { + setState(() {}); + } }), ], ), diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index e1f3f0f7..7b6c56bd 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -1,5 +1,6 @@ import 'dart:convert'; import 'dart:developer'; +import 'dart:io'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -13,9 +14,11 @@ import 'package:test_sa/extensions/int_extensions.dart'; import 'package:test_sa/extensions/string_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/models/device/asset_transfer.dart'; +import 'package:test_sa/models/device/asset_transfer_attachment.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/images/multi_image_picker.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/status/asset_status.dart'; @@ -51,7 +54,10 @@ class _UpdateDeviceTransferState extends State { final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); + List _files = []; + _update() async { + if ((widget.isSender && _formModel?.senderTimer?.startAt == null) || (!widget.isSender && _formModel?.receiverTimer?.startAt == null)) { await Fluttertoast.showToast(msg: "Working Hours Required"); return false; @@ -66,6 +72,30 @@ class _UpdateDeviceTransferState extends State { return false; } _formKey.currentState.save(); + + if (widget.isSender) { + _formModel.senderAttachments = []; + } else { + _formModel.receiverAttachments = []; + } + + try { + for (var file in _files) { + String attachmentName = file.path; + if (attachmentName.contains("/")) { + attachmentName = file.path.split("/").last; + attachmentName = "$attachmentName|${base64Encode(file.readAsBytesSync())}"; + } + + if (widget.isSender) { + _formModel.senderAttachments.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); + } else { + _formModel.receiverAttachments.add(AssetTransferAttachment(id: 0, attachmentName: attachmentName)); + } + } + } catch (error) { + print(error); + } await _deviceTransferProvider.updateRequest(context, assetTransfer: _formModel); } @@ -77,6 +107,13 @@ class _UpdateDeviceTransferState extends State { @override void initState() { _formModel.fromDetails(widget.model); + + if (widget.isSender) { + _files = widget.model?.senderAttachments?.map((e) => File(e.attachmentName))?.toList(); + } else { + _files = widget.model?.receiverAttachments?.map((e) => File(e.attachmentName))?.toList(); + } + super.initState(); } @@ -175,6 +212,8 @@ class _UpdateDeviceTransferState extends State { ); }), 8.height, + MultiFilesPicker(label: context.translation.attachImage, files: _files), + 8.height, AppTextFormField( initialValue: widget.isSender ? _formModel.senderComment : _formModel.receiverComment, labelText: context.translation.comments, @@ -221,7 +260,7 @@ class _UpdateDeviceTransferState extends State { children: [ context.translation.transferDetails.heading5(context), 8.height, - '${context.translation.assetName}: ${_formModel.assetName}'.bodyText(context), + '${context.translation.assetName}: ${_formModel.assetName.cleanupWhitespace.capitalizeFirstOfEach}'.bodyText(context), ///TBDZ '${context.translation.requesterName}: '.bodyText(context),