/// ID document type as expected by the backend API.
/// P = Passport, D = Driver's licence, I = ID card
enum IdType {
passport('P'),
driverLicense('D'),
idCard('I');
const IdType(this.code);
final String code;
static IdType? fromCode(String code) {
for (final e in IdType.values) {
if (e.code == code) return e;
}
return null;
}
String displayLabel(dynamic strings) {
switch (this) {
case IdType.passport:
return strings.document_type_passport;
case IdType.driverLicense:
return strings.document_type_driver_license;
case IdType.idCard:
return strings.document_type_id_card;
}
}
}
class PreregRequestDto {
final String firstName;
final String lastName;
final String email;
final String phoneNumber;
final String birthDay;
final String address;
final String zipCode;
final String city;
final String country;
final String nationality;
final String confirmationNumber;
final String? arrivalTime;
final String? idType;
final String? idNumber;
final String? idCountry;
final String comment;
final String hotelCode;
final String? roomType;
final List<AddOnListDto>? addOnList;
PreregRequestDto({
required this.firstName,
required this.lastName,
required this.email,
required this.phoneNumber,
required this.birthDay,
required this.address,
required this.zipCode,
required this.city,
required this.country,
required this.nationality,
required this.confirmationNumber,
this.idType,
this.idNumber,
this.idCountry,
this.arrivalTime,
required this.comment,
required this.hotelCode,
this.roomType,
this.addOnList,
});
Map<String, dynamic> toJson() {
return {
'firstName': firstName,
'lastName': lastName,
'email': email,
'phoneNumber': phoneNumber,
'birthDay': birthDay,
'address': address,
'zipCode': zipCode,
'city': city,
'country': country,
'nationality': nationality,
'confirmationNumber': confirmationNumber,
if (idType != null) 'idType': idType,
if (idNumber != null) 'idNumber': idNumber,
'idCountry': idCountry,
'arrivalTime': arrivalTime,
'comment': comment,
'hotelCode': hotelCode,
if (roomType != null) 'roomType': roomType,
if (addOnList != null) 'addOnList': addOnList!.map((e) => e.toJson()).toList(),
};
}
}
class AddOnListDto {
final String itemCode;
final int quantity;
AddOnListDto({required this.itemCode, required this.quantity});
Map<String, dynamic> toJson() {
return {'itemCode': itemCode, 'quantity': quantity};
}
}