6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit f1f9ac7a

AuthorNKL<nikolaj.king@gmail.com>
Date2026-03-13 11:48:21 +0100
moved mappers back to services

Changed files

.../interceptors/mappers/addon_item_mapper.dart    |  44 -------
 .../interceptors/mappers/booking_mapper.dart       | 140 ---------------------
 .../interceptors/mappers/bookings_mapper.dart      |  15 ---
 .../services/interceptors/mappers/room_mapper.dart |  21 ----
 .../services/interceptors/mappers/user_mapper.dart |  92 --------------
 .../lib/services/mappers/addon_item_mapper.dart    |  44 +++++++
 .../lib/services/mappers/booking_mapper.dart       | 140 +++++++++++++++++++++
 .../lib/services/mappers/bookings_mapper.dart      |  15 +++
 .../lib/services/mappers/room_mapper.dart          |  21 ++++
 .../lib/services/mappers/user_mapper.dart          |  92 ++++++++++++++
 10 files changed, 312 insertions(+), 312 deletions(-)

Diff

diff --git a/comwell_key_app/lib/services/interceptors/mappers/addon_item_mapper.dart b/comwell_key_app/lib/services/interceptors/mappers/addon_item_mapper.dart
deleted file mode 100644
index c737c553..00000000
--- a/comwell_key_app/lib/services/interceptors/mappers/addon_item_mapper.dart
+++ /dev/null
@@ -1,44 +0,0 @@
-import 'package:comwell_key_app/services/models/booking_dto.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/addon_upgrade.dart';
-
-extension AddOnItemDTOMapper on BookingAddonItem {
- Upgrade toUpgrade() {
- // Determine if this is a room upgrade or addon based on the code
- // You may need to adjust this logic based on your business rules
- if (code.contains('ROOM') || code.contains('SDP') || code.contains('STD')) {
- // This is a room upgrade
- return RoomUpgrade(
- id: code,
- name: description,
- price: price.toInt(),
- currency: "DKK",
- images: const [],
- description: description,
- quantity: quantity,
- facilityTypes: const [],
- roomSize: 0,
- );
- } else {
- // This is an addon upgrade
- return AddOnUpgrade(
- id: code,
- name: description,
- price: price.toInt(),
- currency: "DKK",
- images: const [],
- description: description,
- isSelected: false,
- quantity: quantity,
- isService: true,
- isPopular: false,
- onlyAvailableBeforeCheckin: false,
- );
- }
- }
-}
-
- extension ListAddOnItemDTOMapper on List<BookingAddonItem> {
- List<Upgrade> toUpgrades() => map((dto) => dto.toUpgrade()).toList();
-}
diff --git a/comwell_key_app/lib/services/interceptors/mappers/booking_mapper.dart b/comwell_key_app/lib/services/interceptors/mappers/booking_mapper.dart
deleted file mode 100644
index 4d044712..00000000
--- a/comwell_key_app/lib/services/interceptors/mappers/booking_mapper.dart
+++ /dev/null
@@ -1,140 +0,0 @@
-import 'package:comwell_key_app/overview/models/booking.dart';
-import 'package:comwell_key_app/overview/models/guest.dart';
-import 'package:comwell_key_app/overview/models/room.dart';
-import 'package:comwell_key_app/services/models/booking_dto.dart';
-import 'package:comwell_key_app/services/models/room_dto.dart';
-import 'package:comwell_key_app/services/interceptors/mappers/room_mapper.dart';
-
-//TODO: Fix actual image
-extension BookingDTOMapper on BookingDTO {
- Booking toBooking() {
- final startDate = DateTime.parse(dayIn);
- final endDate = DateTime.parse(dayOut);
- final mappedGuests = guests.map(
- (guest) => Guest(
- firstName: guest.firstName,
- lastName: guest.lastName,
- id: guest.id,
- ),
- ).toList();
- return Booking(
- id: confirmationNumber,
- confirmationNumber: confirmationNumber,
- roomNumber: roomNumber ?? "",
- startDate: startDate,
- endDate: endDate,
- reservationStatus: ReservationStatus.fromString(status),
- image: "assets/images/no_current_bookings_background.jpeg",
- hotelName: "Hotel $hotelCode",
- roomType: roomType ?? '',
- addOnItems: addOnItems,
- balance: balance ?? 0,
- children: children,
- firstName: firstName,
- lastName: lastName,
- bookerFirstName: bookerFirstName,
- bookerLastName: bookerLastName,
- adults: adults,
- hotelCode: hotelCode,
- bookingDate: startDate,
- digitalCard: true,
- isPrimaryGuest: isPrimaryGuest,
- maskedCardNumber: maskedCardNumber,
- guests: mappedGuests,
- );
- }
-}
-
-extension BookingMapper on Booking {
- BookingDTO toDTO() {
- final firstName = this.firstName;
- final lastName = this.lastName;
- final mappedGuests = guests
- .map(
- (guest) => GuestDTO(
- id: guest.id,
- firstName: guest.firstName,
- lastName: guest.lastName,
- ),
- )
- .toList();
- return BookingDTO(
- roomNumber: roomNumber,
- hotelCode: hotelCode,
- firstName: firstName,
- lastName: lastName,
- bookerFirstName: firstName,
- bookerLastName: lastName,
- guests: mappedGuests,
- confirmationNumber: confirmationNumber,
- dayIn: startDate.toIso8601String(),
- dayOut: endDate.toIso8601String(),
- cancelTime: null,
- isCancelled: false,
- bookTime: startDate.toIso8601String(),
- status: reservationStatus.name,
- roomType: roomType,
- adults: adults,
- children: children,
- balance: balance ?? 0,
- isPrimaryGuest: isPrimaryGuest,
- addOnItems: addOnItems ?? [],
- );
- }
-}
-
-extension BookingWithRoomsMapper on Booking {
- Booking withRooms(List<Room> rooms) {
- return Booking(
- id: id,
- confirmationNumber: confirmationNumber,
- roomNumber: roomNumber,
- startDate: startDate,
- endDate: endDate,
- reservationStatus: reservationStatus,
- image: image,
- hotelName: hotelName,
- roomType: roomType,
- addOnItems: addOnItems,
- balance: balance,
- children: children,
- firstName: firstName,
- lastName: lastName,
- bookerFirstName: bookerFirstName,
- bookerLastName: bookerLastName,
- adults: adults,
- hotelCode: hotelCode,
- bookingDate: bookingDate,
- digitalCard: digitalCard,
- isPrimaryGuest: isPrimaryGuest,
- maskedCardNumber: maskedCardNumber,
- );
- }
-}
-
-extension ListRoomMapper on List<RoomDto> {
- List<Room> toRooms() => map((dto) => dto.toRoom()).toList();
-}
-
-extension ListBookingMapper on Iterable<BookingDTO> {
- Iterable<Booking> toBookings() => map((dto) => dto.toBooking());
-}
-
-extension RoomTypeMapper on Booking {
- String toRoomType() {
- switch (roomType) {
- case "SDPBO":
- return "Standard Double Plus Room";
- case "SDBO":
- return "Standard Double Room";
- case "STPBO":
- return "Standard Twin Plus Room";
- case "STPO":
- return "Standard Twin Room";
- case "SUBO":
- return "Suite";
- default:
- return "Room";
- }
- }
-}
diff --git a/comwell_key_app/lib/services/interceptors/mappers/bookings_mapper.dart b/comwell_key_app/lib/services/interceptors/mappers/bookings_mapper.dart
deleted file mode 100644
index 4b5ea622..00000000
--- a/comwell_key_app/lib/services/interceptors/mappers/bookings_mapper.dart
+++ /dev/null
@@ -1,15 +0,0 @@
-import 'package:comwell_key_app/overview/models/bookings.dart';
-import 'package:comwell_key_app/services/interceptors/mappers/booking_mapper.dart';
-import 'package:comwell_key_app/services/models/bookings_dto.dart';
-
-extension BookingsMapper on BookingsDTO {
- Bookings toBookings() {
- return Bookings(
- current:
- current.map((booking) => booking.toBooking()).toList(),
- past: past.map((booking) => booking.toBooking()).toList(),
- cancelled:
- cancelled.map((booking) => booking.toBooking()).toList(),
- );
- }
-}
diff --git a/comwell_key_app/lib/services/interceptors/mappers/room_mapper.dart b/comwell_key_app/lib/services/interceptors/mappers/room_mapper.dart
deleted file mode 100644
index 5362417b..00000000
--- a/comwell_key_app/lib/services/interceptors/mappers/room_mapper.dart
+++ /dev/null
@@ -1,21 +0,0 @@
-import 'package:comwell_key_app/overview/models/room.dart';
-import 'package:comwell_key_app/services/models/room_dto.dart';
-
-extension RoomDTOMapper on RoomDto {
- Room toRoom() {
- return Room(
- confirmationNumber: confirmationNumber,
- assignedTo: assignedTo,
- name: name,
- description: description,
- guests: guests,
- imageAssets: imageAssets,
- roomFacilities: [],
- tags: tags,
- );
- }
-}
-
-extension ListRoomMapper on List<RoomDto> {
- List<Room> toRooms() => map((dto) => dto.toRoom()).toList();
-}
\ No newline at end of file
diff --git a/comwell_key_app/lib/services/interceptors/mappers/user_mapper.dart b/comwell_key_app/lib/services/interceptors/mappers/user_mapper.dart
deleted file mode 100644
index 2d7d6fc6..00000000
--- a/comwell_key_app/lib/services/interceptors/mappers/user_mapper.dart
+++ /dev/null
@@ -1,92 +0,0 @@
-import 'package:comwell_key_app/domain/models/address.dart';
-import 'package:comwell_key_app/domain/models/user.dart';
-import 'package:comwell_key_app/services/models/simple_user_dto.dart';
-import 'package:comwell_key_app/services/models/user_dto.dart';
-
-extension UserMapper on UserDto {
- User toUser() {
- return User(
- userId: userId,
- hmsId: hmsId ?? "",
- firstName: firstName,
- lastName: lastName,
- email: email,
- emailVerified: emailVerified,
- phoneNumber: phoneNumber,
- address: Address(
- street: addressStreet,
- city: addressCity,
- country: addressCountry,
- zipCode: addressZip,
- ),
- birthDate: birthDate ?? DateTime.now(),
- shopperReference: userId,
- points: points,
- gender: gender ?? "",
- isClubMember: isClubMember,
- createDate: createDate,
- companyId: companyId ?? "",
- companyName: companyName ?? "",
- symplifyId: symplifyId ?? "",
- signUpDate: signUpDate,
- signUpCampaign: signUpCampaign ?? "",
- signUpSource: signUpSource ?? "",
- locale: locale ?? "",
- wasRecentlyCreated: wasRecentlyCreated,
- nationality: nationality ?? "",
- );
- }
-}
-
-extension UserDtoMapper on User {
- UserDto toUserDto() {
- return UserDto(
- id: 0,
- userId: userId,
- hmsId: hmsId,
- firstName: firstName,
- lastName: lastName,
- email: email,
- emailVerified: emailVerified,
- isClubMember: isClubMember,
- birthDate: birthDate,
- createDate: createDate,
- companyId: companyId,
- companyName: companyName,
- symplifyId: symplifyId,
- phoneNumber: phoneNumber,
- gender: gender,
- addressStreet: address.street,
- addressZip: address.zipCode,
- addressCity: address.city,
- addressCountry: address.country,
- points: points,
- signUpDate: signUpDate,
- signUpCampaign: signUpCampaign,
- signUpSource: signUpSource,
- locale: null,
- wasRecentlyCreated: wasRecentlyCreated,
- permissions: null,
- // Permissions are not stored in User model
- nationality: nationality,
- );
- }
-}
-
-extension SimpleUserDtoMapper on User {
- SimpleUserDto toSimpleUserDto() {
- return SimpleUserDto(
- firstName: firstName,
- lastName: lastName,
- birthDate: birthDate?.toIso8601String(),
- phoneNumber: phoneNumber,
- gender: gender,
- addressStreet: address.street,
- addressZip: address.zipCode,
- addressCity: address.city,
- addressCountry: address.country,
- locale: locale.isNotEmpty ? locale : null,
- permissions: {}, // Permissions are not stored in User model
- );
- }
-}
\ No newline at end of file
diff --git a/comwell_key_app/lib/services/mappers/addon_item_mapper.dart b/comwell_key_app/lib/services/mappers/addon_item_mapper.dart
new file mode 100644
index 00000000..c737c553
--- /dev/null
+++ b/comwell_key_app/lib/services/mappers/addon_item_mapper.dart
@@ -0,0 +1,44 @@
+import 'package:comwell_key_app/services/models/booking_dto.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/addon_upgrade.dart';
+
+extension AddOnItemDTOMapper on BookingAddonItem {
+ Upgrade toUpgrade() {
+ // Determine if this is a room upgrade or addon based on the code
+ // You may need to adjust this logic based on your business rules
+ if (code.contains('ROOM') || code.contains('SDP') || code.contains('STD')) {
+ // This is a room upgrade
+ return RoomUpgrade(
+ id: code,
+ name: description,
+ price: price.toInt(),
+ currency: "DKK",
+ images: const [],
+ description: description,
+ quantity: quantity,
+ facilityTypes: const [],
+ roomSize: 0,
+ );
+ } else {
+ // This is an addon upgrade
+ return AddOnUpgrade(
+ id: code,
+ name: description,
+ price: price.toInt(),
+ currency: "DKK",
+ images: const [],
+ description: description,
+ isSelected: false,
+ quantity: quantity,
+ isService: true,
+ isPopular: false,
+ onlyAvailableBeforeCheckin: false,
+ );
+ }
+ }
+}
+
+ extension ListAddOnItemDTOMapper on List<BookingAddonItem> {
+ List<Upgrade> toUpgrades() => map((dto) => dto.toUpgrade()).toList();
+}
diff --git a/comwell_key_app/lib/services/mappers/booking_mapper.dart b/comwell_key_app/lib/services/mappers/booking_mapper.dart
new file mode 100644
index 00000000..4d044712
--- /dev/null
+++ b/comwell_key_app/lib/services/mappers/booking_mapper.dart
@@ -0,0 +1,140 @@
+import 'package:comwell_key_app/overview/models/booking.dart';
+import 'package:comwell_key_app/overview/models/guest.dart';
+import 'package:comwell_key_app/overview/models/room.dart';
+import 'package:comwell_key_app/services/models/booking_dto.dart';
+import 'package:comwell_key_app/services/models/room_dto.dart';
+import 'package:comwell_key_app/services/interceptors/mappers/room_mapper.dart';
+
+//TODO: Fix actual image
+extension BookingDTOMapper on BookingDTO {
+ Booking toBooking() {
+ final startDate = DateTime.parse(dayIn);
+ final endDate = DateTime.parse(dayOut);
+ final mappedGuests = guests.map(
+ (guest) => Guest(
+ firstName: guest.firstName,
+ lastName: guest.lastName,
+ id: guest.id,
+ ),
+ ).toList();
+ return Booking(
+ id: confirmationNumber,
+ confirmationNumber: confirmationNumber,
+ roomNumber: roomNumber ?? "",
+ startDate: startDate,
+ endDate: endDate,
+ reservationStatus: ReservationStatus.fromString(status),
+ image: "assets/images/no_current_bookings_background.jpeg",
+ hotelName: "Hotel $hotelCode",
+ roomType: roomType ?? '',
+ addOnItems: addOnItems,
+ balance: balance ?? 0,
+ children: children,
+ firstName: firstName,
+ lastName: lastName,
+ bookerFirstName: bookerFirstName,
+ bookerLastName: bookerLastName,
+ adults: adults,
+ hotelCode: hotelCode,
+ bookingDate: startDate,
+ digitalCard: true,
+ isPrimaryGuest: isPrimaryGuest,
+ maskedCardNumber: maskedCardNumber,
+ guests: mappedGuests,
+ );
+ }
+}
+
+extension BookingMapper on Booking {
+ BookingDTO toDTO() {
+ final firstName = this.firstName;
+ final lastName = this.lastName;
+ final mappedGuests = guests
+ .map(
+ (guest) => GuestDTO(
+ id: guest.id,
+ firstName: guest.firstName,
+ lastName: guest.lastName,
+ ),
+ )
+ .toList();
+ return BookingDTO(
+ roomNumber: roomNumber,
+ hotelCode: hotelCode,
+ firstName: firstName,
+ lastName: lastName,
+ bookerFirstName: firstName,
+ bookerLastName: lastName,
+ guests: mappedGuests,
+ confirmationNumber: confirmationNumber,
+ dayIn: startDate.toIso8601String(),
+ dayOut: endDate.toIso8601String(),
+ cancelTime: null,
+ isCancelled: false,
+ bookTime: startDate.toIso8601String(),
+ status: reservationStatus.name,
+ roomType: roomType,
+ adults: adults,
+ children: children,
+ balance: balance ?? 0,
+ isPrimaryGuest: isPrimaryGuest,
+ addOnItems: addOnItems ?? [],
+ );
+ }
+}
+
+extension BookingWithRoomsMapper on Booking {
+ Booking withRooms(List<Room> rooms) {
+ return Booking(
+ id: id,
+ confirmationNumber: confirmationNumber,
+ roomNumber: roomNumber,
+ startDate: startDate,
+ endDate: endDate,
+ reservationStatus: reservationStatus,
+ image: image,
+ hotelName: hotelName,
+ roomType: roomType,
+ addOnItems: addOnItems,
+ balance: balance,
+ children: children,
+ firstName: firstName,
+ lastName: lastName,
+ bookerFirstName: bookerFirstName,
+ bookerLastName: bookerLastName,
+ adults: adults,
+ hotelCode: hotelCode,
+ bookingDate: bookingDate,
+ digitalCard: digitalCard,
+ isPrimaryGuest: isPrimaryGuest,
+ maskedCardNumber: maskedCardNumber,
+ );
+ }
+}
+
+extension ListRoomMapper on List<RoomDto> {
+ List<Room> toRooms() => map((dto) => dto.toRoom()).toList();
+}
+
+extension ListBookingMapper on Iterable<BookingDTO> {
+ Iterable<Booking> toBookings() => map((dto) => dto.toBooking());
+}
+
+extension RoomTypeMapper on Booking {
+ String toRoomType() {
+ switch (roomType) {
+ case "SDPBO":
+ return "Standard Double Plus Room";
+ case "SDBO":
+ return "Standard Double Room";
+ case "STPBO":
+ return "Standard Twin Plus Room";
+ case "STPO":
+ return "Standard Twin Room";
+ case "SUBO":
+ return "Suite";
+ default:
+ return "Room";
+ }
+ }
+}
diff --git a/comwell_key_app/lib/services/mappers/bookings_mapper.dart b/comwell_key_app/lib/services/mappers/bookings_mapper.dart
new file mode 100644
index 00000000..4b5ea622
--- /dev/null
+++ b/comwell_key_app/lib/services/mappers/bookings_mapper.dart
@@ -0,0 +1,15 @@
+import 'package:comwell_key_app/overview/models/bookings.dart';
+import 'package:comwell_key_app/services/interceptors/mappers/booking_mapper.dart';
+import 'package:comwell_key_app/services/models/bookings_dto.dart';
+
+extension BookingsMapper on BookingsDTO {
+ Bookings toBookings() {
+ return Bookings(
+ current:
+ current.map((booking) => booking.toBooking()).toList(),
+ past: past.map((booking) => booking.toBooking()).toList(),
+ cancelled:
+ cancelled.map((booking) => booking.toBooking()).toList(),
+ );
+ }
+}
diff --git a/comwell_key_app/lib/services/mappers/room_mapper.dart b/comwell_key_app/lib/services/mappers/room_mapper.dart
new file mode 100644
index 00000000..5362417b
--- /dev/null
+++ b/comwell_key_app/lib/services/mappers/room_mapper.dart
@@ -0,0 +1,21 @@
+import 'package:comwell_key_app/overview/models/room.dart';
+import 'package:comwell_key_app/services/models/room_dto.dart';
+
+extension RoomDTOMapper on RoomDto {
+ Room toRoom() {
+ return Room(
+ confirmationNumber: confirmationNumber,
+ assignedTo: assignedTo,
+ name: name,
+ description: description,
+ guests: guests,
+ imageAssets: imageAssets,
+ roomFacilities: [],
+ tags: tags,
+ );
+ }
+}
+
+extension ListRoomMapper on List<RoomDto> {
+ List<Room> toRooms() => map((dto) => dto.toRoom()).toList();
+}
\ No newline at end of file
diff --git a/comwell_key_app/lib/services/mappers/user_mapper.dart b/comwell_key_app/lib/services/mappers/user_mapper.dart
new file mode 100644
index 00000000..2d7d6fc6
--- /dev/null
+++ b/comwell_key_app/lib/services/mappers/user_mapper.dart
@@ -0,0 +1,92 @@
+import 'package:comwell_key_app/domain/models/address.dart';
+import 'package:comwell_key_app/domain/models/user.dart';
+import 'package:comwell_key_app/services/models/simple_user_dto.dart';
+import 'package:comwell_key_app/services/models/user_dto.dart';
+
+extension UserMapper on UserDto {
+ User toUser() {
+ return User(
+ userId: userId,
+ hmsId: hmsId ?? "",
+ firstName: firstName,
+ lastName: lastName,
+ email: email,
+ emailVerified: emailVerified,
+ phoneNumber: phoneNumber,
+ address: Address(
+ street: addressStreet,
+ city: addressCity,
+ country: addressCountry,
+ zipCode: addressZip,
+ ),
+ birthDate: birthDate ?? DateTime.now(),
+ shopperReference: userId,
+ points: points,
+ gender: gender ?? "",
+ isClubMember: isClubMember,
+ createDate: createDate,
+ companyId: companyId ?? "",
+ companyName: companyName ?? "",
+ symplifyId: symplifyId ?? "",
+ signUpDate: signUpDate,
+ signUpCampaign: signUpCampaign ?? "",
+ signUpSource: signUpSource ?? "",
+ locale: locale ?? "",
+ wasRecentlyCreated: wasRecentlyCreated,
+ nationality: nationality ?? "",
+ );
+ }
+}
+
+extension UserDtoMapper on User {
+ UserDto toUserDto() {
+ return UserDto(
+ id: 0,
+ userId: userId,
+ hmsId: hmsId,
+ firstName: firstName,
+ lastName: lastName,
+ email: email,
+ emailVerified: emailVerified,
+ isClubMember: isClubMember,
+ birthDate: birthDate,
+ createDate: createDate,
+ companyId: companyId,
+ companyName: companyName,
+ symplifyId: symplifyId,
+ phoneNumber: phoneNumber,
+ gender: gender,
+ addressStreet: address.street,
+ addressZip: address.zipCode,
+ addressCity: address.city,
+ addressCountry: address.country,
+ points: points,
+ signUpDate: signUpDate,
+ signUpCampaign: signUpCampaign,
+ signUpSource: signUpSource,
+ locale: null,
+ wasRecentlyCreated: wasRecentlyCreated,
+ permissions: null,
+ // Permissions are not stored in User model
+ nationality: nationality,
+ );
+ }
+}
+
+extension SimpleUserDtoMapper on User {
+ SimpleUserDto toSimpleUserDto() {
+ return SimpleUserDto(
+ firstName: firstName,
+ lastName: lastName,
+ birthDate: birthDate?.toIso8601String(),
+ phoneNumber: phoneNumber,
+ gender: gender,
+ addressStreet: address.street,
+ addressZip: address.zipCode,
+ addressCity: address.city,
+ addressCountry: address.country,
+ locale: locale.isNotEmpty ? locale : null,
+ permissions: {}, // Permissions are not stored in User model
+ );
+ }
+}
\ No newline at end of file