public Task <PengembalianPenjualan> Post(PengembalianPenjualan model) { var trans = dbContext.Database.BeginTransaction(); try { dbContext.PengembalianPenjualan.Add(model); dbContext.Entry(model.Customer).State = EntityState.Unchanged; dbContext.Entry(model.Gudang).State = EntityState.Unchanged; foreach (var item in model.Items) { dbContext.Entry(item.Penjualan).State = EntityState.Unchanged; dbContext.Entry(item.Product).State = EntityState.Unchanged; dbContext.Entry(item.Unit).State = EntityState.Unchanged; } dbContext.SaveChanges(); trans.Commit(); return(Task.FromResult(model)); } catch (Exception ex) { trans.Rollback(); throw new SystemException(ex.Message); } }
public Task <PengembalianPenjualan> Put(int id, PengembalianPenjualan model) { var trans = dbContext.Database.BeginTransaction(); try { var lastData = dbContext.PengembalianPenjualan.Where(x => x.Id == id).Include(x => x.Items) .FirstOrDefault(); if (lastData == null) { throw new SystemException("Penjualan Not Found !"); } dbContext.Entry(lastData).CurrentValues.SetValues(model); foreach (var item in model.Items) { if (item.Id <= 0) { if (item.Product != null) { dbContext.Entry(item.Product).State = EntityState.Unchanged; dbContext.Entry(item.Penjualan).State = EntityState.Unchanged; dbContext.Entry(item.Unit).State = EntityState.Unchanged; } dbContext.PengembalianPenjualanItem.Add(item); } else { var oldItem = lastData.Items.SingleOrDefault(x => x.Id == item.Id); if (item.Product != null) { dbContext.Entry(item.Product).State = EntityState.Unchanged; dbContext.Entry(item.Penjualan).State = EntityState.Unchanged; dbContext.Entry(item.Unit).State = EntityState.Unchanged; } dbContext.Entry(oldItem).CurrentValues.SetValues(item); } } //remove foreach (var item in lastData.Items) { var existsDb = model.Items.Where(x => x.Id == item.Id).FirstOrDefault(); if (existsDb == null) { dbContext.PengembalianPenjualanItem.Remove(item); } } dbContext.SaveChanges(); trans.Commit(); return(Task.FromResult(model)); } catch (Exception ex) { trans.Rollback(); throw new SystemException(ex.Message); } }