public static void Migrate(int _coordinate, OutfitTriggerInfo _outfitTriggerInfo, Dictionary <string, VirtualGroupInfo> _outfitVirtualGroupInfo, ref List <TriggerProperty> _outputTriggerProperty, ref List <TriggerGroup> _outputTriggerGroup) { if (_outfitTriggerInfo == null) { return; } if (_outfitVirtualGroupInfo == null) { _outfitVirtualGroupInfo = new Dictionary <string, VirtualGroupInfo>(); } Dictionary <string, int> _mapping = new Dictionary <string, int>(); int _refBase = 9; List <AccTriggerInfo> _parts = _outfitTriggerInfo.Parts.Values.OrderBy(x => x.Kind).ThenBy(x => x.Group).ThenBy(x => x.Slot).ToList(); foreach (AccTriggerInfo _part in _parts) { if (MathfEx.RangeEqualOn(0, _part.Kind, 8)) { for (int i = 0; i < 4; i++) { _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _part.Kind, i, _part.State[i], 0)); } } else if (_part.Kind >= 9) { if (!_mapping.ContainsKey(_part.Group)) { _mapping[_part.Group] = _refBase; _refBase++; } _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _mapping[_part.Group], 0, _part.State[0], 0)); _outputTriggerProperty.Add(new TriggerProperty(_coordinate, _part.Slot, _mapping[_part.Group], 1, _part.State[3], 0)); } } foreach (KeyValuePair <string, int> x in _mapping) { if (!_outfitVirtualGroupInfo.ContainsKey(x.Key)) { string _label = _accessoryParentNames.ContainsKey(x.Key) ? _accessoryParentNames[x.Key] : x.Key; _outputTriggerGroup.Add(new TriggerGroup(_coordinate, x.Value, _label)); } else { VirtualGroupInfo _group = _outfitVirtualGroupInfo[x.Key]; _outputTriggerGroup.Add(new TriggerGroup(_coordinate, x.Value, _group.Label, (_group.State ? 0 : 1), 0, (_group.Secondary ? 1 : -1))); } } }
private void UpdateServer() { if (!Page.IsValid) { return; } ServerInfo server = new ServerInfo(); // header server.ServerId = PanelRequest.ServerId; server.ServerName = Server.HtmlEncode(txtName.Text); server.Comments = Server.HtmlEncode(txtComments.Text); server.PrimaryGroupId = Utils.ParseInt(ddlPrimaryGroup.SelectedValue, 0); // instant alias server.InstantDomainAlias = txtInstantAlias.Text; // gather groups info List <VirtualGroupInfo> groups = new List <VirtualGroupInfo>(); for (int i = 0; i < dlServiceGroups.Items.Count; i++) { int groupId = (int)dlServiceGroups.DataKeys[i]; DataListItem item = dlServiceGroups.Items[i]; CheckBox chkBind = (CheckBox)item.FindControl("chkBind"); DropDownList ddlDistType = (DropDownList)item.FindControl("ddlDistType"); Control rowBound = item.FindControl("rowBound"); VirtualGroupInfo group = new VirtualGroupInfo(); group.GroupId = groupId; group.DistributionType = Utils.ParseInt(ddlDistType.SelectedValue, 0); group.BindDistributionToPrimary = chkBind.Checked && rowBound.Visible; groups.Add(group); } try { // update server int result = ES.Services.Servers.UpdateServer(server); if (result < 0) { ShowResultMessage(result); return; } // update groups result = ES.Services.Servers.UpdateVirtualGroups(PanelRequest.ServerId, groups.ToArray()); if (result < 0) { ShowResultMessage(result); return; } } catch (Exception ex) { ShowErrorMessage("VSERVER_UPDATE_SERVER", ex); return; } // return to browse page RedirectToBrowsePage(); }