postItems method

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

Сохранение объектов в БД В случае успеха, поля объектов будут заполнены полями объектов из БД

Implementation

Future postItems(List<NsgDataItem> itemsToPost, {bool showProgress = false}) async {
  if (itemsToPost.isEmpty) return;
  assert(
    itemsToPost.any((i) => i.runtimeType != runtimeType),
    'Попытка сохранить данные неправильного типа. Все элементы массива должны быть типа: $runtimeType',
  );
  var dataType = itemsToPost.first.runtimeType;
  if (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;
      }
    }
  } else {
    await NsgLocalDb.instance.postItems(itemsToPost);
  }
}