6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit 44a6b73c
Changed files
.../pages/prereg_up_sales_catalog_page.dart | 1 - .../components/catalog/room_upgrade_catalog.dart | 14 +++---- .../components/catalog/service_catalog.dart | 44 +++++++++++----------- .../components/up_sales_services_widget.dart | 41 +++++++++----------- .../lib/up_sales/cubit/up_sales_cubit.dart | 13 +++++-- .../lib/up_sales/cubit/up_sales_state.dart | 16 ++++---- .../lib/up_sales/models/room_upgrade_list.dart | 10 +++-- comwell_key_app/lib/up_sales/up_sales_catalog.dart | 6 +-- 8 files changed, 70 insertions(+), 75 deletions(-)
Diff
diff --git a/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart b/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
index 364b31dd..286dd3b0 100644
--- a/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
+++ b/comwell_key_app/lib/pregistration/pages/prereg_up_sales_catalog_page.dart
@@ -88,7 +88,6 @@ class PreregUpSalesCatalogPage extends StatelessWidget {
booking: cubit.booking,
availableRoomUpgrades: cubit.state.availableRoomUpgrades,
selectedRoomUpgrade: cubit.state.selectedRoomUpgrade,
- selectedUpSales: cubit.state.selectedUpSales,
onRoomUpgradeSelected: (upgrade, isSelected) {
if (isSelected) {
cubit.removeUpgrade(upgrade);
diff --git a/comwell_key_app/lib/up_sales/components/catalog/room_upgrade_catalog.dart b/comwell_key_app/lib/up_sales/components/catalog/room_upgrade_catalog.dart
index d81f6754..3a1a5dc1 100644
--- a/comwell_key_app/lib/up_sales/components/catalog/room_upgrade_catalog.dart
+++ b/comwell_key_app/lib/up_sales/components/catalog/room_upgrade_catalog.dart
@@ -14,17 +14,15 @@ import 'package:go_router/go_router.dart';
class RoomUpgradeCatalog extends StatelessWidget {
final List<RoomUpgrade> availableRoomUpgrades;
final String selectedRoomUpgrade;
- final List<Upgrade> selectedUpSales;
- final void Function(RoomUpgrade, bool)? onRoomUpgradeSelected;
- final void Function(Upgrade)? onTap;
+ final void Function(RoomUpgrade, bool) onRoomUpgradeSelected;
+ final void Function(Upgrade) onTap;
final Booking booking;
const RoomUpgradeCatalog({
super.key,
required this.availableRoomUpgrades,
required this.selectedRoomUpgrade,
- required this.selectedUpSales,
- this.onRoomUpgradeSelected,
- this.onTap,
+ required this.onRoomUpgradeSelected,
+ required this.onTap,
required this.booking
});
@@ -65,7 +63,7 @@ class RoomUpgradeCatalog extends StatelessWidget {
final upgrade = result[0] as RoomUpgrade;
final isSelected = result[1] as bool;
- onRoomUpgradeSelected?.call(upgrade, isSelected);
+ onRoomUpgradeSelected(upgrade, isSelected);
}
},
child: UpSalesUpgradesWidget(
@@ -76,7 +74,7 @@ class RoomUpgradeCatalog extends StatelessWidget {
routeName: AppRoutes.roomUpgrade.name,
showCounter: false,
onTap: (upgrade) {
- onTap?.call(upgrade);
+ onTap(upgrade);
},
),
);
diff --git a/comwell_key_app/lib/up_sales/components/catalog/service_catalog.dart b/comwell_key_app/lib/up_sales/components/catalog/service_catalog.dart
index a687704b..e35f3087 100644
--- a/comwell_key_app/lib/up_sales/components/catalog/service_catalog.dart
+++ b/comwell_key_app/lib/up_sales/components/catalog/service_catalog.dart
@@ -1,13 +1,10 @@
import 'package:comwell_key_app/common/const.dart';
import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/routing/app_routes.dart';
-import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/up_sales/components/up_sales_services_widget.dart';
import 'package:comwell_key_app/up_sales/models/addon_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/upgrade.dart';
-import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/room_upgrade_list.dart';
-import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
@@ -19,20 +16,20 @@ class ServiceCatalog extends StatelessWidget {
final void Function(AddOnUpgrade, bool) onServiceSelected;
final Booking booking;
final bool isSinglePurchase;
- const ServiceCatalog(
- {super.key,
- required this.upSales,
- this.height,
- required this.onTap,
- this.showRadioButton = true,
- required this.onServiceSelected,
- required this.booking,
- this.isSinglePurchase = false});
+
+ const ServiceCatalog({
+ super.key,
+ required this.upSales,
+ this.height,
+ required this.onTap,
+ this.showRadioButton = true,
+ required this.onServiceSelected,
+ required this.booking,
+ this.isSinglePurchase = false,
+ });
@override
Widget build(BuildContext context) {
- print("single purchase in catalog: $isSinglePurchase");
-
return SizedBox(
height: height ?? kUpSalesServiceWidgetHeightSmall,
child: ListView.builder(
@@ -44,17 +41,16 @@ class ServiceCatalog extends StatelessWidget {
return GestureDetector(
onTap: () async {
final result = await context.pushNamed(
- AppRoutes.servicesUpgrade.name,
- extra: RoomUpgradeList(
- booking: booking,
- addOnUpgrade: upSales.elementAt(index),
- isRoomUpgradeSelected: isSelected,
- isSinglePurchase: isSinglePurchase
- ));
+ AppRoutes.servicesUpgrade.name,
+ extra: RoomUpgradeList(
+ booking: booking,
+ addOnUpgrade: upSales.elementAt(index),
+ isRoomUpgradeSelected: isSelected,
+ isSinglePurchase: isSinglePurchase));
if (result is List && result.length == 2) {
final upgrade = result[0] as AddOnUpgrade;
final isSelected = result[1] as bool;
-
+
onServiceSelected.call(upgrade, isSelected);
}
},
@@ -64,7 +60,9 @@ class ServiceCatalog extends StatelessWidget {
upgrade: upSales.elementAt(index),
isSelected: isSelected,
isPopular: isPopular,
- onTap: onTap,
+ onTap: () {
+ onTap(upSales.elementAt(index));
+ },
),
);
},
diff --git a/comwell_key_app/lib/up_sales/components/up_sales_services_widget.dart b/comwell_key_app/lib/up_sales/components/up_sales_services_widget.dart
index 35f51f00..fd52f105 100644
--- a/comwell_key_app/lib/up_sales/components/up_sales_services_widget.dart
+++ b/comwell_key_app/lib/up_sales/components/up_sales_services_widget.dart
@@ -1,7 +1,6 @@
import 'package:comwell_key_app/themes/light_theme.dart';
import 'package:comwell_key_app/up_sales/components/comwell_radio_button.dart';
import 'package:comwell_key_app/up_sales/components/tags.dart';
-import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/upgrade.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
@@ -10,20 +9,21 @@ class UpSalesServicesWidget extends StatelessWidget {
final double width;
final double height;
final Upgrade upgrade;
- final bool? isSelected;
+ final bool isSelected;
final bool? isPopular;
- final void Function(Upgrade)? onTap;
+ final VoidCallback onTap;
final bool showRadioButton;
- const UpSalesServicesWidget(
- {super.key,
- this.width = 328,
- this.height = 252,
- required this.upgrade,
- this.isSelected,
- this.isPopular,
- this.onTap,
- this.showRadioButton = true,
- });
+
+ const UpSalesServicesWidget({
+ super.key,
+ this.width = 328,
+ this.height = 252,
+ required this.upgrade,
+ required this.isSelected,
+ required this.onTap,
+ this.isPopular,
+ this.showRadioButton = true,
+ });
@override
Widget build(BuildContext context) {
@@ -54,8 +54,7 @@ class UpSalesServicesWidget extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- Text(upgrade.name,
- style: theme.textTheme.headlineMedium),
+ Text(upgrade.name, style: theme.textTheme.headlineMedium),
],
),
),
@@ -65,16 +64,13 @@ class UpSalesServicesWidget extends StatelessWidget {
Row(
children: [
Text(
- "total_charge_value".tr(args: [upgrade.price.toString()]),
+ "total_charge_value"
+ .tr(args: [upgrade.price.toString()]),
style: theme.textTheme.headlineMedium,
),
const SizedBox(width: 8),
if (showRadioButton)
- ComwellRadioButton(
- selected: isSelected ?? false,
- onTap: () {
- onTap?.call(upgrade);
- }),
+ ComwellRadioButton(selected: isSelected, onTap: onTap),
],
),
],
@@ -84,8 +80,7 @@ class UpSalesServicesWidget extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- if (isPopular!)
- TagWidget(text: upgrade.tags.first.toUpperCase()),
+ if (isPopular!) TagWidget(text: upgrade.tags.first.toUpperCase()),
const SizedBox(height: 8),
SizedBox(
width: 250,
diff --git a/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart b/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
index 28f83550..477cb7a7 100644
--- a/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
+++ b/comwell_key_app/lib/up_sales/cubit/up_sales_cubit.dart
@@ -48,10 +48,8 @@ class UpSalesCubit extends Cubit<UpSalesState> {
void toggleSelectedUpgrade(Upgrade upgrade) {
if (upgrade is RoomUpgrade) {
emit(state.updateRoomUpgrade(roomUpgrade: upgrade));
- } else {
- print("qqq upgrade 1 ${state.addOnUpgrades.where((e) => e.id == upgrade.id)}");
- emit(state.toggleSelectedAddonUpsale(upgrade: upgrade as AddOnUpgrade));
- print("qqq upgrade 2 ${state.addOnUpgrades.where((e) => e.id == upgrade.id)}");
+ } else if (upgrade is AddOnUpgrade) {
+ emit(state.toggleSelectedAddonUpsale(upgrade: upgrade));
}
}
@@ -80,6 +78,13 @@ class UpSalesCubit extends Cubit<UpSalesState> {
return selectedUpgrades;
}
+ List<AddOnUpgrade> get otherUpgrades {
+ final selectedUpgrades = state.addOnUpgrades
+ .where((upgrade) => !upgrade.isService)
+ .toList();
+ return selectedUpgrades;
+ }
+
void toggleTermsAccepted() {
emit(state.copyWith(termsAccepted: !state.termsAccepted));
}
diff --git a/comwell_key_app/lib/up_sales/cubit/up_sales_state.dart b/comwell_key_app/lib/up_sales/cubit/up_sales_state.dart
index 82030cbe..0995ad6a 100644
--- a/comwell_key_app/lib/up_sales/cubit/up_sales_state.dart
+++ b/comwell_key_app/lib/up_sales/cubit/up_sales_state.dart
@@ -1,7 +1,6 @@
import 'package:comwell_key_app/up_sales/models/addon_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/room_upgrade.dart';
import 'package:comwell_key_app/up_sales/models/up_sales_processing_state.dart';
-import 'package:comwell_key_app/up_sales/models/upgrade.dart';
import 'package:comwell_key_app/up_sales/models/up_sales.dart';
import 'package:equatable/equatable.dart';
@@ -14,6 +13,7 @@ class UpSalesState extends Equatable {
final bool isLoading;
final bool termsAccepted;
final UpSalesProcessingState processingState;
+
const UpSalesState({
required this.selected,
required this.addOnUpgrades,
@@ -55,7 +55,9 @@ class UpSalesState extends Equatable {
copyWith(isLoading: false, availableRoomUpgrades: upSales.roomUpgrades);
UpSalesState toggleSelectedAddonUpsale({required AddOnUpgrade upgrade}) {
- return updateUprade(upgrade.copyWith(isSelected: !upgrade.isSelected));
+ final upgradeIsSelected = upgrade.isSelected;
+ final updatedUpgrade = upgrade.copyWith(isSelected: !upgradeIsSelected);
+ return updateUpgrade(updatedUpgrade);
}
UpSalesState updateRoomUpgrade({required RoomUpgrade roomUpgrade}) =>
@@ -64,21 +66,17 @@ class UpSalesState extends Equatable {
UpSalesState removeRoomUpgrade() => copyWith(selectedRoomUpgrade: '');
UpSalesState removeSelectedUpSales({required AddOnUpgrade upgrade}) {
- final updatedAddOnUpgrades = addOnUpgrades.toList();
- final index = updatedAddOnUpgrades.indexWhere((e) => e.id == upgrade.id);
- updatedAddOnUpgrades[index] =
- upgrade.copyWith(quantity: 0, isSelected: false);
- return copyWith(addOnUpgrades: updatedAddOnUpgrades);
+ return updateUpgrade(upgrade.copyWith(quantity: 0, isSelected: false));
}
UpSalesState updateSelectedUpgradeWithQuantity(
AddOnUpgrade upgrade,
int quantity,
) {
- return updateUprade(upgrade.copyWith(quantity: quantity));
+ return updateUpgrade(upgrade.copyWith(quantity: quantity));
}
- UpSalesState updateUprade(AddOnUpgrade upgrade) {
+ UpSalesState updateUpgrade(AddOnUpgrade upgrade) {
final updatedAddOnUpgrades = addOnUpgrades.toList();
final index = updatedAddOnUpgrades.indexWhere((e) => e.id == upgrade.id);
updatedAddOnUpgrades[index] = upgrade;
diff --git a/comwell_key_app/lib/up_sales/models/room_upgrade_list.dart b/comwell_key_app/lib/up_sales/models/room_upgrade_list.dart
index 82399a5c..afe361f0 100644
--- a/comwell_key_app/lib/up_sales/models/room_upgrade_list.dart
+++ b/comwell_key_app/lib/up_sales/models/room_upgrade_list.dart
@@ -9,7 +9,11 @@ class RoomUpgradeList {
final bool isRoomUpgradeSelected;
final bool isSinglePurchase;
- RoomUpgradeList({required this.booking, this.roomUpgrade, this.addOnUpgrade, required this.isRoomUpgradeSelected, this.isSinglePurchase = false});
-
+ RoomUpgradeList({
+ required this.booking,
+ this.roomUpgrade,
+ this.addOnUpgrade,
+ required this.isRoomUpgradeSelected,
+ this.isSinglePurchase = false,
+ });
}
-
diff --git a/comwell_key_app/lib/up_sales/up_sales_catalog.dart b/comwell_key_app/lib/up_sales/up_sales_catalog.dart
index 65177713..e4257a78 100644
--- a/comwell_key_app/lib/up_sales/up_sales_catalog.dart
+++ b/comwell_key_app/lib/up_sales/up_sales_catalog.dart
@@ -6,7 +6,6 @@ import 'package:comwell_key_app/up_sales/components/up_sales_continue_button.dar
import 'package:comwell_key_app/up_sales/cubit/up_sales_cubit.dart';
import 'package:comwell_key_app/up_sales/cubit/up_sales_state.dart';
import 'package:comwell_key_app/themes/light_theme.dart';
-import 'package:comwell_key_app/up_sales/models/addon_upgrade.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
@@ -19,7 +18,7 @@ class UpSalesCatalog extends StatelessWidget {
final theme = Theme.of(context);
return BlocBuilder<UpSalesCubit, UpSalesState>(builder: (context, state) {
final cubit = context.read<UpSalesCubit>();
- final serviceUpgrades = cubit.upSales.addOnUpgrades
+ final serviceUpgrades = cubit.state.addOnUpgrades
.where((upgrade) => upgrade.isService)
.toList();
final addonUpgrades = cubit.upSales.addOnUpgrades
@@ -80,7 +79,6 @@ class UpSalesCatalog extends StatelessWidget {
booking: cubit.booking,
availableRoomUpgrades: cubit.upSales.roomUpgrades,
selectedRoomUpgrade: cubit.state.selectedRoomUpgrade,
- selectedUpSales: cubit.selectedAddOnUpgrades,
onRoomUpgradeSelected: (upgrade, isSelected) {
cubit.toggleSelectedUpgrade(upgrade);
},
@@ -98,7 +96,7 @@ class UpSalesCatalog extends StatelessWidget {
),
const SizedBox(height: 8),
AddOnUpgradeCatalog(
- addOnUpgrades: cubit.selectedAddOnUpgrades,
+ addOnUpgrades: cubit.otherUpgrades,
extrasTotalPrice: cubit.extrasTotalPrice,
selectedRoomUpgrade: selectedRoomUpgrade?.id ?? '',
onAddOnUpgradeSelected: (upgrade, quantity) {