diff --git a/lib/l10n/app_ar.arb b/lib/l10n/app_ar.arb index 102bb310..1a532274 100644 --- a/lib/l10n/app_ar.arb +++ b/lib/l10n/app_ar.arb @@ -300,5 +300,6 @@ "assistantEmployee" : "موظف مساعد", "assignAssistant" : "تعيين مساعد", "partNo" : "الجزء رقم", - "engSign" : "توقيع المهندس" + "engSign" : "توقيع المهندس", + "requesterName" : "اسم الطالب" } \ No newline at end of file diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index d0261e24..2d930a7c 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -305,5 +305,6 @@ "assistantEmployee" : "Assistant Employee", "assignAssistant" : "Assign Assistant", "partNo" : "Part No.", - "engSign" : "Engineer Signature" + "engSign" : "Engineer Signature", + "requesterName" : "Requester Name" } \ No newline at end of file diff --git a/lib/models/device/asset_transfer.dart b/lib/models/device/asset_transfer.dart index 827830a5..46fe292d 100644 --- a/lib/models/device/asset_transfer.dart +++ b/lib/models/device/asset_transfer.dart @@ -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 validate(BuildContext context) async { if (assetId == null) { await Fluttertoast.showToast(msg: "${context.translation.youHaveToSelect} ${context.translation.device}"); diff --git a/lib/views/pages/device_transfer/device_transfer_details.dart b/lib/views/pages/device_transfer/device_transfer_details.dart index d0e568ab..e17e3abf 100644 --- a/lib/views/pages/device_transfer/device_transfer_details.dart +++ b/lib/views/pages/device_transfer/device_transfer_details.dart @@ -83,14 +83,14 @@ class _DeviceTransferDetailsState extends State { 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, diff --git a/lib/views/pages/device_transfer/update_device_transfer.dart b/lib/views/pages/device_transfer/update_device_transfer.dart index c9babbc4..c8b54328 100644 --- a/lib/views/pages/device_transfer/update_device_transfer.dart +++ b/lib/views/pages/device_transfer/update_device_transfer.dart @@ -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 { Uint8List _signature; AssetTransferProvider _deviceTransferProvider; final TextEditingController _requestedQuantityController = TextEditingController(); - // final DeviceTransferInfo _formModel = DeviceTransferInfo(attachments: []); + final AssetTransfer _formModel = AssetTransfer(); final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); @@ -76,7 +85,7 @@ class _UpdateDeviceTransferState extends State { @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 { 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(builder: (context, snapshot, _){ + return SingleItemDropDownMenu( + 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 { ), ); } + + _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), + ); + } } diff --git a/lib/views/pages/user/gas_refill/request_gas_refill.dart b/lib/views/pages/user/gas_refill/request_gas_refill.dart index 4608f8f3..2d4c4908 100644 --- a/lib/views/pages/user/gas_refill/request_gas_refill.dart +++ b/lib/views/pages/user/gas_refill/request_gas_refill.dart @@ -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 { void initState() { super.initState(); if (widget.gasRefillModel != null) { - _formModel = widget.gasRefillModel; + _formModel.fromGasRefillModel(widget.gasRefillModel); } } @@ -84,22 +71,7 @@ class _RequestGasRefillState extends State { 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 { stateCode: 200, onRefresh: () async {}, child: Column( - //mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SingleChildScrollView( child: Column( @@ -220,6 +191,7 @@ class _RequestGasRefillState extends State { 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 { SingleItemDropDownMenu( context: context, title: context.translation.reportStatus, - initialValue: _formModel.status, + initialValue: widget.gasRefillModel.status, onSelect: (value) { _formModel.status=value; }, diff --git a/lib/views/widgets/device_trancfer/device_transfer_item.dart b/lib/views/widgets/device_trancfer/device_transfer_item.dart index 1bda58d1..0972d197 100644 --- a/lib/views/widgets/device_trancfer/device_transfer_item.dart +++ b/lib/views/widgets/device_trancfer/device_transfer_item.dart @@ -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))), ],