dormRoom static method
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;
},
);
}