6177214e-ce7c-49e3-99de-ff9721b26f63 — Commit ce9f97ee
Changed files
.../.generated/services/models/booking_dto.g.dart | 8 +++++- .../booking_details/bloc/booking_details_bloc.dart | 2 +- .../lib/check_in/check_in_repository.dart | 3 +++ comwell_key_app/lib/overview/models/booking.dart | 30 +++++++++++++++++++++- .../overview/repository/overview_repository.dart | 14 +++++++--- .../lib/profile/profile_repository.dart | 2 +- comwell_key_app/lib/services/api.dart | 3 ++- .../lib/services/mappers/booking_mapper.dart | 16 ++++++++---- .../lib/services/mappers/bookings_mapper.dart | 6 ++--- .../lib/services/models/booking_dto.dart | 8 +++++- .../lib/services/utils/api_endpoints.dart | 2 +- 11 files changed, 75 insertions(+), 19 deletions(-)
Diff
diff --git a/comwell_key_app/lib/.generated/services/models/booking_dto.g.dart b/comwell_key_app/lib/.generated/services/models/booking_dto.g.dart
index e40c4611..7d95bc1e 100644
--- a/comwell_key_app/lib/.generated/services/models/booking_dto.g.dart
+++ b/comwell_key_app/lib/.generated/services/models/booking_dto.g.dart
@@ -7,7 +7,7 @@ part of '../../../services/models/booking_dto.dart';
// **************************************************************************
BookingDTO _$BookingDTOFromJson(Map json) => BookingDTO(
- roomNumber: json['roomNumber'] as String,
+ roomNumber: json['roomNumber'] as String?,
hotelCode: json['hotelCode'] as String,
firstName: json['firstName'] as String,
lastName: json['lastName'] as String,
@@ -16,12 +16,15 @@ BookingDTO _$BookingDTOFromJson(Map json) => BookingDTO(
dayIn: json['dayIn'] as String,
dayOut: json['dayOut'] as String,
cancelTime: json['cancelTime'] as String,
+ status: json['status'] as String,
isCancelled: json['isCancelled'] as bool,
bookTime: json['bookTime'] as String,
roomType: json['roomType'] as String,
adults: (json['adults'] as num).toInt(),
children: (json['children'] as num).toInt(),
totalCharge: json['totalCharge'] as num,
+ balance: json['balance'] as num?,
+ maskedCardNumber: json['maskedCardNumber'] as String?,
);
Map<String, dynamic> _$BookingDTOToJson(BookingDTO instance) =>
@@ -35,10 +38,13 @@ Map<String, dynamic> _$BookingDTOToJson(BookingDTO instance) =>
'dayIn': instance.dayIn,
'dayOut': instance.dayOut,
'cancelTime': instance.cancelTime,
+ 'status': instance.status,
'isCancelled': instance.isCancelled,
'bookTime': instance.bookTime,
'roomType': instance.roomType,
'adults': instance.adults,
'children': instance.children,
'totalCharge': instance.totalCharge,
+ 'balance': instance.balance,
+ 'maskedCardNumber': instance.maskedCardNumber,
};
diff --git a/comwell_key_app/lib/booking_details/bloc/booking_details_bloc.dart b/comwell_key_app/lib/booking_details/bloc/booking_details_bloc.dart
index 5e3a29e8..c31d37be 100644
--- a/comwell_key_app/lib/booking_details/bloc/booking_details_bloc.dart
+++ b/comwell_key_app/lib/booking_details/bloc/booking_details_bloc.dart
@@ -31,6 +31,7 @@ class BookingDetailsBloc
try {
await checkIfHouseKeepingOrdered(emit);
await checkMobileKeys(emit);
+ await getBookingDetails();
} catch (e, st) {
if (kDebugMode) print("err=$e, $st");
emit(state.setupError());
@@ -47,7 +48,6 @@ class BookingDetailsBloc
}
Future<Booking> getBookingDetails() async {
-
final bookingDetails = await profileRepository.getBookingDetails(booking.confirmationId);
return bookingDetails;
}
diff --git a/comwell_key_app/lib/check_in/check_in_repository.dart b/comwell_key_app/lib/check_in/check_in_repository.dart
index 9870339f..2a0dc4ff 100644
--- a/comwell_key_app/lib/check_in/check_in_repository.dart
+++ b/comwell_key_app/lib/check_in/check_in_repository.dart
@@ -63,6 +63,7 @@ class CheckInRepository {
startDate: DateTime.now(),
endDate: DateTime.now(),
status: BookingStatus.current,
+ reservationStatus: ReservationStatus.newReservation,
image: "",
hotelName: "hotelName",
roomType: "roomType",
@@ -71,6 +72,8 @@ class CheckInRepository {
adults: 2,
hotelCode: "hotelCode",
totalCharge: 100,
+ balance: 0,
+ maskedCardNumber: "1234567890",
booker: const Guest(name: "Booker", id: "123"),
bookingDate: DateTime.now(),
digitalCard: true,
diff --git a/comwell_key_app/lib/overview/models/booking.dart b/comwell_key_app/lib/overview/models/booking.dart
index 3c973c4b..48fab78e 100644
--- a/comwell_key_app/lib/overview/models/booking.dart
+++ b/comwell_key_app/lib/overview/models/booking.dart
@@ -9,6 +9,7 @@ class Booking extends Equatable {
final DateTime startDate;
final DateTime endDate;
final BookingStatus status;
+ final ReservationStatus reservationStatus;
final String image;
final String hotelName;
final String hotelCode;
@@ -20,6 +21,8 @@ class Booking extends Equatable {
final bool digitalCard;
final Iterable<Guest> guests;
final num totalCharge;
+ final num? balance;
+ final String? maskedCardNumber;
Booking({
required this.id,
@@ -28,6 +31,7 @@ class Booking extends Equatable {
required this.startDate,
required this.endDate,
required this.status,
+ required this.reservationStatus,
required this.image,
required this.hotelName,
required this.roomType,
@@ -38,6 +42,8 @@ class Booking extends Equatable {
required this.bookingDate,
required this.digitalCard,
required this.totalCharge,
+ required this.balance,
+ required this.maskedCardNumber,
Iterable<Guest>? guests,
}) : guests = _ensureBookerInGuestList(booker, guests ?? []);
@@ -55,7 +61,7 @@ class Booking extends Equatable {
@override
String toString() {
- return "Booking(id: $id, confirmationId: $confirmationId, roomNumber: $roomNumber, startDate: $startDate, endDate: $endDate, status: $status, image: $image, hotelName: $hotelName, hotelCode: $hotelCode, roomType: $roomType, adults: $adults, children: $children, booker: $booker, bookingDate: $bookingDate, digitalCard: $digitalCard, guests: $guests)";
+ return "Booking(id: $id, confirmationId: $confirmationId, roomNumber: $roomNumber, startDate: $startDate, endDate: $endDate, status: $status, reservationStatus: $reservationStatus, image: $image, hotelName: $hotelName, hotelCode: $hotelCode, roomType: $roomType, adults: $adults, children: $children, booker: $booker, bookingDate: $bookingDate, digitalCard: $digitalCard, guests: $guests)";
}
@override
@@ -75,6 +81,9 @@ class Booking extends Equatable {
bookingDate,
guests,
totalCharge,
+ balance,
+ maskedCardNumber,
+ reservationStatus,
];
Booking copyWith({
@@ -84,6 +93,7 @@ class Booking extends Equatable {
DateTime? startDate,
DateTime? endDate,
BookingStatus? status,
+ ReservationStatus? reservationStatus,
String? image,
String? hotelName,
String? hotelCode,
@@ -103,6 +113,7 @@ class Booking extends Equatable {
startDate: startDate ?? this.startDate,
endDate: endDate ?? this.endDate,
status: status ?? this.status,
+ reservationStatus: reservationStatus ?? this.reservationStatus,
image: image ?? this.image,
hotelName: hotelName ?? this.hotelName,
hotelCode: hotelCode ?? this.hotelCode,
@@ -115,6 +126,8 @@ class Booking extends Equatable {
digitalCard: digitalCard,
guests: guests ?? this.guests,
totalCharge: totalCharge ?? this.totalCharge,
+ balance: balance,
+ maskedCardNumber: maskedCardNumber,
);
}
@@ -126,6 +139,21 @@ class Booking extends Equatable {
}
}
+enum ReservationStatus {
+ checkedIn,
+ checkedOut,
+ cancelled,
+ noShow,
+ newReservation,
+ preregistered,
+ unknown;
+
+ static ReservationStatus fromString(String value) {
+ return ReservationStatus.values
+ .firstWhere((status) => status.name == value);
+ }
+}
+
enum BookingStatus {
current,
past,
diff --git a/comwell_key_app/lib/overview/repository/overview_repository.dart b/comwell_key_app/lib/overview/repository/overview_repository.dart
index 62a2a7e2..5bbbd0b0 100644
--- a/comwell_key_app/lib/overview/repository/overview_repository.dart
+++ b/comwell_key_app/lib/overview/repository/overview_repository.dart
@@ -23,7 +23,7 @@ class OverviewRepository {
await database.bookingsDao.insertBookings(response);
return response.toBookings(user.id);
} catch (e) {
- throw Exception('Failed to fetch bookings$e');
+ throw Exception('Failed to fetch bookings $e');
}
}
@@ -44,13 +44,16 @@ class OverviewRepository {
dayIn: "31-12-2000",
dayOut: "31-12-2000",
cancelTime: "31-12-2000",
+ status: "newReservation",
isCancelled: false,
bookTime: "31-12-2000",
roomType: "??",
adults: 3,
children: 5,
- totalCharge: 12345);
- return dto.toBooking(user.id, BookingStatus.current);
+ totalCharge: 12345,
+ balance: 0,
+ maskedCardNumber: "1234567890");
+ return dto.toBooking(user.id, BookingStatus.current, ReservationStatus.newReservation);
}
}
@@ -61,6 +64,7 @@ final mockBookings = [1, 2, 3].map((i) => Booking(
startDate: DateTime.now(),
endDate: DateTime.now(),
status: BookingStatus.current,
+ reservationStatus: ReservationStatus.newReservation,
image: "assets/images/no_current_bookings_background.jpeg",
hotelName: "hotelName$i",
roomType: "roomType$i",
@@ -70,4 +74,6 @@ final mockBookings = [1, 2, 3].map((i) => Booking(
hotelCode: "hotelCode$i",
booker: const Guest(id: "id", name: "name"),
bookingDate: DateTime.now(),
- digitalCard: false));
+ digitalCard: false,
+ balance: 0,
+ maskedCardNumber: "1234567890"));
diff --git a/comwell_key_app/lib/profile/profile_repository.dart b/comwell_key_app/lib/profile/profile_repository.dart
index 051f75ab..9abf6336 100644
--- a/comwell_key_app/lib/profile/profile_repository.dart
+++ b/comwell_key_app/lib/profile/profile_repository.dart
@@ -44,7 +44,7 @@ class ProfileRepository {
Future<Booking> getBookingDetails(String bookingId) async {
final response = await api.getBookingDetails(bookingId);
await db.bookingsDao.insertBookings(BookingsDTO(current: [response], past: [], cancelled: []));
- return response.toBooking(user.id, BookingStatus.current);
+ return response.toBooking(user.id, BookingStatus.current, ReservationStatus.newReservation);
}
Future<User> fetchProfileSettings() async {
diff --git a/comwell_key_app/lib/services/api.dart b/comwell_key_app/lib/services/api.dart
index 1cb10835..5034eddc 100644
--- a/comwell_key_app/lib/services/api.dart
+++ b/comwell_key_app/lib/services/api.dart
@@ -209,7 +209,8 @@ class Api {
}
Future<BookingDTO> getBookingDetails(String bookingId) async {
- final response = await dio.get<Json>(ApiEndpoints.getBookingDetails, queryParameters: {'confirmationId': bookingId});
+ final response = await dio.get<Json>('${ApiEndpoints.getBookingDetails}$bookingId');
+ print("response=$response");
return BookingDTO.fromJson(response.data!);
}
}
diff --git a/comwell_key_app/lib/services/mappers/booking_mapper.dart b/comwell_key_app/lib/services/mappers/booking_mapper.dart
index 509fd5eb..d4e7e4ce 100644
--- a/comwell_key_app/lib/services/mappers/booking_mapper.dart
+++ b/comwell_key_app/lib/services/mappers/booking_mapper.dart
@@ -4,16 +4,17 @@ import 'package:comwell_key_app/services/models/booking_dto.dart';
//TODO: Fix actual image
extension BookingDTOMapper on BookingDTO {
- Booking toBooking(int userId, BookingStatus status) {
+ Booking toBooking(int userId, BookingStatus status, ReservationStatus reservationStatus) {
final startDate = DateTime.parse(dayIn);
final endDate = DateTime.parse(dayOut);
return Booking(
id: confirmationNumber,
confirmationId: confirmationNumber,
- roomNumber: roomNumber,
+ roomNumber: roomNumber ?? "",
startDate: startDate,
endDate: endDate,
status: status,
+ reservationStatus: reservationStatus,
image: "assets/images/no_current_bookings_background.jpeg",
hotelName: "Hotel $hotelCode",
roomType: roomType,
@@ -24,6 +25,8 @@ extension BookingDTOMapper on BookingDTO {
hotelCode: hotelCode,
bookingDate: startDate,
digitalCard: true,
+ balance: balance,
+ maskedCardNumber: maskedCardNumber,
);
}
}
@@ -42,14 +45,17 @@ extension BookingMapper on Booking {
cancelTime: "",
isCancelled: false,
bookTime: startDate.toIso8601String(),
+ status: reservationStatus.name,
roomType: roomType,
adults: adults,
children: children,
- totalCharge: 200);
+ totalCharge: 200,
+ balance: 0,
+ maskedCardNumber: "1234567890");
}
}
extension ListBookingMapper on Iterable<BookingDTO> {
- Iterable<Booking> toBookings(int userId, BookingStatus status) =>
- map((dto) => dto.toBooking(userId, status));
+ Iterable<Booking> toBookings(int userId, BookingStatus status, ReservationStatus reservationStatus) =>
+ map((dto) => dto.toBooking(userId, status, reservationStatus));
}
diff --git a/comwell_key_app/lib/services/mappers/bookings_mapper.dart b/comwell_key_app/lib/services/mappers/bookings_mapper.dart
index 46e5462c..8ba12669 100644
--- a/comwell_key_app/lib/services/mappers/bookings_mapper.dart
+++ b/comwell_key_app/lib/services/mappers/bookings_mapper.dart
@@ -6,9 +6,9 @@ import 'package:comwell_key_app/services/models/bookings_dto.dart';
extension BookingsMapper on BookingsDTO {
Bookings toBookings(int userId) {
return Bookings(
- current: current.toBookings(userId, BookingStatus.current),
- past: past.toBookings(userId, BookingStatus.past),
- cancelled: cancelled.toBookings(userId, BookingStatus.cancelled),
+ current: current.toBookings(userId, BookingStatus.current, ReservationStatus.newReservation),
+ past: past.toBookings(userId, BookingStatus.past, ReservationStatus.newReservation),
+ cancelled: cancelled.toBookings(userId, BookingStatus.cancelled, ReservationStatus.newReservation),
);
}
}
diff --git a/comwell_key_app/lib/services/models/booking_dto.dart b/comwell_key_app/lib/services/models/booking_dto.dart
index 0ed696cb..95ef0826 100644
--- a/comwell_key_app/lib/services/models/booking_dto.dart
+++ b/comwell_key_app/lib/services/models/booking_dto.dart
@@ -5,7 +5,7 @@ part '../../.generated/services/models/booking_dto.g.dart';
@JsonSerializable()
class BookingDTO {
- final String roomNumber;
+ final String? roomNumber;
final String hotelCode;
final String firstName;
final String lastName;
@@ -14,12 +14,15 @@ class BookingDTO {
final String dayIn;
final String dayOut;
final String cancelTime;
+ final String status;
final bool isCancelled;
final String bookTime;
final String roomType;
final int adults;
final int children;
final num totalCharge;
+ final num? balance;
+ final String? maskedCardNumber;
BookingDTO({
required this.roomNumber,
@@ -31,12 +34,15 @@ class BookingDTO {
required this.dayIn,
required this.dayOut,
required this.cancelTime,
+ required this.status,
required this.isCancelled,
required this.bookTime,
required this.roomType,
required this.adults,
required this.children,
required this.totalCharge,
+ required this.balance,
+ required this.maskedCardNumber,
});
Json toJson() => _$BookingDTOToJson(this);
diff --git a/comwell_key_app/lib/services/utils/api_endpoints.dart b/comwell_key_app/lib/services/utils/api_endpoints.dart
index 181f9132..6a18e494 100644
--- a/comwell_key_app/lib/services/utils/api_endpoints.dart
+++ b/comwell_key_app/lib/services/utils/api_endpoints.dart
@@ -6,7 +6,7 @@ class ApiEndpoints {
static const String getCurrentBookings = '/booking/v1/GetCurrentBookings';
static const String preRegistration = '/booking/v1/Preregistration';
static const String checkIn = '/booking/v1/CheckIn';
- static const String getBookingDetails = '/booking/v1/GetBookingDetails?confirmationId={confirmationId}';
+ static const String getBookingDetails = '/booking/v1/GetBookingDetails?confirmationId=';
// Payment endpoints
static const String storedPaymentMethods = '/Payment/v1/stored-payment-methods';