device transfer

main_design2.0
nextwo 2 years ago
parent 1daf9b4437
commit 57abce1b75

@ -300,5 +300,6 @@
"assistantEmployee" : "موظف مساعد",
"assignAssistant" : "تعيين مساعد",
"partNo" : "الجزء رقم",
"engSign" : "توقيع المهندس"
"engSign" : "توقيع المهندس",
"requesterName" : "اسم الطالب"
}

@ -305,5 +305,6 @@
"assistantEmployee" : "Assistant Employee",
"assignAssistant" : "Assign Assistant",
"partNo" : "Part No.",
"engSign" : "Engineer Signature"
"engSign" : "Engineer Signature",
"requesterName" : "Requester Name"
}

@ -425,6 +425,69 @@ class AssetTransfer {
return map;
}
fromDetails(AssetTransfer assetTransfer){
id= assetTransfer.id;
transferNo=assetTransfer.transferNo;
transferCode= assetTransfer.transferCode;
assetId=assetTransfer.assetId;
destSiteId= assetTransfer.destSiteId;
destBuildingId=assetTransfer.destBuildingId;
destFloorId=assetTransfer.destFloorId;
destDepartmentId= assetTransfer.destDepartmentId;
destRoom=assetTransfer.destRoom;
senderSiteId=assetTransfer.senderSiteId;
senderBuildingId=assetTransfer.senderBuildingId;
senderFloorId=assetTransfer.senderFloorId;
senderDepartmentId=assetTransfer.senderDepartmentId;
senderRoom=assetTransfer.senderRoom;
senderAssignedEmployeeId= assetTransfer.senderAssignedEmployeeId;
senderMachineStatusId=assetTransfer.senderMachineStatusId;
senderComment=assetTransfer.senderComment;
senderStartDate= assetTransfer.senderStartDate;
senderEndDate= assetTransfer.senderEndDate;
senderWorkingHours= assetTransfer.senderWorkingHours;
senderTravelingHours= assetTransfer.senderTravelingHours;
senderEngSignature=assetTransfer.senderEngSignature;
senderAttachments=assetTransfer.senderAttachments;
receiverAssignedEmployeeId=assetTransfer.receiverAssignedEmployeeId;
receiverMachineStatusId= assetTransfer.receiverMachineStatusId;
receiverComment= assetTransfer.receiverComment;
receiverStartDate=assetTransfer.receiverStartDate;
receiverEndDate= assetTransfer.receiverEndDate;
receiverWorkingHours= assetTransfer.receiverWorkingHours;
receiverTravelingHours= assetTransfer.receiverTravelingHours;
receiverEngSignature= assetTransfer.receiverEngSignature;
receiverAttachments=assetTransfer.receiverAttachments;
supplierId =assetTransfer.supplierId;
supplierName=assetTransfer.supplierName;
destSiteName=assetTransfer.destSiteName;
destBuildingName=assetTransfer.destBuildingName;
destFloorName=assetTransfer.destFloorName;
destDepartmentName=assetTransfer.destDepartmentName;
senderSiteName=assetTransfer.senderSiteName;
senderBuildingName=assetTransfer.senderBuildingName;
senderFloorName=assetTransfer.senderFloorName;
senderDepartmentName=assetTransfer.senderDepartmentName;
senderAssignedEmployeeName=assetTransfer.senderAssignedEmployeeName;
senderMachineStatusName= assetTransfer.senderMachineStatusName;
senderEngSignatureUrl= assetTransfer.senderEngSignatureUrl;
receiverAssignedEmployeeName=assetTransfer.receiverAssignedEmployeeName;
receiverMachineStatusName=assetTransfer.receiverMachineStatusName;
receiverEngSignatureUrl=assetTransfer.receiverEngSignatureUrl;
applied=assetTransfer.applied;
createdOn= assetTransfer.createdOn;
modifiedOn= assetTransfer.modifiedOn;
assetSerialNo=assetTransfer.assetSerialNo;
assetNumber=assetTransfer.assetNumber;
assetName=assetTransfer.assetName;
modelId=assetTransfer.modelId;
modelName=assetTransfer.modelName;
manufacturerId=assetTransfer.manufacturerId;
manufacturerName=assetTransfer.manufacturerName;
}
Future<bool> validate(BuildContext context) async {
if (assetId == null) {
await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}");

@ -83,14 +83,14 @@ class _DeviceTransferDetailsState extends State<DeviceTransferDetails> {
Row(
children: [
/// TBD
StatusLabel(
label: "",
id: 0,
textColor: AColors.getPriorityStatusTextColor(0),
backgroundColor: AColors.getPriorityStatusColor(0)),
// 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)),
//StatusLabel(label: '', textColor: AColors.getRequestStatusTextColor(0), backgroundColor: AColors.getRequestStatusColor(0)),
],
),
1.width.expanded,

@ -5,6 +5,8 @@ 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/settings/setting_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/device/asset_transfer.dart';
import 'package:test_sa/models/subtitle.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
@ -14,7 +16,14 @@ import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/localization/localization.dart';
import '../../../controllers/validator/validator.dart';
import '../../../extensions/text_extensions.dart';
import '../../../models/lookup.dart';
import '../../../new_views/common_widgets/app_text_form_field.dart';
import '../../../new_views/common_widgets/default_app_bar.dart';
import '../../../new_views/common_widgets/single_item_drop_down_menu.dart';
import '../../../providers/gas_request_providers/gas_status_provider.dart';
import '../../widgets/e_signature/e_signature.dart';
class UpdateDeviceTransfer extends StatefulWidget {
final AssetTransfer model;
@ -34,7 +43,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
Uint8List _signature;
AssetTransferProvider _deviceTransferProvider;
final TextEditingController _requestedQuantityController = TextEditingController();
// final DeviceTransferInfo _formModel = DeviceTransferInfo(attachments: []);
final AssetTransfer _formModel = AssetTransfer();
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@ -76,7 +85,7 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
@override
void initState() {
// _formModel.fromDetails(widget.isSender ? widget.model.sender : widget.model.receiver, withSignature: false);
_formModel.fromDetails(widget.model);
super.initState();
}
@ -101,103 +110,84 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
stateCode: 200,
onRefresh: () async {},
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SingleChildScrollView(
padding: EdgeInsets.all(12 * AppStyle.getScaleFactor(context)),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ASubTitle("Comment"),
const SizedBox(
height: 4,
_buildCard(),
8.height,
AppTextFormField(
initialValue: widget.isSender? _formModel.senderTravelingHours:_formModel.receiverTravelingHours,
labelText: context.translation.travelingHours,
onSaved:(value){
widget.isSender? _formModel.senderTravelingHours
: _formModel.receiverTravelingHours= value;
//_formModel?.workingHours = double.tryParse(value);
// _formModel.travelingHours = value;
},
textInputType: TextInputType.number,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
),
// ATextFormField(
// initialValue: _formModel?.comment,
// textAlign: TextAlign.center,
// style: Theme.of(context).textTheme.subtitle1,
// textInputType: TextInputType.text,
// onSaved: (value) {
// _formModel.comment = value;
// },
// ),
const SizedBox(
height: 8,
),
ASubTitle(context.translation.travelingHours),
const SizedBox(
height: 4,
),
// ATextFormField(
// initialValue: _formModel?.travelingHours,
// textAlign: TextAlign.center,
// style: Theme.of(context).textTheme.subtitle1,
// textInputType: TextInputType.number,
// onSaved: (value) {
// _formModel.travelingHours = value;
// },
// ),
const SizedBox(
height: 16,
),
ASubTitle(context.translation.workingHours),
const SizedBox(height: 8),
Row(
children: [
// Expanded(
// child: AppTimer(
// timer: _formModel.timer,
// onChange: (timer) async {
8.height,
AppTextFormField(
labelText: context.translation.workingHours,
initialValue: widget.isSender?_formModel.senderWorkingHours:_formModel.receiverWorkingHours,
onSaved:(value){
widget.isSender?
_formModel?.senderWorkingHours = value:_formModel?.receiverWorkingHours = value;
// _formModel.timer = timer;
// _formModel.workingHours = (((timer?.durationInSecond ?? 0) / 60) / 60)?.toStringAsFixed(2) ?? "0";
// return true;
// },
// ),
// ),
],
),
const SizedBox(height: 16),
ASubTitle(context.translation.status),
const SizedBox(
height: 4,
},
textInputType: TextInputType.number,
validator: (value) => Validator.isNumeric(value) ? null : "allow numbers only",
),
// AssetStatusMenu(
// initialValue: _formModel.status,
// onSelect: (status) {
// if (status == null) return;
// _formModel.status = status;
// setState(() {});
// },
// ),
const SizedBox(
height: 16,
8.height,
///TBD
Consumer<GasStatusProvider>(builder: (context, snapshot, _){
return SingleItemDropDownMenu<Lookup,GasStatusProvider >(
context: context,
title: context.translation.reportStatus,
initialValue: snapshot.items?.firstWhere((element) => element.name == (widget.isSender?_formModel.senderMachineStatusName:_formModel.receiverMachineStatusName), orElse: () => null),
onSelect: (value) {
if(widget.isSender) {
_formModel.senderMachineStatusName=value.name;
_formModel.senderMachineStatusId=value.value;
}else{
_formModel.receiverMachineStatusName=value.name;
_formModel.receiverMachineStatusId=value.value;
}
setState(() {});
},
);
}),
8.height,
AppTextFormField(
initialValue: widget.isSender?_formModel.senderComment:_formModel.receiverComment,
labelText: context.translation.comments,
textInputType: TextInputType.multiline,
alignLabelWithHint: true,
onSaved: (value){
widget.isSender?
_formModel.senderComment = value:_formModel.receiverComment;
},
),
// MultiFilesPicker(
// label: "Attachments",
// files: _formModel.attachments,
// ),
const SizedBox(
height: 16,
8.height,
ESignature(
title: "Signature",
//oldSignature: widget.isSender ? widget.model.senderEngSignature : widget.model.receiverEngSignature,
newSignature: _signature,
onSaved: (signature) {
_signature = signature;
if (signature == null || signature.isEmpty) return;
// _formModel.engSignature = "${DateTime.now().toIso8601String()}.png|${base64Encode(signature)}";
// base64Encode(signature);
},
),
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);
// },
// ),
],
),
),
).expanded,
Padding(
padding: const EdgeInsets.all(16.0),
child: AppFilledButton(
@ -211,4 +201,33 @@ class _UpdateDeviceTransferState extends State<UpdateDeviceTransfer> {
),
);
}
_buildCard(){
return Container(
width: MediaQuery.of(context).size.width,
decoration: ShapeDecoration(
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(15),
),
shadows: const [BoxShadow(color: Color(0x07000000), blurRadius: 14, offset: Offset(0, 0), spreadRadius: 0)],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(context.translation.transferDetails, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
Text(
'${context.translation.assetName}: ${_formModel.assetName}',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
///TBD
Text(
'${context.translation.requesterName}: ',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
),
],
).paddingAll(16),
);
}
}

@ -1,4 +1,3 @@
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
@ -14,20 +13,8 @@ import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/lookup.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/widgets/app_text_form_field.dart';
import 'package:test_sa/views/widgets/buttons/app_button.dart';
import 'package:test_sa/views/widgets/gas_refill/building_type_menu.dart';
import 'package:test_sa/views/widgets/gas_refill/department_type_menu.dart';
import 'package:test_sa/views/widgets/gas_refill/floor_type_menu.dart';
import 'package:test_sa/views/widgets/gas_refill/gas_refill_create_details_item.dart';
import 'package:test_sa/views/widgets/hospitals/hospital_auto_complete_field_new.dart';
import 'package:test_sa/views/widgets/loaders/loading_manager.dart';
import 'package:test_sa/views/widgets/status/gas_refill/gas_cylinder_size.dart';
import 'package:test_sa/views/widgets/status/gas_refill/gas_cylinder_type.dart';
import 'package:test_sa/views/widgets/status/gas_refill/gas_status.dart';
import 'package:test_sa/views/widgets/status/gas_refill/gas_type.dart';
import 'package:test_sa/views/widgets/titles/app_sub_title.dart';
import '../../../../controllers/providers/api/hospitals_provider.dart';
import '../../../../extensions/text_extensions.dart';
@ -70,7 +57,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
void initState() {
super.initState();
if (widget.gasRefillModel != null) {
_formModel = widget.gasRefillModel;
_formModel.fromGasRefillModel(widget.gasRefillModel);
}
}
@ -84,22 +71,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
if (!(await _addNewModel(context))) return;
}
//_isLoading = true;
setState(() {});
// if (widget.gasRefillModel != null) {
// if (!(await _formModel.validate(context))) {
// _isLoading = false;
// setState(() {});
// return;
// }
// }
//if(!(_formKey.currentState.validate())) return;
// if (_gasRefillProvider.department?.name == null) {
// ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text("Select department")));
// _isLoading = false;
// setState(() {});
// return;
// }
int status = widget.gasRefillModel == null
? null /*await _gasRefillProvider.createModel(
@ -201,7 +173,6 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
stateCode: 200,
onRefresh: () async {},
child: Column(
//mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
SingleChildScrollView(
child: Column(
@ -220,6 +191,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
children: [
Text(context.translation.gasRefill, style: AppTextStyles.heading5.copyWith(color: const Color(0xFF3B3D4A))),
8.height,
/// TBD
Text(
'Gas Request:',
style: AppTextStyles.bodyText.copyWith(color: Color(0xFF757575)),
@ -253,7 +225,7 @@ class _RequestGasRefillState extends State<RequestGasRefill> {
SingleItemDropDownMenu<Lookup,GasStatusProvider >(
context: context,
title: context.translation.reportStatus,
initialValue: _formModel.status,
initialValue: widget.gasRefillModel.status,
onSelect: (value) {
_formModel.status=value;
},

@ -41,14 +41,14 @@ class DeviceTransferItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
/// TBD
StatusLabel(
label: '',
id: 0,
textColor: AColors.getPriorityStatusTextColor(0),
backgroundColor: AColors.getPriorityStatusColor(0)),
// 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)),
//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))),
],

Loading…
Cancel
Save