public async Task <IActionResult> Put(int id, [FromBody] SubscriptionProductSnapshotViewModel subscriptionProductSnapshotVm)
        {
            if (subscriptionProductSnapshotVm == null)
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var dbItem = await _subscriptionProductSnapshotRepository.GetSingleAsync(id);

            if (dbItem == null)
            {
                return(NotFound());
            }
            Mapper.Map(subscriptionProductSnapshotVm, dbItem);
            dbItem.SetModification(UserName);
            _subscriptionProductSnapshotRepository.Update(dbItem);
            if (!await UnitOfWork.SaveAsync())
            {
                return(StatusCode(500, "保存时出错"));
            }

            return(NoContent());
        }
        private void InitializeSubscriptionProducts(string userName, SubscriptionDay item, List <ProductForSubscription> productForSubscriptions, List <Product> products)
        {
            var dbDayProducts = item.SubscriptionProductSnapshots;

            foreach (var dayProduct in dbDayProducts)
            {
                var productForSubscription =
                    productForSubscriptions.SingleOrDefault(x => x.Id == dayProduct.ProductForSubscriptionId);
                if (productForSubscription == null)
                {
                    throw new Exception($"未能找到商超产品: {dayProduct.Name}");
                }
                var product = products.SingleOrDefault(x => x.Id == productForSubscription.ProductId);
                if (product == null)
                {
                    throw new Exception($"未能找到产品: {dayProduct.Name}");
                }
                SetSubscriptionProductSnapshot(dayProduct, productForSubscription, product);
                dayProduct.SetModification(userName, "重新初始化");
                _collectiveProductSnapshotRepository.Update(dayProduct);
            }
            var dayProductIds        = dbDayProducts.Select(x => x.ProductForSubscriptionId).ToList();
            var collectiveProductIds = productForSubscriptions.Select(x => x.Id).ToList();
            var toAddIds             = collectiveProductIds.Except(dayProductIds).ToList();
            var toAdd = productForSubscriptions.Where(x => toAddIds.Contains(x.Id)).ToList();

            foreach (var pr in toAdd)
            {
                var dayProduct = new SubscriptionProductSnapshot
                {
                    ProductForSubscriptionId = pr.Id,
                };
                dayProduct.SetCreation(userName, "初始化");
                var product = products.SingleOrDefault(x => x.Id == pr.ProductId);
                if (product == null)
                {
                    throw new Exception($"未能找到产品, 专送产品ID: {pr.Id}");
                }
                SetSubscriptionProductSnapshot(dayProduct, pr, product);
                item.SubscriptionProductSnapshots.Add(dayProduct);
            }
        }