updateVariantGroup method

Future<VariantGroup> updateVariantGroup(
  1. UpdateVariantGroupRequest request
)

Aendert eine aktive Gruppe (Name, Vorgaben, neue Werte) oder legt sie mit active: false still: die Gruppe und alle ihre Varianten, endgueltig. Die Antwort kommt erst, wenn alle Varianten stillgelegt sind. Bestehende Varianten aendern Name und Vorgaben nicht (dafuer updateArticle).

Implementation

Future<VariantGroup> updateVariantGroup(UpdateVariantGroupRequest request) async {
  const name = Aufrufe.updateVariantGroup;
  final p = request.toJson();
  _schreiben(name, p);
  kennung(name, 'variantGroupId', p['variantGroupId']);
  if (request.clearDefaults && request.defaults != null) {
    throw anfragefehler(name, 'defaults und clearDefaults zugleich');
  }
  final aenderungen = ['name', 'defaults', 'addAttributeValues'].where(p.containsKey);
  if (request.active case final aktiv?) {
    if (aktiv) throw anfragefehler(name, 'active kennt nur false (stilllegen); eine stillgelegte Gruppe bleibt stillgelegt');
    if (aenderungen.isNotEmpty) throw anfragefehler(name, 'active: false steht allein, ohne weitere Aenderung');
  } else if (aenderungen.isEmpty) {
    throw anfragefehler(name, 'die Aenderung nennt kein Feld');
  }
  _vorgabenLeeren(name, request.defaults);
  return _gruppe(name, await _transport.call(name, p));
}