public Guid InsertOrUpdate(Guid ID, Func <Receipt, Receipt> loadFromGUI) { RedBloodDataContext db = new RedBloodDataContext(); Receipt r; if (ID == Guid.Empty) { r = new Receipt(); db.Receipts.InsertOnSubmit(r); } else { r = ReceiptBLL.Get(ID, db); } loadFromGUI(r); //Product In IEnumerable <ReceiptProduct> existingProductCodeInList = r.ReceiptProducts.Where(r1 => r1.Type == ReceiptProduct.TypeX.In); db.ReceiptProducts.DeleteAllOnSubmit( existingProductCodeInList.Where(r1 => !ProductCodeInList.Contains(r1.ProductCode)) ); r.ReceiptProducts.AddRange( ProductCodeInList .Except(existingProductCodeInList.Select(r1 => r1.ProductCode)) .Select(r1 => new ReceiptProduct() { ProductCode = r1, Type = ReceiptProduct.TypeX.In }) ); //Product Out IEnumerable <ReceiptProduct> existingProductCodeOutList = r.ReceiptProducts.Where(r1 => r1.Type == ReceiptProduct.TypeX.Out); db.ReceiptProducts.DeleteAllOnSubmit( existingProductCodeOutList.Where(r1 => !ProductCodeOutList.Contains(r1.ProductCode)) ); r.ReceiptProducts.AddRange( ProductCodeOutList .Except(existingProductCodeOutList.Select(r1 => r1.ProductCode)) .Select(r1 => new ReceiptProduct() { Product = ProductBLL.Get(db, r1), Type = ReceiptProduct.TypeX.Out }) ); db.SubmitChanges(); return(r.ID); }
public void DisplayToGUI() { Receipt e = ReceiptBLL.Get(ReceiptID); if (e == null) { e = new Receipt(); ProductCodeInList.Clear(); ProductCodeOutList.Clear(); rdbProductCodeIn.Checked = true; } else { ProductCodeInList = e.ReceiptProducts.Where(r => r.Type == ReceiptProduct.TypeX.In).Select(r => r.ProductCode).ToList(); ProductCodeOutList = e.ReceiptProducts.Where(r => r.Type == ReceiptProduct.TypeX.Out).Select(r => r.ProductCode).ToList(); } txtName.Text = e.Name; txtNote.Text = e.Note; DataListProductIn.DataBind(); DataListProductOut.DataBind(); }