save method

Future<bool> save()

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;
}