device transfer

main_design2.0
nextwo 2 years ago
parent 402f7513bd
commit 62f6f135bb

@ -271,6 +271,13 @@
"requestedThrough" : "الطلب عبر", "requestedThrough" : "الطلب عبر",
"typeOfRequest" : "نوع الطلب", "typeOfRequest" : "نوع الطلب",
"assetDetails" : "تفاصيل الجهاز", "assetDetails" : "تفاصيل الجهاز",
"deviceTransfer" : "نقل جهاز ",
"deviceTransferRequest" : "طلب نقل جهاز ",
"deviceTransferDetails" : "تفاصيل نقل جهاز ",
"transferDetails" : "تفاصيل النقل" ,
"senderDetails" : "تفاصيل المرسل",
"receiverDetails" : "تفاصيل المستقبل",
"assetDetails" : "تفاصيل الجهاز",
"searchBy" : "إبحث بـ", "searchBy" : "إبحث بـ",
"searchByDesc" : "إبحث بأي من المعايير التالية", "searchByDesc" : "إبحث بأي من المعايير التالية",
"location" : "الموقع", "location" : "الموقع",

@ -276,6 +276,13 @@
"receiverDetails" : "Receiver Details", "receiverDetails" : "Receiver Details",
"requestedThrough" : "Requested Through", "requestedThrough" : "Requested Through",
"typeOfRequest" : "Type of Request", "typeOfRequest" : "Type of Request",
"deviceTransfer" : "Device Transfer",
"deviceTransferRequest" : "Device Transfer Request",
"deviceTransferDetails" : "Device Transfer Details",
"transferDetails" : "Transfer Details" ,
"senderDetails" :"Sender Details",
"receiverDetails" :"Receiver Details",
"typeOfRequest" : "Type of Request",
"searchBy" : "Search by", "searchBy" : "Search by",
"searchByDesc" : "Search by any of the following criteria", "searchByDesc" : "Search by any of the following criteria",
"location" : "Location", "location" : "Location",

@ -39,6 +39,32 @@ class AssetTransfer {
this.receiverTravelingHours, this.receiverTravelingHours,
this.receiverEngSignature, this.receiverEngSignature,
this.receiverAttachments, this.receiverAttachments,
this.assetNumber,
this.assetName,
this.manufacturerName,
this.modelName,
this.assetSerialNo,
this.destDepartmentName,
this.destBuildingName,
this.applied,
this.createdOn,
this.destFloorName,
this.destSiteName,
this.manufacturerId,
this.modelId,
this.modifiedOn,
this.receiverAssignedEmployeeName,
this.receiverEngSignatureUrl,
this.receiverMachineStatusName,
this.senderAssignedEmployeeName,
this.senderBuildingName,
this.senderDepartmentName,
this.senderEngSignatureUrl,
this.senderFloorName,
this.senderMachineStatusName,
this.senderSiteName,
this.supplierId,
this.supplierName
}); });
AssetTransfer.fromJson(dynamic json) { AssetTransfer.fromJson(dynamic json) {
@ -84,11 +110,44 @@ class AssetTransfer {
receiverAttachments.add(AssetTransferAttachment.fromJson(v)); receiverAttachments.add(AssetTransferAttachment.fromJson(v));
}); });
} }
assetNumber= json['assetNumber'];
assetName= json['assetName'];
manufacturerName= json['manufacturerName'];
modelName= json['modelName'];
assetSerialNo= json['assetSerialNo'];
destDepartmentName= json['destDepartmentName'];
destBuildingName= json['destBuildingName'];
applied= json['applied'];
createdOn= json['createdOn'];
destFloorName= json['destFloorName'];
destSiteName= json['destSiteName'];
manufacturerId= json['manufacturerId'];
modelId= json['modelId'];
modifiedOn= json['modifiedOn'];
receiverAssignedEmployeeName= json['receiverAssignedEmployeeName'];
receiverEngSignatureUrl= json['receiverEngSignatureUrl'];
receiverMachineStatusName= json['receiverMachineStatusName'];
senderAssignedEmployeeName= json['senderAssignedEmployeeName'];
senderBuildingName= json['senderBuildingName'];
senderDepartmentName= json['senderDepartmentName'];
senderEngSignatureUrl= json['senderEngSignatureUrl'];
senderFloorName= json['senderFloorName'];
senderMachineStatusName= json['senderMachineStatusName'];
senderSiteName= json['senderSiteName'];
supplierId= json['supplierId'];
supplierName= json['supplierName'];
} }
num id; num id;
num transferNo; num transferNo;
String transferCode; String transferCode;
String assetSerialNo;
num assetId; num assetId;
String assetNumber;
String assetName;
int modelId;
String modelName;
int manufacturerId;
String manufacturerName;
num destSiteId; num destSiteId;
num destBuildingId; num destBuildingId;
num destFloorId; num destFloorId;
@ -117,6 +176,26 @@ class AssetTransfer {
String receiverTravelingHours; String receiverTravelingHours;
String receiverEngSignature; String receiverEngSignature;
List<AssetTransferAttachment> receiverAttachments; List<AssetTransferAttachment> receiverAttachments;
num supplierId;
String supplierName;
String destSiteName;
String destBuildingName;
String destFloorName;
String destDepartmentName;
String senderSiteName;
String senderBuildingName;
String senderFloorName;
String senderDepartmentName;
String senderAssignedEmployeeName;
String senderMachineStatusName;
String senderEngSignatureUrl;
String receiverAssignedEmployeeName;
String receiverMachineStatusName;
String receiverEngSignatureUrl;
bool applied;
String createdOn;
String modifiedOn;
AssetTransfer copyWith({ AssetTransfer copyWith({
num id, num id,
num transferNo, num transferNo,
@ -150,6 +229,33 @@ class AssetTransfer {
String receiverTravelingHours, String receiverTravelingHours,
String receiverEngSignature, String receiverEngSignature,
List<AssetTransferAttachment> receiverAttachments, List<AssetTransferAttachment> receiverAttachments,
num supplierId,
String supplierName,
String destSiteName,
String destBuildingName,
String destFloorName,
String destDepartmentNam,
String senderSiteName,
String senderBuildingName,
String senderFloorName,
String senderDepartmentName,
String senderAssignedEmployeeName,
String senderMachineStatusName,
String senderEngSignatureUrl,
String receiverAssignedEmployeeName,
String receiverMachineStatusName,
String receiverEngSignatureUrl,
bool applied,
String createdOn,
String modifiedOn,
String assetSerialNo,
String assetNumber,
String assetName,
int modelId,
String modelName,
int manufacturerId,
String manufacturerName,
String destDepartmentName
}) => }) =>
AssetTransfer( AssetTransfer(
id: id ?? this.id, id: id ?? this.id,
@ -184,6 +290,32 @@ class AssetTransfer {
receiverTravelingHours: receiverTravelingHours ?? this.receiverTravelingHours, receiverTravelingHours: receiverTravelingHours ?? this.receiverTravelingHours,
receiverEngSignature: receiverEngSignature ?? this.receiverEngSignature, receiverEngSignature: receiverEngSignature ?? this.receiverEngSignature,
receiverAttachments: receiverAttachments ?? this.receiverAttachments, receiverAttachments: receiverAttachments ?? this.receiverAttachments,
supplierId : supplierId?? this.supplierId,
supplierName: supplierName??this.supplierName,
destSiteName: destSiteName??this.destSiteName,
destBuildingName: destBuildingName?? this.destBuildingName,
destFloorName: destFloorName??this.destFloorName,
destDepartmentName: destDepartmentName?? this.destDepartmentName,
senderSiteName: senderSiteName??this.senderSiteName,
senderBuildingName: senderBuildingName??this.senderBuildingName,
senderFloorName: senderFloorName??this.senderFloorName,
senderDepartmentName: senderDepartmentName??this.senderDepartmentName,
senderAssignedEmployeeName: senderAssignedEmployeeName??this.senderAssignedEmployeeName,
senderMachineStatusName: senderMachineStatusName??this.senderMachineStatusName,
senderEngSignatureUrl: senderEngSignatureUrl??this.senderEngSignatureUrl,
receiverAssignedEmployeeName: receiverAssignedEmployeeName?? this.receiverAssignedEmployeeName,
receiverMachineStatusName: receiverMachineStatusName??this.receiverMachineStatusName,
receiverEngSignatureUrl: receiverEngSignatureUrl??this.receiverEngSignatureUrl,
applied: applied??this.applied,
createdOn: createdOn?? this.createdOn,
modifiedOn: modifiedOn??this.modifiedOn,
assetSerialNo:assetSerialNo??this.assetSerialNo,
assetNumber:assetNumber??this.assetNumber,
assetName:assetName??this.assetName,
modelId:modelId??this.modelId,
modelName:modelName??this.modelName,
manufacturerId:manufacturerId??this.manufacturerId,
manufacturerName:manufacturerName??this.manufacturerName
); );
Map<String, dynamic> toJson() { Map<String, dynamic> toJson() {
final map = <String, dynamic>{}; final map = <String, dynamic>{};
@ -223,6 +355,32 @@ class AssetTransfer {
if (receiverAttachments != null) { if (receiverAttachments != null) {
map['receiverAttachments'] = receiverAttachments.map((v) => v.toJson()).toList(); map['receiverAttachments'] = receiverAttachments.map((v) => v.toJson()).toList();
} }
map["supplierId"] = supplierId;
map["supplierName"] =supplierName;
map["destSiteName"] =destSiteName;
map["destBuildingName"] =destBuildingName;
map["destFloorName"] =destFloorName;
map["destDepartmentName"] =destDepartmentName;
map["senderSiteName"] =senderSiteName;
map["senderBuildingName"] = senderBuildingName;
map["senderFloorName"] = senderFloorName;
map["senderDepartmentName"] = senderDepartmentName;
map["senderAssignedEmployeeName"] = senderAssignedEmployeeName;
map["senderMachineStatusName"] = senderMachineStatusName;
map["senderEngSignatureUrl"] = senderEngSignatureUrl;
map["receiverAssignedEmployeeName"] = receiverAssignedEmployeeName;
map["receiverMachineStatusName"] = receiverMachineStatusName;
map["receiverEngSignatureUrl"] = receiverEngSignatureUrl;
map["applied"] = applied;
map["createdOn"] = createdOn;
map["modifiedOn"] = modifiedOn;
map["assetSerialNo"] =assetSerialNo;
map["assetNumber"] =assetNumber;
map["assetName"] =assetName;
map["modelId"] =modelId;
map["modelName"] =modelName;
map["manufacturerId"] =manufacturerId;
map["manufacturerName"] =manufacturerName;
return map; return map;
} }

@ -1,19 +1,28 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart'; import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/asset_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/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
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.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';
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/loaders/app_loading.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';
import '../../../extensions/text_extensions.dart';
import '../../../models/enums/user_types.dart'; import '../../../models/enums/user_types.dart';
import '../../../new_views/app_style/app_color.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/requests/request_status.dart';
class DeviceTransferDetails extends StatefulWidget { class DeviceTransferDetails extends StatefulWidget {
final AssetTransfer model; final AssetTransfer model;
@ -26,8 +35,6 @@ class DeviceTransferDetails extends StatefulWidget {
class _DeviceTransferDetailsState extends State<DeviceTransferDetails> { class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
AssetTransfer _model; AssetTransfer _model;
bool _isSender = false;
bool _isReceiver = false;
UserProvider _userProvider; UserProvider _userProvider;
bool _isLoading = false; bool _isLoading = false;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
@ -46,6 +53,7 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.deviceTransferDetails),
key: _scaffoldKey, key: _scaffoldKey,
body: SafeArea( body: SafeArea(
child: FutureBuilder( child: FutureBuilder(
@ -55,8 +63,6 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
return const ALoading(); return const ALoading();
} else { } else {
_userProvider = Provider.of<UserProvider>(context); _userProvider = Provider.of<UserProvider>(context);
// _isSender = _userProvider.user.userID == _model.sender?.userId;
// _isReceiver = _userProvider.user.userID == _model.receiver?.userId;
return Form( return Form(
key: _formKey, key: _formKey,
child: LoadingManager( child: LoadingManager(
@ -66,129 +72,74 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
onRefresh: () async {}, onRefresh: () async {},
child: Column( child: Column(
children: [ children: [
Container( _buildDetailsCard(
color: Theme.of(context).colorScheme.primary, Column(
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Row(
children: [
const ABackButton(),
Expanded(
child: Center(
child: Text(
context.translation.details,
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(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
RequestInfoRow(
title: "Transfer Id",
info: "_model.title?.toString()",
),
RequestInfoRow(
title: context.translation.assetName,
info: "_model.device.assetName",
),
RequestInfoRow(
title: context.translation.assetSN,
info: "_model.device.serialNumber",
),
RequestInfoRow(
title: context.translation.assetNumber,
info: "_model.device.number",
),
RequestInfoRow(
title: context.translation.destinationSite,
info: "_model.device.destSiteName",
),
RequestInfoRow(
title: context.translation.building,
info: " _model.device.destBuildingName",
),
RequestInfoRow(
title: context.translation.floor,
info: "_model.device.destFloor",
),
RequestInfoRow(
title: context.translation.department,
info: "_model.device.destDepartmentName",
),
RequestInfoRow(
title: context.translation.room,
info: "_model.device.destRoom",
),
RequestInfoRow(
title: context.translation.actions,
info: "",
),
const SizedBox(height: 8),
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Expanded( Row(
child: Text("Sender", style: Theme.of(context).textTheme.headline6), children: [
/// TBD
StatusLabel(
label: "",
id: 0,
textColor: AColors.getPriorityStatusTextColor(0),
backgroundColor: AColors.getPriorityStatusColor(0)),
8.width,
/// TBD
StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
],
), ),
if (_userProvider.user?.type == UsersTypes.engineer) 1.width.expanded,
ASmallButton( Text(widget.model.createdOn != null ?widget.model.createdOn.toServiceRequestCardFormat:"", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
text: context.translation.edit,
// onPressed: (_isSender)
// ? (_model.sender.status?.name == "Closed"
// ? null
// : () {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => UpdateDeviceTransfer(
// model: _model,
// isSender: true,
// )));
// })
// : null,
),
], ],
), ),
const SizedBox(height: 12), 8.height,
// DeviceTransferInfoSection( Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
// info: _model.sender, 8.height,
// isSender: true, Column(
// ), crossAxisAlignment: CrossAxisAlignment.start,
const SizedBox(height: 8),
Row(
children: [ children: [
Expanded( _buildTextWidget('${context.translation.assetName} : ${_model.assetName}'),
child: Text("Receiver", style: Theme.of(context).textTheme.headline6), _buildTextWidget('${context.translation.assetNumber} : ${_model.assetNumber}'),
), _buildTextWidget('${context.translation.model} : ${_model.modelName}'),
if (_userProvider.user?.type == UsersTypes.engineer) _buildTextWidget('${context.translation.sn} : ${_model.assetSerialNo}'),
ASmallButton(
text: context.translation.edit,
// onPressed: (_isReceiver)
// ? (_model.receiver.status?.name == "Closed"
// ? null
// : () {
// Navigator.of(context).push(MaterialPageRoute(
// builder: (_) => UpdateDeviceTransfer(
// model: _model,
// isSender: false,
// )));
// })
// : null,
),
], ],
), ),
const SizedBox(height: 12), 8.height,
// DeviceTransferInfoSection(
// info: _model.receiver,
// isSender: false,
// ),
], ],
), ).paddingAll(14)
), ),
// sender card
_buildCard(
isSender: true,
site: _model.senderSiteName??"",
/// TBD
unit: _model.senderDepartmentName??"",
comment: _model.senderComment??"",
/// TBD
statusLabel: StatusLabel(
label: _model.senderMachineStatusName??"",
id: _model.senderMachineStatusId,
textColor: AColors.getRequestStatusTextColor(_model.senderMachineStatusId),
backgroundColor: AColors.getRequestStatusColor(_model.senderMachineStatusId)),
),
// receiver card
_buildCard(
isSender: false,
site: _model.destSiteName??"",
/// TBD
unit: _model.destDepartmentName??"",
comment: _model.receiverComment??"",
/// TBD
statusLabel: StatusLabel(
label: _model.receiverMachineStatusName??"",
id: _model.receiverMachineStatusId,
textColor: AColors.getRequestStatusTextColor(_model.receiverMachineStatusId),
backgroundColor: AColors.getRequestStatusColor(_model.receiverMachineStatusId)),
), ),
], ],
), ),
@ -200,4 +151,93 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
), ),
); );
} }
_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);
}
} }

@ -3,11 +3,13 @@ import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/asset_transfer_provider.dart'; import 'package:test_sa/controllers/providers/api/asset_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/extensions/context_extension.dart';
import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/colors.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/device_trancfer/device_transfer_list.dart'; import 'package:test_sa/views/widgets/device_trancfer/device_transfer_list.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart'; import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../widgets/buttons/app_icon_button.dart'; import '../../widgets/buttons/app_icon_button.dart';
class TrackDeviceTransferPage extends StatefulWidget { class TrackDeviceTransferPage extends StatefulWidget {
@ -31,6 +33,7 @@ class _TrackDeviceTransferPageState extends State<TrackDeviceTransferPage> with
_settingProvider = Provider.of<SettingProvider>(context); _settingProvider = Provider.of<SettingProvider>(context);
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.deviceTransfer),
body: SafeArea( body: SafeArea(
child: LoadingManager( child: LoadingManager(
isLoading: _deviceTransferProvider.isLoading, isLoading: _deviceTransferProvider.isLoading,
@ -47,52 +50,6 @@ class _TrackDeviceTransferPageState extends State<TrackDeviceTransferPage> with
children: [ children: [
Column( Column(
children: [ children: [
Container(
color: AColors.primaryColor,
padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 4),
child: Column(
children: [
Row(
children: [
const ABackButton(),
Expanded(
child: Center(
child: Text(
"Asset Transfer",
style: Theme.of(context).textTheme.headline6.copyWith(color: AColors.white, fontStyle: FontStyle.italic),
),
),
),
AIconButton(
iconData: Icons.search,
color: AColors.secondaryColor,
buttonSize: 42,
backgroundColor: AColors.white,
onPressed: () async {
// DeviceTransferSearch temp = await showModalBottomSheet(
// context: context,
// isScrollControlled: true,
// builder: (context) {
// return AssetTransferSearchDialog(initialSearchValue: _deviceTransferProvider.deviceTransferSearch);
// },
// );
// if (temp != null) {
// _deviceTransferProvider.deviceTransferSearch = temp;
// _deviceTransferProvider.reset();
// setState(() {});
// await _deviceTransferProvider.getRequests(
// user: _userProvider.user,
// host: _settingProvider.host,
// );
// }
},
),
const SizedBox(width: 16),
],
),
],
),
),
Expanded( Expanded(
child: DeviceTransferList( child: DeviceTransferList(
nextPage: _deviceTransferProvider.nextPage, nextPage: _deviceTransferProvider.nextPage,

@ -7,12 +7,14 @@ import 'package:test_sa/controllers/providers/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/models/device/asset_transfer.dart'; import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/subtitle.dart'; import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.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/titles/app_sub_title.dart'; import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart'; import '../../../../controllers/localization/localization.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
class UpdateDeviceTransfer extends StatefulWidget { class UpdateDeviceTransfer extends StatefulWidget {
final AssetTransfer model; final AssetTransfer model;
@ -90,133 +92,120 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
_settingProvider = Provider.of<SettingProvider>(context); _settingProvider = Provider.of<SettingProvider>(context);
_deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false); _deviceTransferProvider = Provider.of<AssetTransferProvider>(context, listen: false);
return Scaffold( return Scaffold(
appBar: DefaultAppBar(title: context.translation.updateRequest),
key: _scaffoldKey, key: _scaffoldKey,
body: Form( body: SafeArea(
key: _formKey, child: LoadingManager(
child: SafeArea( isLoading: _isLoading,
child: LoadingManager( isFailedLoading: false,
isLoading: _isLoading, stateCode: 200,
isFailedLoading: false, onRefresh: () async {},
stateCode: 200, child: Column(
onRefresh: () async {}, mainAxisAlignment: MainAxisAlignment.spaceBetween,
child: SingleChildScrollView( children: [
padding: EdgeInsets.all(12 * AppStyle.getScaleFactor(context)), SingleChildScrollView(
child: Column( padding: EdgeInsets.all(12 * AppStyle.getScaleFactor(context)),
crossAxisAlignment: CrossAxisAlignment.start, child: Column(
children: [ crossAxisAlignment: CrossAxisAlignment.start,
Center( children: [
child: Padding( ASubTitle("Comment"),
padding: const EdgeInsets.all(8.0), const SizedBox(
child: Text( height: 4,
"Edit Transfer Asset",
style: Theme.of(context).textTheme.headline5.copyWith(color: Theme.of(context).primaryColor, fontSize: 28, fontWeight: FontWeight.bold),
),
), ),
), // ATextFormField(
const SizedBox( // initialValue: _formModel?.comment,
height: 8, // textAlign: TextAlign.center,
), // style: Theme.of(context).textTheme.subtitle1,
ASubTitle("Comment"), // textInputType: TextInputType.text,
// onSaved: (value) {
const SizedBox( // _formModel.comment = value;
height: 4, // },
), // ),
// ATextFormField( const SizedBox(
// initialValue: _formModel?.comment, height: 8,
// textAlign: TextAlign.center, ),
// style: Theme.of(context).textTheme.subtitle1, ASubTitle(context.translation.travelingHours),
// textInputType: TextInputType.text, const SizedBox(
// onSaved: (value) { height: 4,
// _formModel.comment = value; ),
// }, // ATextFormField(
// ), // initialValue: _formModel?.travelingHours,
const SizedBox( // textAlign: TextAlign.center,
height: 8, // style: Theme.of(context).textTheme.subtitle1,
), // textInputType: TextInputType.number,
ASubTitle(context.translation.travelingHours), // onSaved: (value) {
const SizedBox( // _formModel.travelingHours = value;
height: 4, // },
), // ),
// ATextFormField( const SizedBox(
// initialValue: _formModel?.travelingHours, height: 16,
// textAlign: TextAlign.center, ),
// style: Theme.of(context).textTheme.subtitle1, ASubTitle(context.translation.workingHours),
// textInputType: TextInputType.number, const SizedBox(height: 8),
// onSaved: (value) { Row(
// _formModel.travelingHours = value; children: [
// }, // Expanded(
// ), // child: AppTimer(
const SizedBox( // timer: _formModel.timer,
height: 16, // onChange: (timer) async {
), // _formModel.timer = timer;
ASubTitle(context.translation.workingHours), // _formModel.workingHours = (((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0";
const SizedBox(height: 8), // return true;
Row( // },
children: [ // ),
// Expanded( // ),
// child: AppTimer( ],
// timer: _formModel.timer, ),
// onChange: (timer) async { const SizedBox(height: 16),
// _formModel.timer = timer; ASubTitle(context.translation.status),
// _formModel.workingHours = (((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0"; const SizedBox(
// return true; height: 4,
// },
// ),
// ),
],
),
const SizedBox(height: 16),
ASubTitle(context.translation.status),
const SizedBox(
height: 4,
),
// AssetStatusMenu(
// initialValue: _formModel.status,
// onSelect: (status) {
// if (status == null) return;
// _formModel.status = status;
// setState(() {});
// },
// ),
const SizedBox(
height: 16,
),
// MultiFilesPicker(
// label: "Attachments",
// files: _formModel.attachments,
// ),
const SizedBox(
height: 16,
),
const ASubTitle("Signature"),
// if(_validate && _formModel.signature == null)
// ASubTitle(_subtitle.requiredWord,color: Colors.red,),
const SizedBox(
height: 4,
),
// ESignature(
// oldSignature: widget.isSender ? widget.model.sender.engSignature : widget.model.receiver.engSignature,
// newSignature: _signature,
// onSaved: (signature) {
// _signature = signature;
// if (signature == null || signature.isEmpty) return;
// _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// // base64Encode(signature);
// },
// ),
Padding(
padding: const EdgeInsets.all(16.0),
child: AButton(
text: context.translation.update,
onPressed: _update,
), ),
), // AssetStatusMenu(
const SizedBox( // initialValue: _formModel.status,
height: 100, // onSelect: (status) {
) // if (status == null) return;
], // _formModel.status = status;
// setState(() {});
// },
// ),
const SizedBox(
height: 16,
),
// MultiFilesPicker(
// label: "Attachments",
// files: _formModel.attachments,
// ),
const SizedBox(
height: 16,
),
const ASubTitle("Signature"),
// if(_validate && _formModel.signature == null)
// ASubTitle(_subtitle.requiredWord,color: Colors.red,),
const SizedBox(
height: 4,
),
// ESignature(
// oldSignature: widget.isSender ? widget.model.sender.engSignature : widget.model.receiver.engSignature,
// newSignature: _signature,
// onSaved: (signature) {
// _signature = signature;
// if (signature == null || signature.isEmpty) return;
// _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// // base64Encode(signature);
// },
// ),
],
),
),
Padding(
padding: const EdgeInsets.all(16.0),
child: AppFilledButton(
label: context.translation.update,
onPressed: _update,
),
), ),
), ],
), ),
), ),
), ),

@ -13,6 +13,7 @@ import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart'; import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/lookup.dart';
import 'package:test_sa/models/timer_model.dart'; import 'package:test_sa/models/timer_model.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import 'package:test_sa/views/widgets/app_text_form_field.dart'; import 'package:test_sa/views/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart'; import 'package:test_sa/views/widgets/buttons/app_button.dart';
@ -199,11 +200,11 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
isFailedLoading: false, isFailedLoading: false,
stateCode: 200, stateCode: 200,
onRefresh: () async {}, onRefresh: () async {},
child: SingleChildScrollView( child: Column(
child: Column( //mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
children: [ SingleChildScrollView(
Column( child: Column(
children: [ children: [
Container( Container(
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
@ -278,13 +279,13 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
}, },
), ),
], ],
).paddingAll(16), ).paddingAll(16)
AButton( ).expanded,
text: widget.gasRefillModel == null ? context.translation.submit : context.translation.update, AppFilledButton(
onPressed:()async{_onSubmit.call(context);}, label: widget.gasRefillModel == null ? context.translation.submit : context.translation.update,
).paddingAll(16), onPressed:()async{_onSubmit.call(context);},
], ).paddingAll(16),
), ],
) )
), ),
), ),

@ -1,13 +1,15 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart'; import 'package:test_sa/extensions/context_extension.dart';
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.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/models/user.dart';
import 'package:test_sa/views/app_style/sizing.dart'; import 'package:test_sa/views/app_style/sizing.dart';
import '../../../extensions/text_extensions.dart';
import '../../app_style/colors.dart';
import '../requests/request_status.dart';
class DeviceTransferItem extends StatelessWidget { class DeviceTransferItem extends StatelessWidget {
final int index; final int index;
final AssetTransfer item; final AssetTransfer item;
@ -17,21 +19,18 @@ class DeviceTransferItem extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
User _user = Provider.of<UserProvider>(context, listen: false).user;
Color itemColor = index % 2 == 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
Color onItemColor = index % 2 != 0 ? Theme.of(context).colorScheme.primary : Theme.of(context).colorScheme.onPrimary;
return Padding( return Padding(
padding: const EdgeInsets.symmetric(vertical: 4), padding: const EdgeInsets.symmetric(vertical: 4),
child: ElevatedButton( child: ElevatedButton(
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
padding: EdgeInsets.symmetric(vertical: 8, horizontal: 8), elevation: 0,
backgroundColor: itemColor, padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 8),
shape: RoundedRectangleBorder( backgroundColor: Colors.white,
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)), shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(AppStyle.getBorderRadius(context)),
),
), ),
),
//padding: EdgeInsets.symmetric(vertical: 8,horizontal: 8),
onPressed: () { onPressed: () {
onPressed(item); onPressed(item);
}, },
@ -39,115 +38,49 @@ class DeviceTransferItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Row( Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// TBD
StatusLabel(
label: '',
id: 0,
textColor: AColors.getPriorityStatusTextColor(0),
backgroundColor: AColors.getPriorityStatusColor(0)),
8.width,
/// TBD
StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
1.width.expanded,
Text(item.createdOn != null ?item.createdOn.toServiceRequestCardFormat:"", textAlign: TextAlign.end, style: AppTextStyles.tinyFont.copyWith(color: const Color(0xFF3B3D4A))),
],
),
8.height,
Text(context.translation.deviceTransferRequest, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
Text(
'${context.translation.from} : ${item.senderAssignedEmployeeName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
Text(
'${context.translation.to} : ${item.receiverAssignedEmployeeName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
8.height,
Row(
mainAxisSize: MainAxisSize.min,
children: [ children: [
Expanded( Text(
child: Column( 'View Details',
crossAxisAlignment: CrossAxisAlignment.start, style: AppTextStyles.bodyText.copyWith(color: const Color(0xFF4A8DB7)),
children: [
Text(
/*item.title ??*/ "-----",
style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(
color: onItemColor,
),
Text(
/*item.asset?.number ??*/ "-----",
style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(
color: onItemColor,
),
Text(
/*item.asset.assetName ??*/ "",
style: Theme.of(context).textTheme.headline6.copyWith(color: onItemColor, fontSize: 16, fontWeight: FontWeight.bold),
),
Divider(
color: onItemColor,
),
Row(
children: [
Expanded(
child: Text(
context.translation.from,
style: Theme.of(context).textTheme.subtitle2.copyWith(
color: onItemColor,
),
),
),
// StatusLabel(
// backgroundColor: AColors.getRequestStatusColor(item.sender.status?.id),
// label: item.sender.status?.name,
// )
],
),
//const SizedBox(height: 8,),
// Row(
// children: [
// Expanded(
// child: Text(
// item.sender.client.name,
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// ],
// ),
// if (item.sender.department.id != null)
// Text(
// item.sender.department.name,
// style: Theme.of(context).textTheme.bodySmall.copyWith(
// color: onItemColor,
// ),
// ),
Divider(
color: onItemColor,
),
// Row(
// children: [
// Expanded(
// child: Text(
// context.translation.to,
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// StatusLabel(
// backgroundColor: AColors.getRequestStatusColor(item.receiver.status?.id),
// label: item.receiver.status?.name,
// )
// ],
// ),
// //const SizedBox(height: 8,),
// Row(
// children: [
// Expanded(
// child: Text(
// item.receiver.client.name,
// style: Theme.of(context).textTheme.subtitle2.copyWith(
// color: onItemColor,
// ),
// ),
// ),
// ],
// ),
// if (item.receiver.department.id != null)
// Text(
// item.receiver.department.name,
// style: Theme.of(context).textTheme.bodySmall.copyWith(
// color: onItemColor,
// ),
// ),
//Divider(color: onItemColor,),
],
),
), ),
4.width,
const Icon(
Icons.arrow_forward,
color: Color(0xFF4A8DB7),
size: 14,
)
], ],
), ),
], ],
), )
), ),
); );
} }

Loading…
Cancel
Save