Status for both sender and receiver is synchronized.

main_design2.0
zaid_daoud 3 years ago
parent 11f95b9578
commit 96c9515e87

@ -1,7 +1,5 @@
import 'dart:convert'; import 'dart:convert';
import 'dart:developer';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:fluttertoast/fluttertoast.dart'; import 'package:fluttertoast/fluttertoast.dart';
import 'package:http/http.dart' as http; import 'package:http/http.dart' as http;
@ -23,6 +21,7 @@ class ApiManager {
Future<http.Response> get( Future<http.Response> get(
String url, { String url, {
Map<String, String> headers, Map<String, String> headers,
enableToastMessage = true,
}) async { }) async {
headers ??= {}; headers ??= {};
@ -34,7 +33,7 @@ class ApiManager {
http.Response response = await http.get(_url, headers: headers); http.Response response = await http.get(_url, headers: headers);
if (jsonDecode(response.body) is Map<String, dynamic>) { if (jsonDecode(response.body) is Map<String, dynamic>) {
final message = jsonDecode(response.body)["message"]; final message = jsonDecode(response.body)["message"];
if (message != null && message.toString().isNotEmpty) { if (message != null && message.toString().isNotEmpty && enableToastMessage) {
Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG); Fluttertoast.showToast(msg: message ?? "", toastLength: Toast.LENGTH_LONG);
} }
} }

@ -87,6 +87,7 @@ class URLs {
static get requestDeviceTransfer => "$_baseUrl/AssetTransfer/AddAssetTransfer"; // get static get requestDeviceTransfer => "$_baseUrl/AssetTransfer/AddAssetTransfer"; // get
static get updateDeviceTransfer => "$_baseUrl/AssetTransfer/UpdateAssetTransfer"; // get static get updateDeviceTransfer => "$_baseUrl/AssetTransfer/UpdateAssetTransfer"; // get
static get getDeviceTransfer => "$_baseUrl/AssetTransfer/GetAssetTransfers"; // get static get getDeviceTransfer => "$_baseUrl/AssetTransfer/GetAssetTransfers"; // get
static get getAssetTransferById => "$_baseUrl/AssetTransfer/GetAssetTransferById"; // get
// employee // employee
static get getEmployees => "$_baseUrl/Lookups/GetLookup?lookupEnum=33"; // get static get getEmployees => "$_baseUrl/Lookups/GetLookup?lookupEnum=33"; // get

@ -109,6 +109,23 @@ class DeviceTransferProvider extends ChangeNotifier {
} }
} }
Future<DeviceTransfer> getRequestById({int assetTransferId}) async {
Response response;
try {
response = await ApiManager.instance.get(
URLs.getAssetTransferById + "?assetTransferId=$assetTransferId",
enableToastMessage: false,
);
if (response.statusCode >= 200 && response.statusCode < 300) {
return DeviceTransfer.fromJson(json.decode(response.body)["data"]);
}
return null;
} catch (error) {
print(error);
return null;
}
}
Future<int> createRequest({ Future<int> createRequest({
@required String host, @required String host,
@required User user, @required User user,

@ -5,7 +5,6 @@ import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart'
import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/models/device/device_transfer.dart'; import 'package:test_sa/models/device/device_transfer.dart';
import 'package:test_sa/models/device/device_transfer_info.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
@ -13,6 +12,7 @@ import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart'
import 'package:test_sa/views/widgets/buttons/app_back_button.dart'; import 'package:test_sa/views/widgets/buttons/app_back_button.dart';
import 'package:test_sa/views/widgets/buttons/app_small_button.dart'; import 'package:test_sa/views/widgets/buttons/app_small_button.dart';
import 'package:test_sa/views/widgets/device_trancfer/device_transfer_info_section.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_info_section.dart';
import 'package:test_sa/views/widgets/loaders/app_loading.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart'; import 'package:test_sa/views/widgets/requests/info_row.dart';
@ -28,7 +28,7 @@ class DeviceTransferDetails extends StatefulWidget {
} }
class _DeviceTransferDetailsState extends State<DeviceTransferDetails> { class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
final DeviceTransferInfo _model = DeviceTransferInfo(); DeviceTransfer _model;
bool _isSender = false; bool _isSender = false;
bool _isReceiver = false; bool _isReceiver = false;
UserProvider _userProvider; UserProvider _userProvider;
@ -41,21 +41,34 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
@override @override
void initState() { void initState() {
_model = widget.model;
super.initState(); super.initState();
} }
Future<void> _getDeviceTransfer() async {
print("====== object");
_model = await Provider.of<DeviceTransferProvider>(context).getRequestById(assetTransferId: widget.model.id);
print("====== object2");
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold(
key: _scaffoldKey,
body: SafeArea(
child: FutureBuilder(
future: _getDeviceTransfer(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const ALoading();
} else {
_subtitle = AppLocalization.of(context).subtitle; _subtitle = AppLocalization.of(context).subtitle;
_userProvider = Provider.of<UserProvider>(context); _userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context); _settingProvider = Provider.of<SettingProvider>(context);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context); _deviceTransferProvider = Provider.of<DeviceTransferProvider>(context);
_isSender = _userProvider.user.userID == widget.model.sender?.userId; _isSender = _userProvider.user.userID == _model.sender?.userId;
_isReceiver = _userProvider.user.userID == widget.model.receiver?.userId; _isReceiver = _userProvider.user.userID == _model.receiver?.userId;
return Scaffold( return Form(
key: _scaffoldKey,
body: SafeArea(
child: Form(
key: _formKey, key: _formKey,
child: LoadingManager( child: LoadingManager(
isLoading: _isLoading, isLoading: _isLoading,
@ -90,39 +103,39 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
children: [ children: [
RequestInfoRow( RequestInfoRow(
title: "Transfer Id", title: "Transfer Id",
info: widget.model.title?.toString(), info: _model.title?.toString(),
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.assetName, title: _subtitle.assetName,
info: widget.model.device.assetName, info: _model.device.assetName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.assetSN, title: _subtitle.assetSN,
info: widget.model.device.serialNumber, info: _model.device.serialNumber,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.assetNumber, title: _subtitle.assetNumber,
info: widget.model.device.number, info: _model.device.number,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.destinationSite, title: _subtitle.destinationSite,
info: widget.model.device.destSiteName, info: _model.device.destSiteName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.building, title: _subtitle.building,
info: widget.model.device.destBuildingName, info: _model.device.destBuildingName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.floor, title: _subtitle.floor,
info: widget.model.device.destFloor, info: _model.device.destFloor,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.department, title: _subtitle.department,
info: widget.model.device.destDepartmentName, info: _model.device.destDepartmentName,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.room, title: _subtitle.room,
info: widget.model.device.destRoom, info: _model.device.destRoom,
), ),
RequestInfoRow( RequestInfoRow(
title: _subtitle.actions, title: _subtitle.actions,
@ -141,7 +154,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
? () { ? () {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer( builder: (_) => UpdateDeviceTransfer(
model: widget.model, model: _model,
isSender: true, isSender: true,
))); )));
} }
@ -151,7 +164,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
DeviceTransferInfoSection( DeviceTransferInfoSection(
info: widget.model.sender, info: _model.sender,
), ),
const SizedBox(height: 8), const SizedBox(height: 8),
Row( Row(
@ -163,21 +176,22 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
ASmallButton( ASmallButton(
text: _subtitle.edit, text: _subtitle.edit,
onPressed: (_isReceiver || false) onPressed: (_isReceiver || false)
? () { ? () async {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer( builder: (_) => UpdateDeviceTransfer(
model: widget.model, model: _model,
isSender: false, isSender: false,
))); ),
),
);
} }
: null, : null,
), ),
], ],
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
DeviceTransferInfoSection( DeviceTransferInfoSection(info: _model.receiver),
info: widget.model.receiver,
),
], ],
), ),
), ),
@ -185,7 +199,9 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
], ],
), ),
), ),
), );
}
}),
), ),
); );
} }

@ -72,7 +72,6 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
); );
_validate = false; _validate = false;
Navigator.of(context).pop(); Navigator.of(context).pop();
Navigator.of(context).pop();
} }
} }

@ -16,7 +16,7 @@ class DeviceTransferList extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (items.length == 0) { if (items.isEmpty) {
Subtitle subtitle = AppLocalization.of(context).subtitle; Subtitle subtitle = AppLocalization.of(context).subtitle;
return NoItemFound( return NoItemFound(
message: subtitle.noServiceRequestFound, message: subtitle.noServiceRequestFound,
@ -33,11 +33,8 @@ class DeviceTransferList extends StatelessWidget {
return DeviceTransferItem( return DeviceTransferItem(
index: itemIndex, index: itemIndex,
item: items[itemIndex], item: items[itemIndex],
onPressed: (model) { onPressed: (model) async {
Navigator.of(context).push(MaterialPageRoute( Navigator.of(context).push(MaterialPageRoute(builder: (_) => DeviceTransferDetails(model: model)));
builder: (_) => DeviceTransferDetails(
model: model,
)));
}, },
); );
}), }),

Loading…
Cancel
Save