dormBed static method
Implementation
static Future<void> dormBed(UDormBedResponse item, {VoidCallback? onDone}) async {
final (UResponse<UDormBedResponse>? fetched, _, _) = await UServices.hotel.readDormBedById(
p: UIdParams(
id: item.id,
selectorArgs: const UDormBedSelectorArgs(media: UMediaSelectorArgs()),
),
);
final UDormBedResponse b = fetched?.result ?? item;
final List<int> tags = List<int>.from(b.tags);
final UAdminMediaDraft draft = UAdminMediaDraft();
final List<UMediaResponse> media = (b.media ?? <UMediaResponse>[]).sortedForGallery();
await _open(
title: "${U.s.detailsAndPhotos} — ${b.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.details,
children: <Widget>[
UAdminTagChips<TagDormBed>(title: U.s.bedLevel, options: TagDormBed.values.group(200), tags: tags, single: true),
UAdminTagChips<TagDormBed>(title: U.s.bedAmenities, options: TagDormBed.values.group(500), tags: tags),
],
),
],
),
save: () async {
final (UEmptyResponse? ok, UEmptyResponse? error, String? exception) = await UServices.hotel.updateDormBed(
p: UDormBedUpdateParams(id: b.id, tags: tags),
);
if (!_isOk(ok, error, exception)) return false;
await UAdminMediaSync.apply(draft: draft, existing: media, dormBedId: b.id);
return true;
},
);
}