Example #1
0
        public ActionResult Edit(TransactionEditViewModel model)
        {
            foreach (var modelStateValue in ModelState.Values)
            {
                foreach (var error in modelStateValue.Errors)
                {
                    // Do something useful with these properties
                    var errorMessage = error.ErrorMessage;
                    var exception = error.Exception;
                }
            }

            var transaction = model.Transaction;
            var transactionItems = model.TransactionItems;
            db.Entry(transaction).State = EntityState.Modified;

            if (true) //(ModelState.IsValid)
            {

                foreach (var item in transactionItems)
                {

                    //For this item, see if it already exists in the database
                    var existingItem = db.TransactionItems
                        .Where(x => x.TransactionItemId == item.TransactionItemId)
                        .SingleOrDefault();

                    // Yes, item exists, so update scalar properties of child item
                    if (existingItem != null)
                    {
                        var child = db.Entry(existingItem);
                        child.CurrentValues.SetValues(item);
                    }
                    else //item is new
                    {

                        item.TransactionItemId = 0;
                        db.Entry(transaction).Collection(x => x.TransactionItems).Load();
                        //db.Entry(transaction).Reference(x => x.TransactionItems).Load();
                        transaction.TransactionItems.Add(item); //I think this isn't right. This may blow up later.
                    }
                }

                var totalPrice = CalculateTotalPrice(transactionItems);
                transaction.TotalPrice = totalPrice;

                //db.Entry(transaction).State = EntityState.Modified;

                db.SaveChanges();
                return RedirectToAction("Index");
            }

            PopulateStoreDropdown(transaction.StoreId);
            return View(model);
        }
Example #2
0
        //
        // GET: /Transaction/Edit/5
        public ActionResult Edit(int id = 0)
        {
            Transaction transaction = db.Transactions.Find(id);//.Include(x => x.StoreId).Where(y => y.TransactionId == id).Single();
            //var transaction = db.Transactions.Include(x => x.TransactionItems).Where(y => y.TransactionId == id).Single();

            var model = new TransactionEditViewModel();
            model.Transaction = transaction;
            model.TransactionItems = transaction.TransactionItems; //db.TransactionItems.Where(x => x.TransactionId == id);

            if (transaction == null)
            {
                return HttpNotFound();
            }

            //var storeQry = from s in db.Stores
            //               orderby s.Name
            //               select s;

            PopulateStoreDropdown(transaction.StoreId);

            return View(model);
        }