Exemplo n.º 1
0
 public ImportItems()
 {
     _Context = new ECommerceDBContext();
 }
Exemplo n.º 2
0
        public void UpdateAll(List<ItemsVM> items, bool bRemoveObsoleteCars, out List<String> errors, IImportItems progress)
        {
            errors = new List<String>();

            if (items == null || items.Count == 0)
                return;

            _TrackErrors = true;
            _Errors.Clear();

            // cache all. 
            var dbCache = GetDBCache();

            var existingItems = dbCache.Items;
            // This should keep the connecton open
            _Context.Database.Connection.Open();

            int nItemsProcessed = 0;
            foreach (var item in items)
            {
                int existingItemId = 0;

                var existingItem = existingItems.Find(x => x.ItemRef == item.ItemRef);
                if (existingItem != null && existingItem.Id > 0)
                    existingItemId = existingItem.Id;

                try
                {
                    var result = AddOrUpdate(item, existingItemId, dbCache);
                    if (result == AddUpdateResult.Added)
                        progress.OnAdded(item);
                    else if (result == AddUpdateResult.Updated)
                        progress.OnUpdate(item);
                    else if (result == AddUpdateResult.Error)
                        progress.OnUpdateError(item);

                    ++nItemsProcessed;
                }
                catch (Exception /*ex*/)
                {
                    bool bLog = ShowDatabaseLog;
                    // The context is invalid. recreate it and rebuild cache
                    _Context = new ECommerceDBContext();
                    ShowDatabaseLog = bLog;
                    _Context.Database.Connection.Open();
                    dbCache = GetDBCache();
                }

                if (progress != null)
                {
                    //progress(nItemsProcessed);
                }
                // If cars existed, it was updated. So remove it from the list
                if (existingItem != null && existingItem.Id > 0)
                    existingItems.Remove(existingItem);
            }

            if (bRemoveObsoleteCars)
            {
                foreach (var item in existingItems)
                {
                    Remove(item.Id);
                    progress.OnRemoved(item);
                }

            }

            _Context.Database.Connection.Close();

            errors = _Errors;
            _TrackErrors = false;
        }