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