Status for both sender and receiver is synchronized.

main_design2.0
zaid_daoud 2 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,151 +41,167 @@ 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) {
_subtitle = AppLocalization.of(context).subtitle;
_userProvider = Provider.of<UserProvider>(context);
_settingProvider = Provider.of<SettingProvider>(context);
_deviceTransferProvider = Provider.of<DeviceTransferProvider>(context);
_isSender = _userProvider.user.userID == widget.model.sender?.userId;
_isReceiver = _userProvider.user.userID == widget.model.receiver?.userId;
return Scaffold( return Scaffold(
key: _scaffoldKey, key: _scaffoldKey,
body: SafeArea( body: SafeArea(
child: Form( child: FutureBuilder(
key: _formKey, future: _getDeviceTransfer(),
child: LoadingManager( builder: (context, snapshot) {
isLoading: _isLoading, if (snapshot.connectionState == ConnectionState.waiting) {
isFailedLoading: false, return const ALoading();
stateCode: 200, } else {
onRefresh: () async {}, _subtitle = AppLocalization.of(context).subtitle;
child: Column( _userProvider = Provider.of<UserProvider>(context);
children: [ _settingProvider = Provider.of<SettingProvider>(context);
Container( _deviceTransferProvider = Provider.of<DeviceTransferProvider>(context);
color: Theme.of(context).colorScheme.primary, _isSender = _userProvider.user.userID == _model.sender?.userId;
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4), _isReceiver = _userProvider.user.userID == _model.receiver?.userId;
child: Row( return Form(
children: [ key: _formKey,
const ABackButton(), child: LoadingManager(
Expanded( isLoading: _isLoading,
child: Center( isFailedLoading: false,
child: Text( stateCode: 200,
_subtitle.details, onRefresh: () async {},
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),
const SizedBox(width: 58),
],
),
),
Expanded(
child: SingleChildScrollView(
padding: EdgeInsets.all(16 * AppStyle.getScaleFactor(context)),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
RequestInfoRow( Container(
title: "Transfer Id", color: Theme.of(context).colorScheme.primary,
info: widget.model.title?.toString(), padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
), child: Row(
RequestInfoRow( children: [
title: _subtitle.assetName, const ABackButton(),
info: widget.model.device.assetName, Expanded(
), child: Center(
RequestInfoRow( child: Text(
title: _subtitle.assetSN, _subtitle.details,
info: widget.model.device.serialNumber, style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
), ),
RequestInfoRow( ),
title: _subtitle.assetNumber,
info: widget.model.device.number,
),
RequestInfoRow(
title: _subtitle.destinationSite,
info: widget.model.device.destSiteName,
),
RequestInfoRow(
title: _subtitle.building,
info: widget.model.device.destBuildingName,
),
RequestInfoRow(
title: _subtitle.floor,
info: widget.model.device.destFloor,
),
RequestInfoRow(
title: _subtitle.department,
info: widget.model.device.destDepartmentName,
),
RequestInfoRow(
title: _subtitle.room,
info: widget.model.device.destRoom,
),
RequestInfoRow(
title: _subtitle.actions,
info: "",
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: Text("Sender", style: Theme.of(context).textTheme.headline6),
),
if (_userProvider.user?.type == UsersTypes.engineer)
ASmallButton(
text: _subtitle.edit,
onPressed: (_isSender || false)
? () {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: widget.model,
isSender: true,
)));
}
: null,
), ),
], const SizedBox(width: 58),
), ],
const SizedBox(height: 12), ),
DeviceTransferInfoSection(
info: widget.model.sender,
), ),
const SizedBox(height: 8), Expanded(
Row( child: SingleChildScrollView(
children: [ padding: EdgeInsets.all(16 * AppStyle.getScaleFactor(context)),
Expanded( child: Column(
child: Text("Receiver", style: Theme.of(context).textTheme.headline6), crossAxisAlignment: CrossAxisAlignment.start,
children: [
RequestInfoRow(
title: "Transfer Id",
info: _model.title?.toString(),
),
RequestInfoRow(
title: _subtitle.assetName,
info: _model.device.assetName,
),
RequestInfoRow(
title: _subtitle.assetSN,
info: _model.device.serialNumber,
),
RequestInfoRow(
title: _subtitle.assetNumber,
info: _model.device.number,
),
RequestInfoRow(
title: _subtitle.destinationSite,
info: _model.device.destSiteName,
),
RequestInfoRow(
title: _subtitle.building,
info: _model.device.destBuildingName,
),
RequestInfoRow(
title: _subtitle.floor,
info: _model.device.destFloor,
),
RequestInfoRow(
title: _subtitle.department,
info: _model.device.destDepartmentName,
),
RequestInfoRow(
title: _subtitle.room,
info: _model.device.destRoom,
),
RequestInfoRow(
title: _subtitle.actions,
info: "",
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: Text("Sender", style: Theme.of(context).textTheme.headline6),
),
if (_userProvider.user?.type == UsersTypes.engineer)
ASmallButton(
text: _subtitle.edit,
onPressed: (_isSender || false)
? () {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: _model,
isSender: true,
)));
}
: null,
),
],
),
const SizedBox(height: 12),
DeviceTransferInfoSection(
info: _model.sender,
),
const SizedBox(height: 8),
Row(
children: [
Expanded(
child: Text("Receiver", style: Theme.of(context).textTheme.headline6),
),
if (_userProvider.user?.type == UsersTypes.engineer)
ASmallButton(
text: _subtitle.edit,
onPressed: (_isReceiver || false)
? () async {
Navigator.of(context).push(
MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: _model,
isSender: false,
),
),
);
}
: null,
),
],
),
const SizedBox(height: 12),
DeviceTransferInfoSection(info: _model.receiver),
],
), ),
if (_userProvider.user?.type == UsersTypes.engineer) ),
ASmallButton(
text: _subtitle.edit,
onPressed: (_isReceiver || false)
? () {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: widget.model,
isSender: false,
)));
}
: null,
),
],
),
const SizedBox(height: 12),
DeviceTransferInfoSection(
info: widget.model.receiver,
), ),
], ],
), ),
), ),
), );
], }
), }),
),
),
), ),
); );
} }

@ -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