import 'package:comwell_key_app/overview/models/booking.dart';
import 'package:comwell_key_app/overview/models/bookings.dart';
import 'package:comwell_key_app/services/api.dart';
import 'package:comwell_key_app/services/mappers/booking_mapper.dart';
import 'package:comwell_key_app/services/models/booking_dto.dart';
class OverviewRepository {
final Api _api;
OverviewRepository(this._api);
Future<Bookings> fetchAllBookingsForUser() async {
final currentBookings = await _api.fetchCurrentBookingsForUser();
final pastBookings = await _api.fetchPastBookingsForUser();
final cancelledBookings = await _api.fetchCancelledBookingsForUser();
final bookings = Bookings(
current: currentBookings.map((e) => e.toBooking()).toList(),
past: pastBookings.map((e) => e.toBooking()).toList(),
cancelled: cancelledBookings.map((e) => e.toBooking()).toList(),
);
return bookings;
}
Future<Booking?> findBooking(String bookingReference, String lastName) async {
// needs implementation
final dto = BookingDTO(
roomNumber: "1234",
hotelCode: "CBO",
firstName: "Hello",
lastName: "World",
bookerFirstName: "Hello",
bookerLastName: "World",
guests: [GuestDTO(id: 1, firstName: "Hello", lastName: "World")],
confirmationNumber: "12345",
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,
balance: 12345,
isPrimaryGuest: false,
maskedCardNumber: "1234567890",
addOnItems: [
BookingAddonItem("addOnItem1", "addOnItem1", 1, 100),
BookingAddonItem("addOnItem2", "addOnItem2", 1, 200),
BookingAddonItem("addOnItem3", "addOnItem3", 1, 300),
],
);
return dto.toBooking();
}
final mockBookings = [1, 2, 3].map(
(i) => Booking(
id: "id$i",
confirmationNumber: "crmConfirmationNumber$i",
roomNumber: "roomNumber$i",
startDate: DateTime.now(),
endDate: DateTime.now(),
reservationStatus: ReservationStatus.newreservation,
image: "assets/images/no_current_bookings_background.jpeg",
hotelName: "hotelName$i",
roomType: "roomType$i",
balance: 100,
children: 3,
adults: 3,
hotelCode: "hotelCode$i",
firstName: "firstName",
lastName: "lastName",
bookerFirstName: "bookerFirstName",
bookerLastName: "bookerLastName",
bookingDate: DateTime.now(),
digitalCard: false,
isPrimaryGuest: false,
maskedCardNumber: "1234567890",
addOnItems: [BookingAddonItem("addOnItem$i", "addOnItem$i", 1, 100)],
),
);
}