initCart function

dynamic initCart()

Implementation

initCart() async {
  var user = FirebaseAuth.instance.currentUser;
  if (user == null)
    return;
  if (_init)
    return;
  _init = true;
  for (var item in userAccountData.cartData) {
    if (item.thisIsArticle){
      var ret = await articleGetItemToEdit(ProductDataCache.createEmpty(item.id));
      if (ret == null){
        var newItem = ProductData.clone(currentArticle);
        if (currentArticle.group.isNotEmpty) {
          List<GroupData> _group = [];
          for (var g in currentArticle.group)
            _group.add(GroupData.clone(g));
          // потом смотрим в item (то что ложили в cart)
          _notEqual = false;
          isGroupEqual(_group, item.group);
          newItem.group = _group;
        }
        newItem.countProduct = item.count;
        if (!_notEqual)
          cart.add(newItem);
      }
    }else{
      ProductData product = getProduct(item.id);
      if (product.id.isNotEmpty){
        var newItem = ProductData.clone(product);
        // service
        newItem.countProduct = item.count;
        for (var p in newItem.price)
          p.selected = false;
        for (var p in newItem.price)
          if (p.price == item.selectedPrice.price && p.discPrice == item.selectedPrice.discPrice) {
            p.selected = true;
            break;
          }
        for (var a in newItem.addon)
          a.selected = false;

        for (var h in item.addons)
          for (var a in newItem.addon)
            if (getTextByLocale(a.name, locale) == getTextByLocale(h.name, locale)) {
              a.selected = true;
              a.needCount = h.needCount;
            }
        cart.add(newItem);
      }
    }
  }
}