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); } }