示例#1
0
        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);
                    }
                }
            }
        }
示例#2
0
        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"));
        }
示例#3
0
        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));
        }
示例#4
0
        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));
        }
示例#5
0
        // 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));
        }
示例#6
0
        // 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));
        }
示例#7
0
        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));
        }
示例#8
0
        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;
        }