added vendor dropdown along with free text

design_3.0_loan_module
WaseemAbbasi22 2 weeks ago
parent 1f3c0bad97
commit afa165dc3d

@ -3,14 +3,14 @@ class URLs {
static const String appReleaseBuildNumber = "32"; 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://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/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/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 final String _baseUrl = "$_host/v5/mobile"; // v5 for data segregation
static const String chatHubUrl = "https://apiderichat.hmg.com/chathub"; static const String chatHubUrl = "https://apiderichat.hmg.com/chathub";

@ -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/mapped_sites.dart';
import 'package:test_sa/models/new_models/site.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/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'; import 'package:test_sa/modules/loan_module/models/medical_department_model.dart';
class LoanFormModel { class LoanFormModel {
@ -12,12 +14,15 @@ class LoanFormModel {
String? requestDescription; String? requestDescription;
String? model; String? model;
String? manufacturer; String? manufacturer;
bool isNewVendor;
Lookup? loanProvided; Lookup? loanProvided;
String? vendorName; String? vendorName;
String? vendorRepresentativeName; String? vendorRepresentativeName;
String? vendorNumber; String? vendorNumber;
String? vendorEmail; String? vendorEmail;
Site? site; Site? site;
SupplierDetails? supplier;
SuppEngineerWorkOrders? supEngineer;
MedicalDepartmentModel? department; MedicalDepartmentModel? department;
List<LoanAttachments>? loanAttachment; List<LoanAttachments>? loanAttachment;
MappedSite? mappedSite; MappedSite? mappedSite;
@ -25,6 +30,7 @@ class LoanFormModel {
LoanFormModel({ LoanFormModel({
this.docName, this.docName,
this.isNewVendor=false,
this.docNumber, this.docNumber,
this.docEmail, this.docEmail,
this.itemDescription, this.itemDescription,
@ -38,6 +44,8 @@ class LoanFormModel {
this.vendorEmail, this.vendorEmail,
this.loanAttachment, this.loanAttachment,
this.site, this.site,
this.supplier,
this.supEngineer,
this.department, this.department,
this.mappedSite, this.mappedSite,
this.mappedDepartment, this.mappedDepartment,
@ -94,6 +102,7 @@ class LoanFormModel {
"vendorNumber": vendorNumber, "vendorNumber": vendorNumber,
"vendorContact": vendorNumber, "vendorContact": vendorNumber,
"vendorEmail": vendorEmail, "vendorEmail": vendorEmail,
"isNewVendor": isNewVendor,
// 'siteId': site?.id, // 'siteId': site?.id,
'siteId': mappedSite?.id, 'siteId': mappedSite?.id,
// 'departmentId': department?.id, // 'departmentId': department?.id,

@ -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/task_request/task_type_model.dart';
import 'package:test_sa/models/new_models/traf_department.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/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/cm_request_utils.dart';
import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.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'; 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/gas_request_providers/site_provider.dart';
import 'package:test_sa/providers/loading_list_notifier.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/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 'package:test_sa/views/widgets/images/multi_image_picker.dart';
import '../../../../../../new_views/common_widgets/default_app_bar.dart'; import '../../../../../../new_views/common_widgets/default_app_bar.dart';
@ -47,9 +50,11 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
final GlobalKey<FormState> _formKey = GlobalKey<FormState>(); final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>(); final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
TaskType? selectedType; TaskType? selectedType;
final LoanFormModel _loanFormModel = LoanFormModel(); final LoanFormModel _loanFormModel = LoanFormModel(isNewVendor: false);
TextEditingController commentController = TextEditingController(); TextEditingController commentController = TextEditingController();
TextEditingController vendorPhoneController = TextEditingController();
TextEditingController vendorEmailController = TextEditingController();
bool get isBackUpRequest => widget.workOrderId != null; bool get isBackUpRequest => widget.workOrderId != null;
@ -62,12 +67,19 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
Provider.of<LoanPeriodProvider>(context, listen: false).reset(); Provider.of<LoanPeriodProvider>(context, listen: false).reset();
loanTypes = [Lookup(id: 0, name: "Standard", value: 1), Lookup(id: 1, name: "Backup", value: 2)]; loanTypes = [Lookup(id: 0, name: "Standard", value: 1), Lookup(id: 1, name: "Backup", value: 2)];
if(isBackUpRequest){ if (isBackUpRequest) {
fillSiteDeptInfo(); fillSiteDeptInfo();
} }
} }
void fillSiteDeptInfo (){ @override
void dispose() {
vendorPhoneController.dispose();
vendorEmailController.dispose();
super.dispose();
}
void fillSiteDeptInfo() {
_loanFormModel.mappedSite = MappedSite.fromJson(widget.workOrder!.site!.toJson()); _loanFormModel.mappedSite = MappedSite.fromJson(widget.workOrder!.site!.toJson());
_loanFormModel.mappedDepartment = TrafDepartment.fromJson(widget.workOrder!.department!.toJson()); _loanFormModel.mappedDepartment = TrafDepartment.fromJson(widget.workOrder!.department!.toJson());
} }
@ -291,13 +303,12 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
backgroundColor: AppColor.fieldBgColor(context), backgroundColor: AppColor.fieldBgColor(context),
showAsBottomSheet: true, showAsBottomSheet: true,
onSelect: (value) { onSelect: (value) {
if(value!=null){ if (value != null) {
_loanFormModel.mappedSite = value; _loanFormModel.mappedSite = value;
_loanFormModel.mappedDepartment = null; _loanFormModel.mappedDepartment = null;
Provider.of<DepartmentLookupProvider>(context,listen:false).getData(id:_loanFormModel.mappedSite?.id); Provider.of<DepartmentLookupProvider>(context, listen: false).getData(id: _loanFormModel.mappedSite?.id);
setState(() {}); setState(() {});
} }
}, },
), ),
8.height, 8.height,
@ -430,6 +441,56 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
return [ return [
'Vendor Details'.addTranslation.bodyText(context).custom(color: AppColor.black10), 'Vendor Details'.addTranslation.bodyText(context).custom(color: AppColor.black10),
8.height, 8.height,
if (!_loanFormModel.isNewVendor) ...[
SingleItemDropDownMenu<SupplierDetails, VendorProvider>(
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<SuppPersons, NullableLoadingProvider>(
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( AppTextFormField(
initialValue: "", initialValue: "",
labelText: "Vendor Name", labelText: "Vendor Name",
@ -465,9 +526,10 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
_loanFormModel.vendorRepresentativeName = value; _loanFormModel.vendorRepresentativeName = value;
}, },
), ),
],
8.height, 8.height,
AppTextFormField( AppTextFormField(
initialValue: "", controller: vendorPhoneController,
labelText: "Vendor Number", labelText: "Vendor Number",
validator: (value) { validator: (value) {
if ((value ?? "").isEmpty) return "Mandatory"; if ((value ?? "").isEmpty) return "Mandatory";
@ -485,7 +547,7 @@ class _CreateLoanRequestPageState extends State<CreateLoanRequestPage> with Tick
), ),
8.height, 8.height,
AppTextFormField( AppTextFormField(
initialValue: "", controller: vendorEmailController,
labelText: "Vendor Email", labelText: "Vendor Email",
validator: (value) { validator: (value) {
if ((value ?? "").isEmpty) { if ((value ?? "").isEmpty) {

Loading…
Cancel
Save