public async Task Should_Success_Update_Data() { GarmentFinanceMemorialService service = new GarmentFinanceMemorialService(GetServiceProvider().Object, _dbContext(GetCurrentMethod())); GarmentFinanceMemorialModel model = await _dataUtil(service, GetCurrentMethod()).GetTestData(); var newModel = await service.ReadByIdAsync(model.Id); //newModel.BGCheckNumber = "newBG"; var Response1 = await service.UpdateAsync(newModel.Id, newModel); Assert.NotEqual(0, Response1); GarmentFinanceMemorialModel model2 = await _dataUtil(service, GetCurrentMethod()).GetTestData(); //var newModel2 = await service.ReadByIdAsync(model.Id); GarmentFinanceMemorialModel newModel2 = new GarmentFinanceMemorialModel(); newModel2.Id = model2.Id; newModel2.Items = new List <GarmentFinanceMemorialItemModel> { model2.Items.First() }; newModel2.Items.First().Credit = 100; newModel2.Items.First().Debit = 100; var Response = await service.UpdateAsync(model2.Id, newModel2); Assert.NotEqual(0, Response); GarmentFinanceMemorialItemModel newItem = new GarmentFinanceMemorialItemModel { COAId = 3, COACode = "no3", COAName = "Name", Debit = 3, Credit = 0 }; GarmentFinanceMemorialItemModel newItem2 = new GarmentFinanceMemorialItemModel { COAId = 3, COACode = "no3", COAName = "Name", Credit = 3, Debit = 0 }; newModel2.Items.Add(newItem); newModel2.Items.Add(newItem2); var Response3 = await service.UpdateAsync(model2.Id, newModel2); Assert.NotEqual(0, Response); }
public async Task <int> UpdateAsync(int id, GarmentFinanceMemorialModel model) { var exist = DbSet .Include(d => d.Items) .Single(o => o.Id == id && !o.IsDeleted); if (exist.Date != model.Date) { exist.Date = model.Date; } if (exist.Remark != model.Remark) { exist.Remark = model.Remark; } if (exist.GarmentCurrencyRate != model.GarmentCurrencyRate) { exist.GarmentCurrencyRate = model.GarmentCurrencyRate; } foreach (var item in exist.Items) { GarmentFinanceMemorialItemModel itemModel = model.Items.FirstOrDefault(prop => prop.Id.Equals(item.Id)); if (itemModel == null) { EntityExtension.FlagForDelete(item, IdentityService.Username, UserAgent, true); } else { if (item.Debit != itemModel.Debit) { item.Debit = itemModel.Debit; } if (item.Credit != itemModel.Credit) { item.Credit = itemModel.Credit; } EntityExtension.FlagForUpdate(item, IdentityService.Username, UserAgent); } } foreach (var newItem in model.Items) { if (newItem.Id <= 0) { EntityExtension.FlagForCreate(newItem, IdentityService.Username, UserAgent); exist.Items.Add(newItem); } } EntityExtension.FlagForUpdate(exist, IdentityService.Username, UserAgent); return(await DbContext.SaveChangesAsync()); }