dormRoom static method

Future<void> dormRoom(
  1. UDormRoomResponse item, {
  2. VoidCallback? onDone,
})

Implementation

static Future<void> dormRoom(UDormRoomResponse item, {VoidCallback? onDone}) async {
  final (UResponse<UDormRoomResponse>? fetched, _, _) = await UServices.hotel.readDormRoomById(
    p: UIdParams(
      id: item.id,
      selectorArgs: const UDormRoomSelectorArgs(media: UMediaSelectorArgs()),
    ),
  );
  final UDormRoomResponse r = fetched?.result ?? item;

  final List<int> tags = List<int>.from(r.tags);
  final UAdminMediaDraft draft = UAdminMediaDraft();
  final List<UMediaResponse> media = (r.media ?? <UMediaResponse>[]).sortedForGallery();

  await _open(
    title: "${U.s.detailsAndPhotos} — ${r.title}",
    onDone: onDone,
    body: (BuildContext context, StateSetter setState) => Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        UAdminSection(
          title: U.s.photos,
          children: <Widget>[UAdminMediaManager(media: media, draft: draft)],
        ),
        UAdminSection(
          title: U.s.amenities,
          children: <Widget>[
            UAdminTagChips<TagDormRoom>(title: U.s.details, options: TagDormRoom.values.group(300), tags: tags),
            UAdminTagChips<TagDormRoom>(title: U.s.amenities, options: TagDormRoom.values.group(500), tags: tags),
          ],
        ),
      ],
    ),
    save: () async {
      final (UEmptyResponse? ok, UEmptyResponse? error, String? exception) = await UServices.hotel.updateDormRoom(
        p: UDormRoomUpdateParams(id: r.id, tags: tags),
      );
      if (!_isOk(ok, error, exception)) return false;
      await UAdminMediaSync.apply(draft: draft, existing: media, dormRoomId: r.id);
      return true;
    },
  );
}