/// <summary> /// Converts data returned from a cisco codec to the generic Directory format. /// </summary> /// <param name="result"></param> /// <param name="resultFolder"></param> /// <returns></returns> public static CodecDirectory ConvertCiscoPhonebookToGeneric(PhonebookSearchResult result) { var directory = new Codec.CodecDirectory(); var folders = new List <Codec.DirectoryItem>(); var contacts = new List <Codec.DirectoryItem>(); try { if (result.Folder.Count > 0) { foreach (Folder f in result.Folder) { var folder = new DirectoryFolder(); folder.Name = f.Name.Value; folder.FolderId = f.FolderId.Value; if (f.ParentFolderId != null) { folder.ParentFolderId = f.ParentFolderId.Value; } folders.Add(folder); } folders.OrderBy(f => f.Name); directory.AddFoldersToDirectory(folders); } if (result.Contact.Count > 0) { foreach (Contact c in result.Contact) { var contact = new DirectoryContact(); contact.Name = c.Name.Value; contact.ContactId = c.ContactId.Value; if (!string.IsNullOrEmpty(c.Title.Value)) { contact.Title = c.Title.Value; } if (c.FolderId != null) { contact.FolderId = c.FolderId.Value; } foreach (ContactMethod m in c.ContactMethod) { eContactMethodCallType callType = eContactMethodCallType.Unknown; if (!string.IsNullOrEmpty(m.CallType.Value)) { if (m.CallType.Value.ToLower() == "audio") { callType = eContactMethodCallType.Audio; } else if (m.CallType.Value.ToLower() == "video") { callType = eContactMethodCallType.Video; } } eContactMethodDevice device = eContactMethodDevice.Unknown; if (!string.IsNullOrEmpty(m.Device.Value)) { if (m.Device.Value.ToLower() == "mobile") { device = eContactMethodDevice.Mobile; } else if (m.Device.Value.ToLower() == "telephone") { device = eContactMethodDevice.Telephone; } else if (m.Device.Value.ToLower() == "video") { device = eContactMethodDevice.Video; } else if (m.Device.Value.ToLower() == "other") { device = eContactMethodDevice.Other; } } contact.ContactMethods.Add(new PepperDash.Essentials.Devices.Common.Codec.ContactMethod() { Number = m.Number.Value, ContactMethodId = m.ContactMethodId.Value, CallType = callType, Device = device }); } contacts.Add(contact); } contacts.OrderBy(c => c.Name); directory.AddContactsToDirectory(contacts); } } catch (Exception e) { Debug.Console(1, "Error converting Cisco Phonebook results to generic: {0}", e); } return(directory); }
/// <summary> /// Extracts the contacts with no FolderId and returns them sorted alphabetically /// </summary> /// <param name="result"></param> /// <returns></returns> public static List <DirectoryItem> GetRootContactsFromSearchResult(PhonebookSearchResult result) { var rootContacts = new List <DirectoryItem>(); if (result.Contact.Count == 0) { return(null); } else if (result.Contact.Count > 0) { if (Debug.Level > 0) { Debug.Console(1, "Root Contacts:\n"); } foreach (Contact c in result.Contact) { var contact = new DirectoryContact(); if (string.IsNullOrEmpty(c.FolderId.Value)) { contact.Name = c.Name.Value; contact.ContactId = c.ContactId.Value; if (!string.IsNullOrEmpty(c.Title.Value)) { contact.Title = c.Title.Value; } if (Debug.Level > 0) { Debug.Console(1, "{0}\nContact Methods:", contact.Name); } foreach (ContactMethod m in c.ContactMethod) { var tempContactMethod = new PepperDash.Essentials.Devices.Common.Codec.ContactMethod(); eContactMethodCallType callType = eContactMethodCallType.Unknown; if (!string.IsNullOrEmpty(m.CallType.Value)) { if (!string.IsNullOrEmpty(m.CallType.Value)) { if (m.CallType.Value.ToLower() == "audio") { callType = eContactMethodCallType.Audio; } else if (m.CallType.Value.ToLower() == "video") { callType = eContactMethodCallType.Video; } tempContactMethod.CallType = callType; } } eContactMethodDevice device = eContactMethodDevice.Unknown; if (!string.IsNullOrEmpty(m.Device.Value)) { if (m.Device.Value.ToLower() == "mobile") { device = eContactMethodDevice.Mobile; } else if (m.Device.Value.ToLower() == "telephone") { device = eContactMethodDevice.Telephone; } else if (m.Device.Value.ToLower() == "video") { device = eContactMethodDevice.Video; } else if (m.Device.Value.ToLower() == "other") { device = eContactMethodDevice.Other; } tempContactMethod.Device = device; } if (Debug.Level > 0) { Debug.Console(1, "Number: {0}", m.Number.Value); } tempContactMethod.Number = m.Number.Value; tempContactMethod.ContactMethodId = m.ContactMethodId.Value; contact.ContactMethods.Add(tempContactMethod); } rootContacts.Add(contact); } } } rootContacts.OrderBy(f => f.Name); return(rootContacts); }