From 071dd082b36f15be33485de976c5afe3180f820d Mon Sep 17 00:00:00 2001 From: Sikander Saleem Date: Thu, 27 Aug 2026 15:13:19 +0300 Subject: [PATCH] external po & internal po added in search --- .../providers/api/all_requests_provider.dart | 2 ++ lib/dashboard_latest/dashboard_view.dart | 3 +- lib/models/search_all_requests_model.dart | 32 +++++++++++++++++++ .../my_request/all_requests_filter_page.dart | 4 +++ .../my_request/all_requests_search_page.dart | 15 ++++++++- .../my_request/my_requests_page.dart | 30 +++++++++++++++++ 6 files changed, 84 insertions(+), 2 deletions(-) diff --git a/lib/controllers/providers/api/all_requests_provider.dart b/lib/controllers/providers/api/all_requests_provider.dart index 45f62f80..fe447042 100644 --- a/lib/controllers/providers/api/all_requests_provider.dart +++ b/lib/controllers/providers/api/all_requests_provider.dart @@ -225,6 +225,8 @@ class AllRequestsProvider extends ChangeNotifier { if (search?.assetName?.value?.isNotEmpty ?? false) "assetName": search!.assetName!.value, if (search?.assetNo?.value?.isNotEmpty ?? false) "assetNumber": search!.assetNo!.value, if (search?.sn?.value?.isNotEmpty ?? false) "assetSerialNo": search!.sn!.value, + if (search?.externalPo?.value?.isNotEmpty ?? false) "externalPo": search!.externalPo!.value, + if (search?.internalPo?.value?.isNotEmpty ?? false) "internalPo": search!.internalPo!.value, if (search?.model?.value?.isNotEmpty ?? false) "model": search!.model!.value, if (search?.manufacture?.value?.isNotEmpty ?? false) "manufacturer": search!.manufacture!.value, if (search?.startDate != null) "from": search!.startDate!.toIso8601String(), diff --git a/lib/dashboard_latest/dashboard_view.dart b/lib/dashboard_latest/dashboard_view.dart index 91c30606..af51b0bb 100644 --- a/lib/dashboard_latest/dashboard_view.dart +++ b/lib/dashboard_latest/dashboard_view.dart @@ -198,6 +198,7 @@ class _DashboardViewState extends State { @override Widget build(BuildContext context) { final user = Provider.of(context, listen: false).user; + bool isUserFlowMedical = Provider.of(context, listen: false).isUserFlowMedical; bool isEngineer = (user?.type) == UsersTypes.engineer; ///Need to check which info need to show on dashboard for quality user. @@ -230,7 +231,7 @@ class _DashboardViewState extends State { ), ), ), - if (user != null && settingProvider.isUserFlowMedical == false && user.employeeIsHMG == false) + if (user != null && isUserFlowMedical == false && user.employeeIsHMG == false) Positioned( right: 20.toScreenWidth, bottom: 20.toScreenHeight, diff --git a/lib/models/search_all_requests_model.dart b/lib/models/search_all_requests_model.dart index f6d7b585..3adaef90 100644 --- a/lib/models/search_all_requests_model.dart +++ b/lib/models/search_all_requests_model.dart @@ -8,6 +8,8 @@ class SearchAllRequestsModel { SearchByManufactureModel? manufacture; // Now nullable SearchBySNModel? sn; // Now nullable SearchByRequestModel? model; // Now nullable + SearchByExternalPO? externalPo; // Now nullable + SearchByInternalPO? internalPo; // Now nullable SearchAllRequestsBaseModel? searchBySelectedValue; // Now nullable List? statuses; // Now nullable List? typeTransaction; // Now nullable @@ -21,6 +23,8 @@ class SearchAllRequestsModel { this.assetNo, this.manufacture, this.sn, + this.externalPo, + this.internalPo, this.model, this.statuses, this.typeTransaction, @@ -70,6 +74,16 @@ class SearchAllRequestsModel { sn?.value = null; } + if (field != 'externalPo') { + externalPo?.controller?.text = ""; + externalPo?.value = null; + } + + if (field != 'internalPo') { + internalPo?.controller?.text = ""; + internalPo?.value = null; + } + if (field != 'model') { model?.controller?.text = ""; model?.value = null; @@ -128,6 +142,14 @@ class SearchAllRequestsModel { json["assetSerialNo"] = sn!.value; } + if (externalPo?.value?.isNotEmpty ?? false) { + json["externalPo"] = externalPo!.value; + } + + if (internalPo?.value?.isNotEmpty ?? false) { + json["internalPo"] = internalPo!.value; + } + if (model?.value?.isNotEmpty ?? false) { json["model"] = model!.value; } @@ -187,3 +209,13 @@ class SearchByRequestModel extends SearchAllRequestsBaseModel { SearchByRequestModel(BuildContext context, {TextEditingController? controller, String? value}) // Parameters now nullable : super(context, controller: controller, label: context.translation.model, value: value); } + +class SearchByExternalPO extends SearchAllRequestsBaseModel { + SearchByExternalPO(BuildContext context, {TextEditingController? controller, String? value}) // Parameters now nullable + : super(context, controller: controller, label: "External PO", value: value); +} + +class SearchByInternalPO extends SearchAllRequestsBaseModel { + SearchByInternalPO(BuildContext context, {TextEditingController? controller, String? value}) // Parameters now nullable + : super(context, controller: controller, label: "Internal PO", value: value); +} diff --git a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart index 68f27fad..93a22f8b 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_filter_page.dart @@ -57,6 +57,8 @@ class _AllRequestsFilterPageState extends State { search!.assetNo?.controller?.text = search?.assetNo!.value ?? ""; search!.manufacture?.controller?.text = search?.manufacture!.value ?? ""; search!.sn?.controller?.text = search?.sn?.value ?? ""; + search!.externalPo?.controller?.text = search?.externalPo?.value ?? ""; + search!.internalPo?.controller?.text = search?.internalPo?.value ?? ""; search!.model?.controller?.text = search?.model?.value ?? ""; } super.initState(); @@ -74,6 +76,8 @@ class _AllRequestsFilterPageState extends State { manufacture: SearchByManufactureModel(context, controller: TextEditingController()), sn: SearchBySNModel(context, controller: TextEditingController()), model: SearchByRequestModel(context, controller: TextEditingController()), + externalPo: SearchByExternalPO(context, controller: TextEditingController()), + internalPo: SearchByInternalPO(context, controller: TextEditingController()), ); search!.searchBySelectedValue = search?.requestNumber; } diff --git a/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart b/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart index b49834b4..1f430cdb 100644 --- a/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart +++ b/lib/new_views/pages/land_page/my_request/all_requests_search_page.dart @@ -58,6 +58,8 @@ class _AllRequestsSearchPageState extends State { search!.assetNo?.controller?.text = search?.assetNo?.value ?? ""; search!.manufacture?.controller?.text = search?.manufacture?.value ?? ""; search!.sn?.controller?.text = search?.sn?.value ?? ""; + search!.externalPo?.controller?.text = search?.externalPo?.value ?? ""; + search!.internalPo?.controller?.text = search?.internalPo?.value ?? ""; search!.model?.controller?.text = search?.model?.value ?? ""; } super.initState(); @@ -73,6 +75,8 @@ class _AllRequestsSearchPageState extends State { manufacture: SearchByManufactureModel(context, controller: TextEditingController()), sn: SearchBySNModel(context, controller: TextEditingController()), model: SearchByRequestModel(context, controller: TextEditingController()), + externalPo: SearchByExternalPO(context, controller: TextEditingController()), + internalPo: SearchByInternalPO(context, controller: TextEditingController()), ); search!.searchBySelectedValue = search?.requestNumber; } @@ -121,7 +125,16 @@ class _AllRequestsSearchPageState extends State { Text(context.translation.searchBy, style: AppTextStyles.heading5.copyWith(color: AppColor.labelTextStyleColor(context))), 8.height, RequestsSearchButtons( - items: [search!.requestNumber!, search!.assetName!, search!.assetNo!, search!.manufacture!, search!.sn!, search!.model!], + items: [ + search!.requestNumber!, + search!.assetName!, + search!.assetNo!, + search!.manufacture!, + search!.sn!, + search!.model!, + search!.externalPo!, + search!.internalPo!, + ], initialValue: search!.searchBySelectedValue!, onSelect: (value) { if (search!.searchBySelectedValue != value) { diff --git a/lib/new_views/pages/land_page/my_request/my_requests_page.dart b/lib/new_views/pages/land_page/my_request/my_requests_page.dart index 2dc66f86..402bbd04 100644 --- a/lib/new_views/pages/land_page/my_request/my_requests_page.dart +++ b/lib/new_views/pages/land_page/my_request/my_requests_page.dart @@ -353,6 +353,8 @@ class _MyRequestsPageState extends State with SingleTickerProvid (_search!.assetName?.value?.isNotEmpty ?? false) || (_search!.manufacture?.value?.isNotEmpty ?? false) || (_search!.sn?.value?.isNotEmpty ?? false) || + (_search!.externalPo?.value?.isNotEmpty ?? false) || + (_search!.internalPo?.value?.isNotEmpty ?? false) || (_search!.statuses?.isNotEmpty ?? false) || (_search!.typeTransaction?.isNotEmpty ?? false) || (_search!.startDate != null) || @@ -481,6 +483,30 @@ class _MyRequestsPageState extends State with SingleTickerProvid }, )); } + if (_search?.externalPo?.value?.isNotEmpty ?? false) { + chips.add(_buildFilterChip( + label: 'External PO: ${_search!.externalPo!.value}', + onDelete: () { + setState(() { + _search!.externalPo!.value = null; + _search!.externalPo!.controller?.clear(); + _refreshWithFilters(); + }); + }, + )); + } + if (_search?.internalPo?.value?.isNotEmpty ?? false) { + chips.add(_buildFilterChip( + label: 'Internal PO: ${_search!.internalPo!.value}', + onDelete: () { + setState(() { + _search!.internalPo!.value = null; + _search!.internalPo!.controller?.clear(); + _refreshWithFilters(); + }); + }, + )); + } // Model if (_search?.model?.value?.isNotEmpty ?? false) { @@ -664,6 +690,10 @@ class _MyRequestsPageState extends State with SingleTickerProvid _search?.manufacture?.controller?.clear(); _search?.sn?.value = null; _search?.sn?.controller?.clear(); + _search?.externalPo?.value = null; + _search?.externalPo?.controller?.clear(); + _search?.internalPo?.value = null; + _search?.internalPo?.controller?.clear(); _search?.model?.value = null; _search?.model?.controller?.clear(); _search?.statuses?.clear();