示例#1
0
        public static void Save(ItemModel itemModel)
        {
            Item entity = getEntityByModel(itemModel);

            string result = string.Empty;

            if (entity.IsValid())
            {
                if (itemModel.Id > 0)
                {
                    result = service.Update(entity);
                }
                else
                {
                    result = service.Insert(entity);
                }

                if (!string.IsNullOrEmpty(result))
                {
                    var savedDetail = GetItemWarehouses(result);
                    if (savedDetail.Count() > itemModel.ItemWarehouses.Count())
                    {
                        var tobeDeleted = savedDetail.Take(savedDetail.Count() - itemModel.ItemWarehouses.Count());
                        foreach (var item in tobeDeleted)
                        {
                            service.DeleteItemWarehouse(item.Id);
                        }
                        savedDetail = GetItemWarehouses(result);
                    }

                    foreach (var detail in itemModel.ItemWarehouses)
                    {
                        ItemWarehouse detailEntity = getEntityByModel(detail, savedDetail.Count());
                        if (detailEntity.IsValid())
                        {
                            detailEntity.ItemId = Convert.ToInt64(result);
                            if (savedDetail.Count() > 0)
                            {
                                detailEntity.Id = savedDetail.FirstOrDefault().Id;
                                savedDetail.Remove(savedDetail.FirstOrDefault(rec => rec.Id == detailEntity.Id));
                                service.Update(detailEntity);
                            }
                            else
                            {
                                service.Insert(detailEntity);
                            }
                        }
                    }
                }
            }
        }