void ExecuteBulkInsert(List <MaestroProduct> plist) { UnitTypeManager um = new UnitTypeManager(context); MaestroUnitType unknownUnitType = um.GetUnknownItem(); List <MaestroProduct> updatedProducts = new List <MaestroProduct>(); foreach (MaestroProduct product in plist) { MaestroProduct existing = ProductCache.Instance.GetByQbId(product.QuickBooksProductId); if (existing != null) { product.Id = existing.Id; product.UnitType = existing.UnitType; product.ProductGroup = existing.ProductGroup; pm.Update(product); updatedProducts.Add(existing); } else { product.UnitType = unknownUnitType; } } List <ITransactionEntity> clist = plist.Where(q => !updatedProducts.Select(u => u.QuickBooksProductId).Contains(q.QuickBooksProductId)).Cast <ITransactionEntity>().ToList(); if (clist.Count > 0) { pm.BulkInsert(clist); } if (updatedProducts.Count > 0) { updatedProducts.ForEach(p => pm.Update(p)); } if (clist.Count > 0 || updatedProducts.Count > 0) { ProductCache.Instance.Reload(true); } }
public MaestroUnitType GetUnknownItem() { MaestroUnitType unitType = UnitTypeCache.Instance.GetByName(MaestroApplication.Instance.UNKNOWN_ITEM_NAME); if (unitType == null) { unitType = new MaestroUnitType() { Name = MaestroApplication.Instance.UNKNOWN_ITEM_NAME, CanHaveUnits = false, Description = string.Empty, CreateDate = DateTime.Now, UpdateDate = DateTime.Now, CreatedUser = "******", UpdatedUser = "******", RecordStatus = "A" }; InsertNewItem(unitType); } return(unitType); }