save method
Creates or updates the room, then saves its photos. Returns true when the dialog can close.
Implementation
Future<bool> save() async {
final String? hotelId = formHotel?.id ?? editing?.hotelId;
if (hotelId == null) {
UToast.error(message: U.s.pleaseSelectAItem(U.s.hotel));
return false;
}
final UHotelRoomUpdateParams p = UHotelRoomUpdateParams(
id: editing?.id ?? "",
tags: tags,
title: titleController.text.trim(),
capacity: intOf(capacityController),
pricePerNight: numOf(priceController),
hotelId: hotelId,
roomNumber: roomNumberController.text.nullIfEmpty(),
quantity: intOf(quantityController) ?? 1,
isAvailable: isAvailable,
description: descriptionController.text.nullIfEmpty(),
bedType: bedTypeController.text.nullIfEmpty(),
sizeSquareMeters: numOf(sizeController),
floor: intOf(floorController),
extraGuestCapacity: intOf(extraGuestCapacityController),
extraGuestPrice: numOf(extraGuestPriceController),
);
final Object? ok = await send(
editing == null ? UServices.hotel.createHotelRoom(p: UHotelRoomCreateParams.fromMap(p.toMap()..remove("id"))) : UServices.hotel.updateHotelRoom(p: p),
() {},
);
if (ok == null) return false;
await UServices.media.syncGallery(photos, existing: media, hotelRoomId: editing?.id ?? (ok as UResponse<String>).result);
unawaited(read());
return true;
}