public async Task <int> UpdateAsync(int id, SalesReceiptModel model) { using (var transaction = _DbContext.Database.BeginTransaction()) { try { if (model.SalesReceiptDetails != null) { List <int> detailIds = await _DetailDbSet.Where(w => w.SalesReceiptId.Equals(id) && !w.IsDeleted).Select(s => s.Id).ToListAsync(); foreach (var itemId in detailIds) { SalesReceiptDetailModel data = model.SalesReceiptDetails.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { var detailModel = await ReadByIdAsync(itemId); EntityExtension.FlagForDelete(detailModel, _IdentityService.Username, _UserAgent, true); } else { EntityExtension.FlagForUpdate(data, _IdentityService.Username, _UserAgent); } } foreach (SalesReceiptDetailModel item in model.SalesReceiptDetails) { if (item.Id == 0) { EntityExtension.FlagForCreate(item, _IdentityService.Username, _UserAgent); } } } EntityExtension.FlagForUpdate(model, _IdentityService.Username, _UserAgent); _DbSet.Update(model); foreach (var item in model.SalesReceiptDetails) { var updateModel = new SalesReceiptUpdateModel() { TotalPaid = item.Paid, IsPaidOff = item.IsPaidOff, }; UpdateToSalesInvoice(item.SalesInvoiceId, updateModel); } } catch (Exception e) { transaction.Rollback(); throw new Exception(e.Message); } } return(await _DbContext.SaveChangesAsync()); }
public void Mapping_With_AutoMapper_Profiles() { var configuration = new MapperConfiguration(cfg => { cfg.AddProfile <SalesReceiptProfile>(); }); var mapper = configuration.CreateMapper(); SalesReceiptViewModel salesReceiptViewModel = new SalesReceiptViewModel { Id = 1 }; SalesReceiptModel salesReceiptModel = mapper.Map <SalesReceiptModel>(salesReceiptViewModel); Assert.Equal(salesReceiptViewModel.Id, salesReceiptModel.Id); SalesReceiptDetailViewModel salesReceiptDetailViewModel = new SalesReceiptDetailViewModel { Id = 1 }; SalesReceiptDetailModel salesReceiptDetailModel = mapper.Map <SalesReceiptDetailModel>(salesReceiptDetailViewModel); Assert.Equal(salesReceiptDetailViewModel.Id, salesReceiptDetailModel.Id); }
public override async void UpdateAsync(long id, SalesReceiptModel model) { try { if (model.SalesReceiptDetails != null) { HashSet <long> detailIds = salesReceiptDetailLogic.GetIds(id); foreach (var itemId in detailIds) { SalesReceiptDetailModel data = model.SalesReceiptDetails.FirstOrDefault(prop => prop.Id.Equals(itemId)); if (data == null) { await salesReceiptDetailLogic.DeleteAsync(itemId); } else { salesReceiptDetailLogic.UpdateAsync(itemId, data); } } foreach (SalesReceiptDetailModel item in model.SalesReceiptDetails) { if (item.Id == 0) { salesReceiptDetailLogic.Create(item); } } } EntityExtension.FlagForUpdate(model, IdentityService.Username, "sales-service"); DbSet.Update(model); } catch (Exception ex) { throw ex; } }