private void UpdateIndianKills(string[] selectedCowboys, Indians indianToUpdate) { if (selectedCowboys == null) { indianToUpdate.Cowboys = new List <Cowboys>(); return; } var selectedCowboysHS = new HashSet <string>(selectedCowboys); var indianKills = new HashSet <int> (indianToUpdate.Cowboys.Select(c => c.Id)); foreach (var cowboy in db.Cowboys) { if (selectedCowboysHS.Contains(cowboy.Id.ToString())) { if (!indianKills.Contains(cowboy.Id)) { indianToUpdate.Cowboys.Add(cowboy); } } else { if (indianKills.Contains(cowboy.Id)) { indianToUpdate.Cowboys.Remove(cowboy); } } } }
public ActionResult DeleteConfirmed(int id) { Indians indians = db.Indians.Include(i => i.Cowboys).Single(i => i.Id == id); db.Indians.Remove(indians); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Stats(int?id) { Indians indian = db.Indians.Include(c => c.Cowboys).Single(c => c.Id == id); if (id.HasValue && indian == null) { return(HttpNotFound()); } return(View(indian)); }
public ActionResult Create([Bind(Include = "Id,Indian_Name,Cowboys")] Indians indians, string[] selectedCowboys) { if (ModelState.IsValid) { UpdateIndianKills(selectedCowboys, indians); db.Indians.Add(indians); db.SaveChanges(); return(RedirectToAction("Index")); } PopulateAssignedKillData(indians); return(View(indians)); }
// GET: Indians/Details/5 public ActionResult Details(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Indians indians = db.Indians.Include(i => i.Cowboys).Single(i => i.Id == id); if (indians == null) { return(HttpNotFound()); } return(View(indians)); }
// GET: Indians/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Indians indians = db.Indians.Include(i => i.Cowboys).Single(i => i.Id == id); PopulateAssignedKillData(indians); if (indians == null) { return(HttpNotFound()); } return(View(indians)); }
public ActionResult Edit([Bind(Include = "Id,Indian_Name,Cowboys")] Indians indians, string[] selectedCowboys) { if (ModelState.IsValid) { //var indian = db.Indians.Include( i => i.Cowboys ).Where( i => i.Id == indians.Id ).Single(); db.Indians.Attach(indians); db.Entry(indians).Collection(x => x.Cowboys).Load(); UpdateIndianKills(selectedCowboys, indians); db.Entry(indians).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } PopulateAssignedKillData(indians); return(View(indians)); }
private void PopulateAssignedKillData(Indians indian) { var allCowboys = db.Cowboys; var indianKills = new HashSet <int>(indian.Cowboys.Select(c => c.Id)); var kills = new List <KilledViewModel>(); foreach (var cowboy in allCowboys) { kills.Add(new KilledViewModel { Id = cowboy.Id, Name = cowboy.Cowboy_Name, IsAssigned = indianKills.Contains(cowboy.Id) }); } ViewBag.Killed = kills; }