From a2453e8c8830d58253926dd2be01c1b19a5da2ef Mon Sep 17 00:00:00 2001 From: WaseemAbbasi22 Date: Wed, 19 Nov 2025 14:52:03 +0300 Subject: [PATCH] loan form desing created --- .../loan_module/models/loan_form_model.dart | 6 + .../pages/create_loan_request_view.dart | 130 +++++++++++++++--- 2 files changed, 119 insertions(+), 17 deletions(-) diff --git a/lib/modules/loan_module/models/loan_form_model.dart b/lib/modules/loan_module/models/loan_form_model.dart index 13122cc5..3f1cc940 100644 --- a/lib/modules/loan_module/models/loan_form_model.dart +++ b/lib/modules/loan_module/models/loan_form_model.dart @@ -1,5 +1,7 @@ import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/building.dart'; +import 'package:test_sa/models/new_models/department.dart'; +import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/site.dart'; class LoanFormModel { @@ -17,6 +19,8 @@ class LoanFormModel { String? vendorEmail; Site? site; Building? building; + Lookup? department; + Floor? floor; List? loanAttachment; LoanFormModel({ @@ -35,6 +39,8 @@ class LoanFormModel { this.loanAttachment, this.site, this.building, + this.floor, + this.department, }); Map toJson() { diff --git a/lib/modules/loan_module/pages/create_loan_request_view.dart b/lib/modules/loan_module/pages/create_loan_request_view.dart index 830c4d64..4244b326 100644 --- a/lib/modules/loan_module/pages/create_loan_request_view.dart +++ b/lib/modules/loan_module/pages/create_loan_request_view.dart @@ -14,6 +14,8 @@ import 'package:test_sa/models/device/asset.dart'; import 'package:test_sa/models/enums/user_types.dart'; import 'package:test_sa/models/generic_attachment_model.dart'; import 'package:test_sa/models/lookup.dart'; +import 'package:test_sa/models/new_models/building.dart'; +import 'package:test_sa/models/new_models/floor.dart'; import 'package:test_sa/models/new_models/mapped_sites.dart'; import 'package:test_sa/models/new_models/room_model.dart'; import 'package:test_sa/models/new_models/site.dart'; @@ -28,6 +30,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart'; import 'package:test_sa/new_views/common_widgets/app_filled_button.dart'; import 'package:test_sa/new_views/common_widgets/app_text_form_field.dart'; import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.dart'; +import 'package:test_sa/providers/department_provider.dart'; import 'package:test_sa/providers/gas_request_providers/site_provider.dart'; import 'package:test_sa/providers/loading_list_notifier.dart'; import 'package:test_sa/providers/task_request_provider/task_job_provider.dart'; @@ -37,6 +40,7 @@ import 'package:test_sa/views/widgets/equipment/asset_picker.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart'; +import '../../../models/new_models/department.dart'; class CreateLoanRequestView extends StatefulWidget { static const String id = "/create-loan"; @@ -54,6 +58,7 @@ class _CreateLoanRequestViewState extends State with Tick Asset? device; TaskType? selectedType; final LoanFormModel _loanFormModel = LoanFormModel(); + bool isEng = true; TextEditingController commentController = TextEditingController(); @override @@ -76,6 +81,10 @@ class _CreateLoanRequestViewState extends State with Tick child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + if(isEng)...[ + scanAssetButton(), + 16.height, + ], contactInfoSection(), 16.height, itemDetailsSection(), @@ -172,53 +181,140 @@ class _CreateLoanRequestViewState extends State with Tick children: [ 'Item Details'.addTranslation.heading6(context).custom(color: AppColor.black10), 8.height, + SingleItemDropDownMenu( + context: context, + title: context.translation.site, + initialValue: _loanFormModel.site, + showShadow: false, + backgroundColor: AppColor.fieldBgColor(context), + showAsBottomSheet: true, + onSelect: (value) { + _loanFormModel.site = value; + _loanFormModel.building = null; + setState(() {}); + }, + ), + // 8.height, + // SingleItemDropDownMenu( + // context: context, + // title: context.translation.building, + // initialValue: _loanFormModel.building, + // showShadow: false, + // showAsBottomSheet: true, + // backgroundColor: AppColor.fieldBgColor(context), + // enabled: _loanFormModel.site?.buildings?.isNotEmpty ?? false, + // staticData: _loanFormModel.site?.buildings ?? [], + // onSelect: (value) { + // _loanFormModel.building = value; + // _loanFormModel.floor = null; + // _loanFormModel.department = null; + // setState(() {}); + // }, + // ), + // 8.height, + // SingleItemDropDownMenu( + // context: context, + // title: context.translation.floor, + // showShadow: false, + // showAsBottomSheet: true, + // initialValue: _loanFormModel.floor, + // backgroundColor: AppColor.fieldBgColor(context), + // enabled: _loanFormModel.building?.floors?.isNotEmpty ?? false, + // staticData: _loanFormModel.building?.floors ?? [], + // onSelect: (value) { + // _loanFormModel.floor = value; + // _loanFormModel.department = null; + // setState(() {}); + // }, + // ), + 8.height, + //TODO need to check where to get all departments.. + SingleItemDropDownMenu( + context: context, + title: context.translation.department, + showShadow: false, + showAsBottomSheet: true, + initialValue: _loanFormModel.department, + backgroundColor: AppColor.fieldBgColor(context), + onSelect: (value) { + _loanFormModel.department = value; + setState(() {}); + }, + ), + 8.height, AppTextFormField( - labelText: "Name", + labelText: "Item Description", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Name", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, textInputType: TextInputType.text, showShadow: false, onSaved: (value) { - _loanFormModel.docName = value; + _loanFormModel.itemDescription = value; }, style: Theme.of(context).textTheme.titleMedium, ), 8.height, AppTextFormField( - labelText: "Number", + labelText: "Request Description", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Number", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, - textInputType: TextInputType.phone, + textInputType: TextInputType.text, showShadow: false, onSaved: (value) { - _loanFormModel.docNumber = value; + _loanFormModel.requestDescription = value; }, style: Theme.of(context).textTheme.titleMedium, ), 8.height, AppTextFormField( - labelText: "Email", + labelText: "Model", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Email", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, - textInputType: TextInputType.emailAddress, + textInputType: TextInputType.text, showShadow: false, onSaved: (value) { - _loanFormModel.docEmail = value; + _loanFormModel.model = value; + }, + style: Theme.of(context).textTheme.titleMedium, + ), + 8.height, + AppTextFormField( + labelText: "Manufacturer", + backgroundColor: AppColor.fieldBgColor(context), + textAlign: TextAlign.center, + labelStyle: AppTextStyles.textFieldLabelStyle, + hintStyle: AppTextStyles.textFieldLabelStyle, + textInputType: TextInputType.text, + showShadow: false, + onSaved: (value) { + _loanFormModel.manufacturer = value; }, style: Theme.of(context).textTheme.titleMedium, ), + 8.height, + SingleItemDropDownMenu( + context: context, + title: 'Loan Period'.addTranslation, + showShadow: false, + showAsBottomSheet: true, + initialValue: _loanFormModel.loanProvided, + backgroundColor: AppColor.fieldBgColor(context), + onSelect: (value) { + _loanFormModel.loanProvided = value; + setState(() {}); + }, + ), + 8.height, ], ); } + Widget vendorDetailsSection() { return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -229,13 +325,13 @@ class _CreateLoanRequestViewState extends State with Tick labelText: "Name", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Name", + hintText: "Vendor Name", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, textInputType: TextInputType.text, showShadow: false, onSaved: (value) { - _loanFormModel.docName = value; + _loanFormModel.vendorName = value; }, style: Theme.of(context).textTheme.titleMedium, ), @@ -244,13 +340,13 @@ class _CreateLoanRequestViewState extends State with Tick labelText: "Number", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Number", + hintText: "Vendor Number", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, textInputType: TextInputType.phone, showShadow: false, onSaved: (value) { - _loanFormModel.docNumber = value; + _loanFormModel.vendorNumber = value; }, style: Theme.of(context).textTheme.titleMedium, ), @@ -259,13 +355,13 @@ class _CreateLoanRequestViewState extends State with Tick labelText: "Email", backgroundColor: AppColor.fieldBgColor(context), textAlign: TextAlign.center, - hintText: "Doc Email", + hintText: "Vendor Email", labelStyle: AppTextStyles.textFieldLabelStyle, hintStyle: AppTextStyles.textFieldLabelStyle, textInputType: TextInputType.emailAddress, showShadow: false, onSaved: (value) { - _loanFormModel.docEmail = value; + _loanFormModel.vendorEmail = value; }, style: Theme.of(context).textTheme.titleMedium, ),