public ActionResult Create([Bind(Include = "ParentId,CultureId,Percent")] CultureBreakdown cultureBreakdown) { if (ModelState.IsValid) { // get target var target = cultureBreakdown.Percent; // get parent var parent = db.PopulationGroups .Single(x => x.Id == cultureBreakdown.ParentId); // get culture target var culture = db.Cultures .Single(x => x.Id == cultureBreakdown.CultureId); // add new culture parent.SetCulturePercent(culture, target); // update other culture percents foreach (var cult in parent.CultureBreakdown.Where(x => x.CultureId != culture.Id)) { db.Entry(cult).State = EntityState.Modified; } db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.CultureId = new SelectList(db.Cultures, "Id", "Name", cultureBreakdown.CultureId); ViewBag.ParentId = new SelectList(db.PopulationGroups, "Id", "Name", cultureBreakdown.ParentId); return(View(cultureBreakdown)); }
public ActionResult Create([Bind(Include = "Id,Name,MarketId,Infants,Children,Adults,Seniors,SkillLevel,PrimaryJobId,Priority")] PopulationGroup populationGroup) { if (ModelState.IsValid) { db.PopulationGroups.Add(populationGroup); db.SaveChanges(); // Population Groups default to 100% of some (usually the first) // Party, Species, and Culture by default to ensure they have // something. // get the new pop group. var pop = db.PopulationGroups .Single(x => x.MarketId == populationGroup.MarketId && x.PrimaryJobId == populationGroup.PrimaryJobId); // Set Default Species var species = new SpeciesBreakdown { ParentId = pop.Id, SpeciesId = db.Species.First().Id, Percent = 1 }; db.PopSpeciesBreakdowns.Add(species); // set default Culture var culture = new CultureBreakdown { ParentId = pop.Id, CultureId = db.Cultures.First().Id, Percent = 1 }; db.PopCultureBreakdowns.Add(culture); // set Default Political Group var party = new PoliticalBreakdown { ParentId = pop.Id, PoliticalGroupId = db.PoliticalGroups.First().Id, Percent = 1 }; db.PopPoliticalBreakdowns.Add(party); db.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.PrimaryJobId = new SelectList(db.Jobs, "Id", "Name", populationGroup.PrimaryJobId); ViewBag.MarketId = new SelectList(db.Markets, "Id", "Name", populationGroup.MarketId); return(View(populationGroup)); }
// GET: CultureBreakdowns/Details/5 public ActionResult Details(int?parentId, int?cultureId) { if (parentId == null || cultureId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CultureBreakdown cultureBreakdown = db.PopCultureBreakdowns .SingleOrDefault(x => x.ParentId == parentId && x.CultureId == cultureId); if (cultureBreakdown == null) { return(HttpNotFound()); } return(View(cultureBreakdown)); }
// GET: CultureBreakdowns/Edit/5 public ActionResult Edit(int?parentId, int?cultureId) { if (parentId == null || cultureId == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } CultureBreakdown cultureBreakdown = db.PopCultureBreakdowns .SingleOrDefault(x => x.ParentId == parentId && x.CultureId == cultureId); if (cultureBreakdown == null) { return(HttpNotFound()); } ViewBag.CultureId = new SelectList(db.Cultures, "Id", "Name", cultureBreakdown.CultureId); ViewBag.ParentId = new SelectList(db.PopulationGroups, "Id", "Name", cultureBreakdown.ParentId); return(View(cultureBreakdown)); }
public ActionResult DeleteConfirmed(int parentId, int cultureId) { CultureBreakdown cultureBreakdown = db.PopCultureBreakdowns .SingleOrDefault(x => x.ParentId == parentId && x.CultureId == cultureId); db.PopCultureBreakdowns.Remove(cultureBreakdown); // get parent var parent = db.PopulationGroups .Single(x => x.Id == parentId); // normalize remaining cultures parent.NormalizeCultures(); // mark remaining as updated foreach (var cult in parent.CultureBreakdown) { db.Entry(cult).State = EntityState.Modified; } db.SaveChanges(); return(RedirectToAction("Index")); }