public ActionResult New(BattlegroupForm form) { Debug.WriteLine($"POST: Battlegroup Ship Controller: New"); DB_users user = Auth.User; var game = GameState.Game; var civilization = game.GetCivilization(form.CivilizationID.Value); if (!civilization.PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin()) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } var system = game.Sector.StarsystemFromHex(form.HexX, form.HexY); if (system != null && system.Info.game_id != game.Info.id) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } // Create the Battlegroup and save it to the DB DB_civilization_battlegroups battlegroup = new DB_civilization_battlegroups(); battlegroup.game_id = game.ID; battlegroup.civilization_id = civilization.ID; battlegroup.starsystem_id = system.ID; battlegroup.name = form.Name; battlegroup.gmnotes = form.GMNotes; Database.Session.Save(battlegroup); // Add in all the checked Ships foreach (var unitCheckbox in form.UnassignedUnits) { if (unitCheckbox.IsChecked) { var ship = FindCivilizationUnit(unitCheckbox.ID); ship.CivilizationInfo.battlegroup_id = battlegroup.id; Database.Session.Update(ship.CivilizationInfo); } } Database.Session.Flush(); return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value })); }
public ActionResult Edit(BattlegroupForm form) { Debug.WriteLine($"POST: Battlegroup Ship Controller: Edit"); DB_users user = Auth.User; var game = GameState.Game; var civilization = game.GetCivilization(form.CivilizationID.Value); if (!civilization.PlayerOwnsCivilization(user.id) && !RequireGMAdminAttribute.IsGMOrAdmin()) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } var system = game.Sector.StarsystemFromHex(form.HexX, form.HexY); if (system != null && system.Info.game_id != game.Info.id) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } var battlegroup = FindBattlegroup(form.ID); if (battlegroup != null && battlegroup.Info.game_id != game.ID) { return(RedirectToRoute("game", new { gameID = game.Info.id })); } // Update the Battlegroup and Update it in the DB battlegroup.Info.starsystem_id = system.ID; battlegroup.Info.name = form.Name; if (RequireGMAdminAttribute.IsGMOrAdmin()) { battlegroup.Info.gmnotes = form.GMNotes; } Database.Session.Update(battlegroup.Info); // Add in all of the newly checked Ships foreach (var unitCheckbox in form.UnassignedUnits) { if (unitCheckbox.IsChecked) { var ship = FindCivilizationUnit(unitCheckbox.ID); ship.CivilizationInfo.battlegroup_id = battlegroup.ID; Database.Session.Update(ship.CivilizationInfo); } } // Remove all the Ships no longer checked foreach (var unitCheckbox in form.BattlegroupUnits) { if (!unitCheckbox.IsChecked) { var ship = FindCivilizationUnit(unitCheckbox.ID); ship.CivilizationInfo.battlegroup_id = null; Database.Session.Update(ship.CivilizationInfo); } } Database.Session.Flush(); return(RedirectToRoute("ViewCivilization", new { civilizationID = form.CivilizationID.Value })); }