public void Sort(PhoneBookSortTypes[] order) { if (order != null) { string OrderBy = "ORDER BY "; bool useEntryTypes = false; foreach (PhoneBookSortTypes pbst in order) { switch (pbst) { case PhoneBookSortTypes.FirstName: OrderBy += "pb.Entries.FirstName, "; break; case PhoneBookSortTypes.LastName: OrderBy += "pb.Entries.LastName, "; break; case PhoneBookSortTypes.EntryType: useEntryTypes = true; OrderBy += "("; foreach (PhoneBookEntryType pbet in Enum.GetValues(typeof(PhoneBookEntryType))) { OrderBy += "CASE WHEN pb.Entries.Type = @" + pbet.ToString() + " THEN " + ((int)pbet).ToString() + " "; } OrderBy += "END), "; break; } } OrderBy = OrderBy.Substring(0, OrderBy.Length - 2) + " ASC"; ClassQuery cq = new ClassQuery("Org.Reddragonit.FreeSwitchConfig.DataCore.DB.Phones.PhoneBooks", "SELECT pb.Entries.ID FROM PhoneBook pb WHERE pb.Name = @Name " + OrderBy); List <IDbDataParameter> pars = new List <IDbDataParameter>(); pars.Add(cq.CreateParameter("@Name", Name)); if (useEntryTypes) { foreach (PhoneBookEntryType pbet in Enum.GetValues(typeof(PhoneBookEntryType))) { pars.Add(cq.CreateParameter("@" + pbet.ToString(), pbet)); } } cq.Execute(pars.ToArray()); List <PhoneBookEntry> newEntries = new List <PhoneBookEntry>(); while (cq.Read()) { newEntries.Add(PhoneBookEntry.Load(cq[0].ToString())); } cq.Close(); Entries = newEntries.ToArray(); this.Update(); } }
public static PhoneBookEntry Load(string id) { PhoneBookEntry ret = null; Connection conn = ConnectionPoolManager.GetConnection(typeof(PhoneBookEntry)); List <Org.Reddragonit.Dbpro.Structure.Table> tmp = conn.Select(typeof(PhoneBookEntry), new SelectParameter[] { new EqualParameter("ID", id) }); if (tmp.Count > 0) { ret = (PhoneBookEntry)tmp[0]; } conn.CloseConnection(); return(ret); }