postItems method

Future postItems(
  1. List<NsgDataItem> itemsToPost, {
  2. bool showProgress = false,
})

Implementation

Future postItems(List<NsgDataItem> itemsToPost, {bool showProgress = false}) async {
  assert(
    (this is! NsgDataItemController || (this as NsgDataItemController).widgetId != null),
    'Использован неправильный контроллер для данного типа данных. $runtimeType != $dataType',
  );
  if (controllerMode.storageType == NsgDataStorageType.server) {
    var p = NsgDataPost(dataItemType: dataType);
    p.itemsToPost = itemsToPost;
    var newItems = await p.postItems(loadReference: NsgDataRequest.addAllReferences(dataType));
    for (var item in newItems) {
      var old = itemsToPost.firstWhereOrNull((e) => e.id == item.id);
      if (old != null) {
        old.copyFieldValues(item);
        old.state = NsgDataItemState.fill;
      }
      old = dataItemList.firstWhereOrNull((e) => e.id == item.id);
      if (old != null) {
        old.copyFieldValues(item);
        old.state = NsgDataItemState.fill;
      }
    }
  } else {
    await NsgLocalDb.instance.postItems(itemsToPost);
  }
}