private void SetRankIds() { LeadershipRank row = LeadershipRank.GetLast(); if (row != null) { Rank = row.Rank + 1; PrevRankId = row.Id; row.NextRankId = TableHelper.GetNextId(TableName); row.Save(); } else { Rank = 1; PrevRankId = -1; NextRankId = -1; } }
public void MoveRankUp() { if (!this.PrevRankId.HasValue || this.PrevRankId.Value == -1) { return; } LeadershipRank rankSwap = new LeadershipRank(this.PrevRankId.Value); this.Rank ^= rankSwap.Rank; rankSwap.Rank ^= this.Rank; this.Rank ^= rankSwap.Rank; this.PrevRankId = rankSwap.PrevRankId; rankSwap.PrevRankId = this.Id; rankSwap.NextRankId = this.NextRankId; this.NextRankId = rankSwap.Id; if (this.PrevRankId.HasValue && this.PrevRankId.Value != -1) { LeadershipRank rankLower = new LeadershipRank(this.PrevRankId.Value); rankLower.NextRankId = this.Id; rankLower.Save(); } if (rankSwap.NextRankId.HasValue && rankSwap.NextRankId.Value != -1) { LeadershipRank rankHigher = new LeadershipRank(rankSwap.NextRankId.Value); rankHigher.PrevRankId = rankSwap.Id; rankHigher.Save(); } this.Save(); rankSwap.Save(); }
/// <summary> /// Only used for auto-delete when rank do not have requirement /// </summary> /// <param name="list"></param> public static void DeleteRange(List <LeadershipRank> list) { LeadershipRank prev = null; LeadershipRank next = null; bool prevSaveDB = false; bool nextSaveDB = false; foreach (LeadershipRank rank in list) { if (rank.PrevRankId.HasValue && rank.PrevRankId.Value != -1) { prev = list.FirstOrDefault(x => x.Id == rank.PrevRankId.Value) ?? new LeadershipRank(rank.PrevRankId.Value); prevSaveDB = !list.Any(x => x.Id == prev.Id); } if (rank.NextRankId.HasValue && rank.NextRankId.Value != -1) { next = list.FirstOrDefault(x => x.Id == rank.NextRankId.Value) ?? new LeadershipRank(rank.NextRankId.Value); nextSaveDB = !list.Any(x => x.Id == next.Id); } if (prev != null && next != null) { prev.NextRankId = rank.NextRankId; next.PrevRankId = rank.PrevRankId; if (prevSaveDB) { prev.Save(); } if (nextSaveDB) { next.Save(); } } else if (prev != null && next == null) //Delete Last { prev.NextRankId = -1; if (prevSaveDB) { prev.Save(); } } else if (prev == null && next != null) //Delete First { next.PrevRankId = -1; if (nextSaveDB) { next.Save(); } } TableHelper.DeleteRows(TableName, Columns.Id, rank.Id); prevSaveDB = false; nextSaveDB = false; } UpdateRanksOrder(); }
public void AddRank(string name, PrizeKind prize, string prizeValue, string note = null) { var newRank = new LeadershipRank(name, prize, prizeValue, note); newRank.Save(); }