public ActionResult Create(DistributedSet distributedset) { if (ModelState.IsValid) { var matchedItem = db.DistributedSets.Where(o => o.EventID == distributedset.EventID && o.SetID == distributedset.SetID); if (matchedItem.Count() > 1) { throw new Exception("Invalid Data"); } else if (matchedItem.Count() == 1) { var item = matchedItem.SingleOrDefault(); item.NumberOfSets = item.NumberOfSets + distributedset.NumberOfSets; db.Entry(item).State = EntityState.Modified; } else { db.DistributedSets.Add(distributedset); } db.SaveChanges(); return RedirectToAction("Index", "DistributedBook", new { distributedset.EventID }); } ViewBag.EventID = new SelectList(db.EventMasters, "EventID", "EventDescription", distributedset.EventID); ViewBag.SetID = new SelectList(db.SetMasters, "SetID", "SetName", distributedset.SetID); return View(distributedset); }
public ActionResult Edit(DistributedSet distributedset) { if (ModelState.IsValid) { var matchedItem = db.DistributedSets.Where(o => o.EventID == distributedset.EventID && o.SetID == distributedset.SetID); if (matchedItem.Count() ==0)//added a new book { db.Entry(distributedset).State = EntityState.Modified; } else if (matchedItem.Count() > 1) { throw new Exception("Invalid Data"); } else if (matchedItem.Count() == 1 && matchedItem.SingleOrDefault().DistributedSetID != distributedset.DistributedSetID)//modifed but books already existing { var item = matchedItem.SingleOrDefault(); item.NumberOfSets = item.NumberOfSets + distributedset.NumberOfSets; db.Entry(item).State = EntityState.Modified; var removeditem = db.DistributedBooks.Find(distributedset.DistributedSetID); db.DistributedBooks.Remove(removeditem); } else { matchedItem.SingleOrDefault().NumberOfSets = distributedset.NumberOfSets; // db.Entry(distributedset).State = EntityState.Modified; } db.SaveChanges(); return RedirectToAction("Index", "DistributedBook", new { distributedset.EventID }); } ViewBag.EventID = new SelectList(db.EventMasters, "EventID", "EventDescription", distributedset.EventID); ViewBag.SetID = new SelectList(db.SetMasters, "SetID", "SetName", distributedset.SetID); return View(distributedset); }