public void SaveBattlemech(Battlemech battlemech) { if (battlemech.rid == 0) { context.Battlemechs.Add(battlemech); } else { Battlemech dbEntry = context.Battlemechs.Find(battlemech.rid); if (dbEntry != null) { dbEntry.id = battlemech.id; dbEntry.name = battlemech.name; dbEntry.qnt = battlemech.qnt; dbEntry.ridarmy = battlemech.ridarmy; dbEntry.riddesign = battlemech.riddesign; } } context.SaveChanges(); }
public ActionResult CreateMech(int designesDropDown, int qnt) { int manufactureQnt = qnt; Game game = Session["Game"] as Game; Country country = game.selectedCountry; int userId = WebSecurity.GetUserId(User.Identity.Name); Gamer gamer = gamerRepository.Gamers.FirstOrDefault(x => x.type == "human" && x.UserId == userId); Gamer owner = gamerRepository.Gamers.FirstOrDefault(x => x.rid == country.ridgamer && x.UserId == userId); Boolean our = false; if (gamer.rid == owner.rid) { our = true; } // Дизайн заказанный к производству Design design = designRepository.Designs.FirstOrDefault(x => x.rid == designesDropDown && x.UserId == userId); // Проверить есть ли у игрока-человека в этой стране армия Army army = armyRepository.Armies.FirstOrDefault(x => x.ridcountry == country.rid && x.ridgamer == gamer.rid && x.UserId == userId); // Если армии нет - создать if (army == null) { army = new Army { name = (gamer.name + " in " + country.nameEng).Trim(), ridcountry = country.rid, //ridgamer = country.ridgamer, ridgamer = gamer.rid, UserId = userId }; armyRepository.SaveArmy(army); } // увеличиваем количество мехов в таблице Battlemech for (int qi = 1; qi <= manufactureQnt; qi++) { // Если хватает ресурсов if (country.mineral >= design.weight) { Battlemech battlemech = new Battlemech { riddesign = design.rid, ridarmy = army.rid, name = "Mech-" + design.name, qnt = 1, UserId = userId }; battlemechRepository.SaveBattlemech(battlemech); country.mineral = country.mineral - design.weight; } else { break; } } countryRepository.SaveCountry(country); ModelState.Clear(); Factory factory = new Factory { designes = designRepository.Designs.Where(x => x.UserId == userId && x.ridgamer == gamer.rid).ToList(), qnt = 0, ours = our }; return View(factory); }