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