diff --git a/lib/controllers/api_routes/urls.dart b/lib/controllers/api_routes/urls.dart index 06d5bff2..2bbf315e 100644 --- a/lib/controllers/api_routes/urls.dart +++ b/lib/controllers/api_routes/urls.dart @@ -3,14 +3,14 @@ class URLs { static const String appReleaseBuildNumber = "32"; - static const host1 = "https://atomsm.hmg.com"; // production url + // static const host1 = "https://atomsm.hmg.com"; // production url // static const host1 = "https://atomsmdev.hmg.com"; // local DEV url - // static const host1 = "https://atomsmuat.hmg.com"; // local UAT url + static const host1 = "https://atomsmuat.hmg.com"; // local UAT url // static final String _baseUrl = "$_host/mobile"; // host local UAT - // static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis + static final String _baseUrl = "$_host/v2/mobile"; // new V2 apis // static final String _baseUrl = "$_host/mobile"; // host local UAT and for internal audit dev - static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM + // static final String _baseUrl = "$_host/v3/mobile"; // v3 for production CM,PM,TM // static final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation static const String chatHubUrl = "https://apiderichat.hmg.com/chathub"; diff --git a/lib/modules/loan_module/models/loan_form_model.dart b/lib/modules/loan_module/models/loan_form_model.dart index d594432c..575dd147 100644 --- a/lib/modules/loan_module/models/loan_form_model.dart +++ b/lib/modules/loan_module/models/loan_form_model.dart @@ -2,6 +2,8 @@ import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/models/new_models/mapped_sites.dart'; import 'package:test_sa/models/new_models/site.dart'; import 'package:test_sa/models/new_models/traf_department.dart'; +import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; +import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/modules/loan_module/models/medical_department_model.dart'; class LoanFormModel { @@ -12,12 +14,15 @@ class LoanFormModel { String? requestDescription; String? model; String? manufacturer; + bool isNewVendor; Lookup? loanProvided; String? vendorName; String? vendorRepresentativeName; String? vendorNumber; String? vendorEmail; Site? site; + SupplierDetails? supplier; + SuppEngineerWorkOrders? supEngineer; MedicalDepartmentModel? department; List? loanAttachment; MappedSite? mappedSite; @@ -25,6 +30,7 @@ class LoanFormModel { LoanFormModel({ this.docName, + this.isNewVendor=false, this.docNumber, this.docEmail, this.itemDescription, @@ -38,6 +44,8 @@ class LoanFormModel { this.vendorEmail, this.loanAttachment, this.site, + this.supplier, + this.supEngineer, this.department, this.mappedSite, this.mappedDepartment, @@ -94,6 +102,7 @@ class LoanFormModel { "vendorNumber": vendorNumber, "vendorContact": vendorNumber, "vendorEmail": vendorEmail, + "isNewVendor": isNewVendor, // 'siteId': site?.id, 'siteId': mappedSite?.id, // 'departmentId': department?.id, diff --git a/lib/modules/loan_module/pages/create_loan_request_page.dart b/lib/modules/loan_module/pages/create_loan_request_page.dart index a6f39c0f..a896526d 100644 --- a/lib/modules/loan_module/pages/create_loan_request_page.dart +++ b/lib/modules/loan_module/pages/create_loan_request_page.dart @@ -15,6 +15,8 @@ import 'package:test_sa/models/new_models/mapped_sites.dart'; import 'package:test_sa/models/new_models/task_request/task_type_model.dart'; import 'package:test_sa/models/new_models/traf_department.dart'; import 'package:test_sa/models/new_models/work_order_detail_model.dart'; +import 'package:test_sa/models/service_request/supp_engineer_work_orders.dart'; +import 'package:test_sa/models/service_request/supplier_details.dart'; import 'package:test_sa/modules/cm_module/cm_request_utils.dart'; import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart'; import 'package:test_sa/modules/loan_module/models/loan_form_model.dart'; @@ -28,6 +30,7 @@ import 'package:test_sa/new_views/common_widgets/single_item_drop_down_menu.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/lookups/department_lookup_provider.dart'; +import 'package:test_sa/providers/work_order/vendor_provider.dart'; import 'package:test_sa/views/widgets/images/multi_image_picker.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart'; @@ -47,9 +50,11 @@ class _CreateLoanRequestPageState extends State with Tick final GlobalKey _formKey = GlobalKey(); final GlobalKey _scaffoldKey = GlobalKey(); TaskType? selectedType; - final LoanFormModel _loanFormModel = LoanFormModel(); + final LoanFormModel _loanFormModel = LoanFormModel(isNewVendor: false); TextEditingController commentController = TextEditingController(); + TextEditingController vendorPhoneController = TextEditingController(); + TextEditingController vendorEmailController = TextEditingController(); bool get isBackUpRequest => widget.workOrderId != null; @@ -62,14 +67,21 @@ class _CreateLoanRequestPageState extends State with Tick Provider.of(context, listen: false).reset(); loanTypes = [Lookup(id: 0, name: "Standard", value: 1), Lookup(id: 1, name: "Backup", value: 2)]; - if(isBackUpRequest){ + if (isBackUpRequest) { fillSiteDeptInfo(); } } - void fillSiteDeptInfo (){ - _loanFormModel.mappedSite = MappedSite.fromJson(widget.workOrder!.site!.toJson()); - _loanFormModel.mappedDepartment = TrafDepartment.fromJson(widget.workOrder!.department!.toJson()); + @override + void dispose() { + vendorPhoneController.dispose(); + vendorEmailController.dispose(); + super.dispose(); + } + + void fillSiteDeptInfo() { + _loanFormModel.mappedSite = MappedSite.fromJson(widget.workOrder!.site!.toJson()); + _loanFormModel.mappedDepartment = TrafDepartment.fromJson(widget.workOrder!.department!.toJson()); } @override @@ -291,13 +303,12 @@ class _CreateLoanRequestPageState extends State with Tick backgroundColor: AppColor.fieldBgColor(context), showAsBottomSheet: true, onSelect: (value) { - if(value!=null){ + if (value != null) { _loanFormModel.mappedSite = value; _loanFormModel.mappedDepartment = null; - Provider.of(context,listen:false).getData(id:_loanFormModel.mappedSite?.id); + Provider.of(context, listen: false).getData(id: _loanFormModel.mappedSite?.id); setState(() {}); } - }, ), 8.height, @@ -430,44 +441,95 @@ class _CreateLoanRequestPageState extends State with Tick return [ 'Vendor Details'.addTranslation.bodyText(context).custom(color: AppColor.black10), 8.height, - AppTextFormField( - initialValue: "", - labelText: "Vendor Name", - validator: (value) { - if ((value ?? "").isEmpty) return "Mandatory"; - return null; - }, - style: Theme.of(context).textTheme.titleMedium, - backgroundColor: AppColor.fieldBgColor(context), - labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), - showShadow: false, - textInputType: TextInputType.name, - textInputAction: TextInputAction.next, - onChange: (value) { - _loanFormModel.vendorName = value; - }, - ), - 8.height, - AppTextFormField( - initialValue: "", - labelText: "Vendor Representative Name", - validator: (value) { - if ((value ?? "").isEmpty) return "Mandatory"; - return null; - }, - style: Theme.of(context).textTheme.titleMedium, - backgroundColor: AppColor.fieldBgColor(context), - labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), - showShadow: false, - textInputType: TextInputType.name, - textInputAction: TextInputAction.next, - onChange: (value) { - _loanFormModel.vendorRepresentativeName = value; - }, - ), + if (!_loanFormModel.isNewVendor) ...[ + SingleItemDropDownMenu( + context: context, + title: 'Vendor Name'.addTranslation, + backgroundColor: AppColor.fieldBgColor(context), + initialValue: _loanFormModel.supplier, + showAsBottomSheet: true, + validator: (value) { + if (value == null) return "Please select vendor name"; + return null; + }, + showShadow: false, + showCancel: true, + onSelect: (person) { + _loanFormModel.supplier = person; + _loanFormModel.vendorName = person?.name; + _loanFormModel.supEngineer = null; + _loanFormModel.vendorRepresentativeName = null; + vendorPhoneController.text = person?.contact ?? ''; + vendorEmailController.text = person?.email ?? ''; + setState(() {}); + }, + ), + 8.height, + SingleItemDropDownMenu( + context: context, + backgroundColor: _loanFormModel.supplier?.suppliername == null + ? context.isDark + ? AppColor.neutral20 + : AppColor.neutral40 + : AppColor.fieldBgColor(context), + title: "Representative Name".addTranslation, + showShadow: false, + validator: (value) { + if (value == null) return "Please select representative name"; + return null; + }, + enabled: _loanFormModel.supplier?.suppPersons?.isNotEmpty ?? false, + staticData: _loanFormModel.supplier?.suppPersons, + showAsBottomSheet: true, + initialValue: _loanFormModel.supEngineer == null ? null : SuppPersons.fromJson(_loanFormModel.supEngineer?.toJson()), + onSelect: (suppPerson) { + if (suppPerson != null) { + _loanFormModel.vendorRepresentativeName = suppPerson.name; + _loanFormModel.supEngineer = SuppEngineerWorkOrders.fromJson(suppPerson.toJson()); + setState(() {}); + } + }, + ), + ] else ...[ + AppTextFormField( + initialValue: "", + labelText: "Vendor Name", + validator: (value) { + if ((value ?? "").isEmpty) return "Mandatory"; + return null; + }, + style: Theme.of(context).textTheme.titleMedium, + backgroundColor: AppColor.fieldBgColor(context), + labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), + showShadow: false, + textInputType: TextInputType.name, + textInputAction: TextInputAction.next, + onChange: (value) { + _loanFormModel.vendorName = value; + }, + ), + 8.height, + AppTextFormField( + initialValue: "", + labelText: "Vendor Representative Name", + validator: (value) { + if ((value ?? "").isEmpty) return "Mandatory"; + return null; + }, + style: Theme.of(context).textTheme.titleMedium, + backgroundColor: AppColor.fieldBgColor(context), + labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), + showShadow: false, + textInputType: TextInputType.name, + textInputAction: TextInputAction.next, + onChange: (value) { + _loanFormModel.vendorRepresentativeName = value; + }, + ), + ], 8.height, AppTextFormField( - initialValue: "", + controller: vendorPhoneController, labelText: "Vendor Number", validator: (value) { if ((value ?? "").isEmpty) return "Mandatory"; @@ -485,7 +547,7 @@ class _CreateLoanRequestPageState extends State with Tick ), 8.height, AppTextFormField( - initialValue: "", + controller: vendorEmailController, labelText: "Vendor Email", validator: (value) { if ((value ?? "").isEmpty) {