/// <summary>Adds the new unit.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ButtonNewUnitEventArgs"/> instance containing the event data.</param> private void AddNewUnit(object sender, ButtonNewUnitEventArgs e) { var myUnit = MakeUnitFromString(e.UnitName); using (var context = new ArmyDataContext()) { var newUnit = new Engage_Unit { ArmyId = this.View.Model.ArmyID, Size = myUnit.InitialSize, UnitType = myUnit.ServerID, Squad = null }; context.Engage_Units.InsertOnSubmit(newUnit); context.SubmitChanges(); var newWargear = from wargear in myUnit.SelectedWargearUpgrades join wargearName in context.Engage_WargearUpgrades on wargear.Key equals wargearName.Wargear select new Engage_Unit_Wargear { UnitID = newUnit.UnitId, WargearID = wargearName.WargearID, Amount = wargear.Value }; context.Engage_Unit_Wargears.InsertAllOnSubmit(newWargear); context.SubmitChanges(); var editUrl = this.ModuleContext.EditUrl("UnitId", newUnit.UnitId.ToString(CultureInfo.InvariantCulture), "EditUnit"); var insertUnit = new ViewArmyManagerViewModel.UnitViewModel(myUnit, editUrl); this.View.Model.Army.Append(insertUnit); } this.RefreshView(); }
/// <summary>Deletes the unit.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ButtonDeleteUnitEventArgs"/> instance containing the event data.</param> private void DeleteUnit(object sender, ButtonDeleteUnitEventArgs e) { using (var context = new ArmyDataContext()) { var myUnit = (from unit in context.Engage_Units where unit.UnitId == e.UnitId where unit.ArmyId == this.View.Model.ArmyID select unit).SingleOrDefault(); var myRules = from unitRules in context.Engage_Unit_Rules where unitRules.UnitID == e.UnitId select unitRules; var myWargear = from unitWargear in context.Engage_Unit_Wargears where unitWargear.UnitID == e.UnitId select unitWargear; context.Engage_Unit_Rules.DeleteAllOnSubmit(myRules); context.Engage_Unit_Wargears.DeleteAllOnSubmit(myWargear); context.Engage_Units.DeleteOnSubmit(myUnit); context.SubmitChanges(); } this.RefreshView(); }
/// <summary>Refreshes the view.</summary> private void RefreshView() { try { var armyId = this.Request.QueryString.GetValueOrDefault("ArmyId", 0); if (armyId == 0) { return; } using (var context = new ArmyDataContext()) { var army = context.Engage_Armies.Single(a => a.ArmyID == armyId); this.View.Model.Name = army.ArmyName; this.View.Model.MaxPoints = army.MaxPoints; this.View.Model.Army = (from unit in army.Units select this.MakeUnitFromServerData(unit.UnitType, unit.Size, unit.UnitId, context)) .ToArray(); } this.View.Model.ArmyID = (int)armyId; } catch (Exception exc) { this.ProcessModuleLoadException(exc); } }
/// <summary>Updates the rules.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="RuleUpgradeCheckedEventArgs"/> instance containing the event data.</param> private void UpdateRules(object sender, RuleUpgradeCheckedEventArgs e) { var checkUnit = this.View.Model.DisplayUnit; var newRules = e.SelectedValues.Except(checkUnit.Unit.SelectedRuleUpgrades); var deletedRules = checkUnit.Unit.SelectedRuleUpgrades.Except(e.SelectedValues); using (var context = new ArmyDataContext()) { var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitId); var rules = (from rule in context.Engage_RulesUpgrades where newRules.Contains(rule.RuleName) select new { rule.RuleID, UnitID = myUnit.UnitId, }) .AsEnumerable() .Select(rule => new Engage_Unit_Rule { RuleID = rule.RuleID, UnitID = rule.UnitID, }); var deleteRules = from rule in context.Engage_Unit_Rules join ruleName in context.Engage_RulesUpgrades on rule.RuleID equals ruleName.RuleID where rule.UnitID == myUnit.UnitId where deletedRules.Contains(ruleName.RuleName) select rule; context.Engage_Unit_Rules.DeleteAllOnSubmit(deleteRules); context.Engage_Unit_Rules.InsertAllOnSubmit(rules); context.SubmitChanges(); } this.RefreshEditView(); }
/// <summary>Updates the wargear.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ButtonWargearEventArgs"/> instance containing the event data.</param> private void UpdateWargear(object sender, ButtonWargearEventArgs e) { var checkUnit = this.View.Model.DisplayUnit; var newWargearValues = e.Wargear; foreach (var upgrade in newWargearValues) { checkUnit.Unit.SetWargear(upgrade.Key, upgrade.Value); } using (var context = new ArmyDataContext()) { var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitID); foreach (var wargear in checkUnit.Unit.SelectedWargearUpgrades) { var myWargear = (from wargearTable in myUnit.Engage_Unit_Wargears join wargearNames in context.Engage_WargearUpgrades on wargearTable.WargearID equals wargearNames.WargearID where wargearNames.Wargear == wargear.Key select wargearTable).SingleOrDefault(); myWargear.Amount = wargear.Value; } context.SubmitChanges(); } this.RefreshEditView(); }
/// <summary>Refreshes the edit view.</summary> private void RefreshEditView() { var unitId = this.Request.QueryString.GetValueOrDefault("UnitId", 0); using (var context = new ArmyDataContext()) { var myUnit = (from unit in context.Engage_Units where unit.UnitId == unitId select unit).FirstOrDefault(); this.View.Model.DisplayUnit = this.MakeUnitFromServerData(myUnit.UnitType, myUnit.Size, myUnit.UnitId, context); } }
/// <summary>Loads the armies.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> private void LoadArmies(object sender, EventArgs e) { using (var context = new ArmyDataContext()) { var myArmies = (from armies in context.Engage_Armies select new { armies.ArmyID, armies.ArmyName }) .ToDictionary(a => a.ArmyID, a => a.ArmyName); this.View.Model.ArmiesToLoad = myArmies; } this.View.Model.IsLoading = true; }
/// <summary>Makes the army.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ButtonNewArmyEventArgs"/> instance containing the event data.</param> private void MakeArmy(object sender, ButtonNewArmyEventArgs e) { using (var context = new ArmyDataContext()) { var newArmy = new Engage_Army(); newArmy.ArmyName = e.ArmyName; newArmy.MaxPoints = e.Points; context.Engage_Armies.InsertOnSubmit(newArmy); context.SubmitChanges(); this.View.Model.MaxPoints = newArmy.MaxPoints; this.View.Model.Name = newArmy.ArmyName; this.View.Model.ArmyID = newArmy.ArmyID; } this.Response.Redirect(Globals.NavigateURL(this.TabId, string.Empty, "ArmyId=" + this.View.Model.ArmyID.ToString(CultureInfo.InvariantCulture))); }
/// <summary>Updates the size.</summary> /// <param name="sender">The sender.</param> /// <param name="e">The <see cref="ButtonSetSizeEventArgs"/> instance containing the event data.</param> /// <exception cref="System.InvalidOperationException">Cannot update a unit that does not exist.</exception> private void UpdateSize(object sender, ButtonSetSizeEventArgs e) { var checkUnit = this.View.Model.DisplayUnit; checkUnit.Unit.CurrentSize = e.Size; var size = checkUnit.Unit.CurrentSize; using (var context = new ArmyDataContext()) { var myUnit = context.Engage_Units.SingleOrDefault(unit => unit.UnitId == e.UnitID); if (myUnit == null) { throw new InvalidOperationException("Cannot update a unit that does not exist."); } myUnit.Size = size; context.SubmitChanges(); } this.RefreshEditView(); }
/// <summary>Makes the unit from server data.</summary> /// <param name="unitType">Type of the unit.</param> /// <param name="size">The size.</param> /// <param name="unitID">The unit identifier.</param> /// <param name="context">The context.</param> /// <returns>A <see cref="EditUnitViewModel"/></returns> public ViewArmyManagerViewModel.UnitViewModel MakeUnitFromServerData(int unitType, int size, int unitID, ArmyDataContext context) { Unit newUnit; switch (unitType) { case 1: newUnit = new Termagant(); break; case 2: newUnit = new HiveTyrant(); break; case 3: newUnit = new HiveGuard(); break; case 4: newUnit = new Lictor(); break; case 5: newUnit = new Zoanthrope(); break; case 6: newUnit = new Venomthrope(); break; case 7: newUnit = new Haruspex(); break; case 8: newUnit = new Pyrovore(); break; case 9: newUnit = new Gargoyle(); break; case 10: newUnit = new Harpy(); break; case 11: newUnit = new HiveCrone(); break; case 12: newUnit = new SporeMine(); break; case 13: newUnit = new Biovore(); break; case 14: newUnit = new Tyrannofex(); break; case 15: newUnit = new Deathleaper(); break; case 16: newUnit = new OldOneEye(); break; case 17: newUnit = new Hormagaunt(); break; case 18: newUnit = new RipperSwarm(); break; default: newUnit = new Termagant(); break; } newUnit.CurrentSize = size; newUnit.UnitID = unitID; var listWargear = (from wargear in context.Engage_Unit_Wargears join names in context.Engage_WargearUpgrades on wargear.WargearID equals names.WargearID where wargear.UnitID == unitID select new { wargear.Amount, names.Wargear }) .ToDictionary(a => a.Wargear, a => a.Amount); foreach (var wargear in listWargear) { newUnit.SetWargear(wargear.Key, wargear.Value); } var listRules = from rules in context.Engage_Unit_Rules join names in context.Engage_RulesUpgrades on rules.RuleID equals names.RuleID where rules.UnitID == unitID select names.RuleName; foreach (var rule in listRules) { newUnit.SetUpgrade(rule); } var editUrl = this.ModuleContext.EditUrl( "UnitId", unitID.ToString(CultureInfo.InvariantCulture), "EditUnit"); var newUnitModel = new ViewArmyManagerViewModel.UnitViewModel(newUnit, editUrl); return(newUnitModel); }