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,14 +67,21 @@ 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
_loanFormModel.mappedSite = MappedSite.fromJson(widget.workOrder!.site!.toJson()); void dispose() {
_loanFormModel.mappedDepartment = TrafDepartment.fromJson(widget.workOrder!.department!.toJson()); 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 @override
@ -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,44 +441,95 @@ 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,
AppTextFormField( if (!_loanFormModel.isNewVendor) ...[
initialValue: "", SingleItemDropDownMenu<SupplierDetails, VendorProvider>(
labelText: "Vendor Name", context: context,
validator: (value) { title: 'Vendor Name'.addTranslation,
if ((value ?? "").isEmpty) return "Mandatory"; backgroundColor: AppColor.fieldBgColor(context),
return null; initialValue: _loanFormModel.supplier,
}, showAsBottomSheet: true,
style: Theme.of(context).textTheme.titleMedium, validator: (value) {
backgroundColor: AppColor.fieldBgColor(context), if (value == null) return "Please select vendor name";
labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), return null;
showShadow: false, },
textInputType: TextInputType.name, showShadow: false,
textInputAction: TextInputAction.next, showCancel: true,
onChange: (value) { onSelect: (person) {
_loanFormModel.vendorName = value; _loanFormModel.supplier = person;
}, _loanFormModel.vendorName = person?.name;
), _loanFormModel.supEngineer = null;
8.height, _loanFormModel.vendorRepresentativeName = null;
AppTextFormField( vendorPhoneController.text = person?.contact ?? '';
initialValue: "", vendorEmailController.text = person?.email ?? '';
labelText: "Vendor Representative Name", setState(() {});
validator: (value) { },
if ((value ?? "").isEmpty) return "Mandatory"; ),
return null; 8.height,
}, SingleItemDropDownMenu<SuppPersons, NullableLoadingProvider>(
style: Theme.of(context).textTheme.titleMedium, context: context,
backgroundColor: AppColor.fieldBgColor(context), backgroundColor: _loanFormModel.supplier?.suppliername == null
labelStyle: AppTextStyles.textFieldLabelStyle.copyWith(color: AppColor.textColor(context)), ? context.isDark
showShadow: false, ? AppColor.neutral20
textInputType: TextInputType.name, : AppColor.neutral40
textInputAction: TextInputAction.next, : AppColor.fieldBgColor(context),
onChange: (value) { title: "Representative Name".addTranslation,
_loanFormModel.vendorRepresentativeName = value; 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, 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