You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/views/pages/device_transfer/device_transfer_details.dart

258 lines
11 KiB
Dart

3 years ago
import 'package:flutter/material.dart';
2 years ago
import 'package:flutter_svg/svg.dart';
3 years ago
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart';
3 years ago
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
2 years ago
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';
3 years ago
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/app_style/sizing.dart';
2 years ago
import 'package:test_sa/views/pages/device_transfer/update_device_transfer.dart';
3 years ago
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/loaders/app_loading.dart';
3 years ago
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/requests/info_row.dart';
2 years ago
import '../../../extensions/text_extensions.dart';
2 years ago
import '../../../models/enums/user_types.dart';
2 years ago
import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/requests/request_status.dart';
2 years ago
3 years ago
class DeviceTransferDetails extends StatefulWidget {
final AssetTransfer model;
3 years ago
const DeviceTransferDetails({Key key, this.model}) : super(key: key);
@override
State<DeviceTransferDetails> createState() => _DeviceTransferDetailsState();
}
class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
AssetTransfer _model;
3 years ago
UserProvider _userProvider;
bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
_model = widget.model;
3 years ago
super.initState();
}
Future<void> _getDeviceTransfer() async {
_model = await Provider.of<AssetTransferProvider>(context).getRequestById(assetTransferId: widget.model.id);
}
3 years ago
@override
Widget build(BuildContext context) {
return Scaffold(
2 years ago
appBar: DefaultAppBar(title: context.translation.deviceTransferDetails),
3 years ago
key: _scaffoldKey,
body: SafeArea(
child: FutureBuilder(
future: _getDeviceTransfer(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const ALoading();
} else {
_userProvider = Provider.of<UserProvider>(context);
return Form(
key: _formKey,
child: LoadingManager(
isLoading: _isLoading,
isFailedLoading: false,
stateCode: 200,
onRefresh: () async {},
child: Column(
children: [
2 years ago
_buildDetailsCard(
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
2 years ago
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
2 years ago
Row(
children: [
/// TBD
2 years ago
// StatusLabel(
// label: "",
// id: 0,
// textColor: AColors.getPriorityStatusTextColor(0),
// backgroundColor: AColors.getPriorityStatusColor(0)),
2 years ago
8.width,
/// TBD
2 years ago
//StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
2 years ago
],
),
2 years ago
1.width.expanded,
Text(widget.model.createdOn != null ?widget.model.createdOn.toServiceRequestCardFormat:"", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
),
2 years ago
8.height,
Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
2 years ago
_buildTextWidget('${context.translation.assetName} : ${_model.assetName}'),
_buildTextWidget('${context.translation.assetNumber} : ${_model.assetNumber}'),
_buildTextWidget('${context.translation.model} : ${_model.modelName}'),
_buildTextWidget('${context.translation.sn} : ${_model.assetSerialNo}'),
],
),
2 years ago
8.height,
],
2 years ago
).paddingAll(14)
),
// sender card
_buildCard(
isSender: true,
site: _model.senderSiteName??"",
/// TBD
unit: _model.senderDepartmentName??"",
comment: _model.senderComment??"",
/// TBD
2 years ago
statusLabel: _model.senderMachineStatusName != null? StatusLabel(
label: _model.senderMachineStatusName,
2 years ago
id: _model.senderMachineStatusId,
2 years ago
textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.senderMachineStatusName)),
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.senderMachineStatusName))):null,
2 years ago
),
// receiver card
_buildCard(
isSender: false,
site: _model.destSiteName??"",
/// TBD
unit: _model.destDepartmentName??"",
comment: _model.receiverComment??"",
/// TBD
2 years ago
statusLabel: _model.receiverMachineStatusName != null ? StatusLabel(
2 years ago
label: _model.receiverMachineStatusName??"",
id: _model.receiverMachineStatusId,
2 years ago
textColor: AColors.getRequestStatusTextColor(getIdstatus(_model.receiverMachineStatusName)),
backgroundColor: AColors.getRequestStatusColor(getIdstatus(_model.receiverMachineStatusName))):null,
),
],
3 years ago
),
),
);
}
},
),
),
3 years ago
);
}
2 years ago
_buildDetailsCard(Widget widget){
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
child: widget,
).paddingOnly(top: 14, start: 14, end: 14);
}
_buildTextWidget(String text){
return Text(
text, style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
);
}
_buildCard({@required String site, @required String unit, @required String comment, @required bool isSender, StatusLabel statusLabel}){
return Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
statusLabel??Container(),
8.height,
Text(isSender?context.translation.senderDetails:context.translation.receiverDetails,
style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
],
),
if (_userProvider.user?.type == UsersTypes.engineer)
CircleAvatar(
radius: 25,
backgroundColor: AppColor.neutral30,
child: CircleAvatar(
radius: 24,
backgroundColor: Colors.white,
child: Padding(
padding: const EdgeInsets.only(left: 3.0),
child: SvgPicture.asset('assets/images/update.svg'),
),
),
).onPress(
isSender ? _model.senderMachineStatusName == "Closed"
? null
: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: _model,
isSender: isSender,
)));
}
: _model.receiverMachineStatusName == "Closed"
? null
: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (_) => UpdateDeviceTransfer(
model: _model,
isSender: isSender,
)));
}),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildTextWidget('${context.translation.site} : $site'),
_buildTextWidget('${context.translation.unite} : $unit'),
8.height,
const Divider(color: Color(0xFFEAF1F4), height: 1, thickness: 1),
8.height,
_buildTextWidget(comment),
],
),
8.height,
],
).paddingAll(14),
).paddingOnly(top: 14, start: 14, end: 14);
}
2 years ago
int getIdstatus(String status){
switch(status){
case "Closed":
return 3 ;
break;
case "Open":
return 1 ;
break;
case "In Progress":
return 2;
break;
}
}
2 years ago
3 years ago
}