From 23e6c1608a47ff41253e851835116b2a61b1c48d Mon Sep 17 00:00:00 2001 From: Venba Team Date: Fri, 28 Mar 2025 18:03:15 +0530 Subject: [PATCH] Itinerary List Dropdown --- lib/Screens/itnerary/visa.dart | 2 -- lib/Screens/itnerary_list/flight_list.dart | 4 ++-- lib/Screens/itnerary_list/forex_list.dart | 21 ++++++++++++++++-- lib/Screens/itnerary_list/insurance_list.dart | 22 +++++++++++++++++-- lib/Screens/itnerary_list/visa_list.dart | 15 ++++++++++++- .../plans/dynamic_itinerary_stepper.dart | 3 ++- 6 files changed, 57 insertions(+), 10 deletions(-) diff --git a/lib/Screens/itnerary/visa.dart b/lib/Screens/itnerary/visa.dart index a7fe3d2..e78df4c 100644 --- a/lib/Screens/itnerary/visa.dart +++ b/lib/Screens/itnerary/visa.dart @@ -377,8 +377,6 @@ class _VisaScreenState extends State { // List countryNames = countryList.map((item) => item['country_name'] as String).toList(); // - - late Map countryMap; // Mapping country_code -> country_name late List countryCodes; // List of country codes diff --git a/lib/Screens/itnerary_list/flight_list.dart b/lib/Screens/itnerary_list/flight_list.dart index 0797a16..f2e769d 100644 --- a/lib/Screens/itnerary_list/flight_list.dart +++ b/lib/Screens/itnerary_list/flight_list.dart @@ -31,7 +31,7 @@ class FlightListWidget extends StatelessWidget { horizontalInside: BorderSide(color: Colors.black12), // Only horizontal lines ), columns: const [ - DataColumn(label: Text('#')), + // DataColumn(label: Text('#')), DataColumn(label: Text('Trip Type')), DataColumn(label: Text('From')), DataColumn(label: Text('To')), @@ -61,7 +61,7 @@ class FlightListWidget extends StatelessWidget { return DataRow(cells: [ - DataCell(Text(item["indx"]?.toString() ?? "N/A")), + // DataCell(Text(item["indx"]?.toString() ?? "N/A")), DataCell(Text(item["trip_type"]?.toString() ?? "N/A")), DataCell(Text(item["trips"].isNotEmpty ? item["trips"][0]["from_place"]?.toString() ?? "N/A" : "N/A")), DataCell(Text(item["trips"].isNotEmpty ? item["trips"][0]["to_place"]?.toString() ?? "N/A" : "N/A")), diff --git a/lib/Screens/itnerary_list/forex_list.dart b/lib/Screens/itnerary_list/forex_list.dart index cd7d0d4..59b400b 100644 --- a/lib/Screens/itnerary_list/forex_list.dart +++ b/lib/Screens/itnerary_list/forex_list.dart @@ -7,8 +7,10 @@ class ForexListWidget extends StatelessWidget{ final List> forexList; final Function(bool, Map, String)onOpen; final Function(Map) onDeleteForex; + final List? apiCountryData; - const ForexListWidget({super.key, required this.forexList, required this.onOpen, required this.onDeleteForex}); + const ForexListWidget({super.key, required this.forexList, required this.onOpen, + required this.onDeleteForex,required this.apiCountryData}); @override Widget build(BuildContext context) { @@ -59,12 +61,26 @@ class ForexListWidget extends StatelessWidget{ } List _buildDataRows() { + List countryList = apiCountryData ?? []; List> filteredList = forexList .where((item) => item["is_active"] == "1") .toList(); print("filteredList- $filteredList"); + + String getRequestForCountry(String? countryCode) { + if (countryCode == null) return "N/A"; + + return countryList + .firstWhere( + (element) => element["country_code"].toString() == countryCode, + orElse: () => {"country_name": "N/A"}, + )["country_name"] + .toString(); + } + + return filteredList.asMap().entries.map((entry) { Map item = entry.value; @@ -73,7 +89,8 @@ class ForexListWidget extends StatelessWidget{ // DataCell(Text(item["indx"]?.toString() ?? "N/A")), // Index column DataCell(Text(item["start_date"] ?? "N/A")), DataCell(Text(item["end_date"] ?? "N/A")), - DataCell(Text(item["country_code"] ?? "N/A")), + DataCell( Text(getRequestForCountry( item["country_code"]!.toString()))), + // DataCell(Text(item["country_code"] ?? "N/A")), DataCell(Text(item["perdiem_amount"] ?? "N/A")), DataCell(Row( children: [ diff --git a/lib/Screens/itnerary_list/insurance_list.dart b/lib/Screens/itnerary_list/insurance_list.dart index 5e01369..e0b4dbf 100644 --- a/lib/Screens/itnerary_list/insurance_list.dart +++ b/lib/Screens/itnerary_list/insurance_list.dart @@ -6,7 +6,9 @@ class InsuranceListWidget extends StatelessWidget { final List> insuranceList; final Function(bool, Map, String)onOpen; final Function(Map)onDeleteInsurance; - const InsuranceListWidget({super.key, required this.insuranceList, required this.onOpen,required this.onDeleteInsurance}); + final Map? apiData; + const InsuranceListWidget({super.key, required this.insuranceList, required this.onOpen,required this.apiData, + required this.onDeleteInsurance}); @override Widget build(BuildContext context) { @@ -51,17 +53,33 @@ class InsuranceListWidget extends StatelessWidget { List _buildDataRows() { + List> filteredList = insuranceList .where((item) => item["is_active"] == "1") .toList(); print("filteredList- $filteredList"); + List insurancetypeList = apiData?['insurance_type_of_insurance'] ?? []; + + + String getRequestForInsuranceType(String? specialRequestKey) { + if (specialRequestKey == null) return "N/A"; + + return insurancetypeList + .firstWhere( + (element) => element["dropdown_key"].toString() == specialRequestKey, + orElse: () => {"dropdown_value": "N/A"}, + )["dropdown_value"] + .toString(); + } + return filteredList.asMap().entries.map((entry) { Map item = entry.value; return DataRow(cells: [ // DataCell(Text(item["indx"]?.toString() ?? "N/A")), // Index column - DataCell(Text(item["type_of_insurance"]!)), + // DataCell(Text(item["type_of_insurance"]!)), + DataCell( Text(getRequestForInsuranceType( item["type_of_insurance"]!.toString()))), DataCell(Text(item["start_date"]!)), DataCell(Text(item["end_date"]!)), DataCell(Row( diff --git a/lib/Screens/itnerary_list/visa_list.dart b/lib/Screens/itnerary_list/visa_list.dart index 4d3cd31..176057f 100644 --- a/lib/Screens/itnerary_list/visa_list.dart +++ b/lib/Screens/itnerary_list/visa_list.dart @@ -58,6 +58,7 @@ class VisaListWidget extends StatelessWidget { print("filteredList- $filteredList"); List visatypeList = apiData?['visa_type_of_visa'] ?? []; + List countryList = apiCountryData ?? []; String getRequestForVisa(String? specialRequestKey) { if (specialRequestKey == null) return "N/A"; @@ -70,6 +71,17 @@ class VisaListWidget extends StatelessWidget { .toString(); } + String getRequestForCountry(String? countryCode) { + if (countryCode == null) return "N/A"; + + return countryList + .firstWhere( + (element) => element["country_code"].toString() == countryCode, + orElse: () => {"country_name": "N/A"}, + )["country_name"] + .toString(); + } + return filteredList.asMap().entries.map((entry){ @@ -81,7 +93,8 @@ class VisaListWidget extends StatelessWidget { // DataCell(Text(item["indx"]?.toString() ?? "N/A")), // DataCell(Text(item["type_of_visa"]!)), DataCell( Text(getRequestForVisa( item["type_of_visa"]!.toString()))), - DataCell(Text(item["country_code"]!)), + DataCell( Text(getRequestForCountry( item["country_code"]!.toString()))), + // DataCell(Text(item["country_code"]!)), DataCell(Text(item["start_date"]!)), DataCell(Row( children: [ diff --git a/lib/Screens/plans/dynamic_itinerary_stepper.dart b/lib/Screens/plans/dynamic_itinerary_stepper.dart index a594878..84e110a 100644 --- a/lib/Screens/plans/dynamic_itinerary_stepper.dart +++ b/lib/Screens/plans/dynamic_itinerary_stepper.dart @@ -315,7 +315,7 @@ class _DynamicItineraryState extends State { break; case "Insurance": selectedListWidget = InsuranceListWidget(insuranceList : itineraryData["Insurance"]!, - onOpen: handleEdit, + onOpen: handleEdit, apiData: widget.apiData, onDeleteInsurance:(data) => handleItinerarydelete("Insurance", data),); break; case "Visa": @@ -326,6 +326,7 @@ class _DynamicItineraryState extends State { break; case "Forex": selectedListWidget = ForexListWidget(forexList: itineraryData["Forex"]!, + apiCountryData : widget.apiCountryData, onOpen: handleEdit, onDeleteForex: (data) => handleItinerarydelete("Forex", data),); break;