/// <summary> /// Method providing functionality for adding phone contacts into the phone repo /// </summary> /// <param name="name">name of the contact</param> /// <param name="numbersArray">Array of numbers</param> /// <returns></returns> public bool AddPhone(string name, IEnumerable<string> numbersArray) { string nameToLower = name.ToLowerInvariant(); PhonebookList entry; bool isNewPhone = !this.dictionary.TryGetValue(nameToLower, out entry); if (isNewPhone) { entry = new PhonebookList(); entry.Name = name; entry.Strings = new SortedSet<string>(); this.dictionary.Add(nameToLower, entry); this.sortedPhonebookList.Add(entry); } foreach (var phoneNumber in numbersArray) { this.mutliDictionary.Add(phoneNumber, entry); } entry.Strings.UnionWith(numbersArray); return isNewPhone; }
/// <summary> /// Method for adding phone in the repository /// </summary> /// <param name="name">Contact Name </param> /// <param name="phoneNumbers">Array of phone Numbers</param> /// <returns></returns> public bool AddPhone(string name, IEnumerable<string> phoneNumbers) { var old = from entry in this.listOfPhones where entry.Name.ToLowerInvariant() == name.ToLowerInvariant() select entry; bool oldPhonesFound; if (old.Count() == 0) { PhonebookList newPhoneList = new PhonebookList(); newPhoneList.Name = name; newPhoneList.Strings = new SortedSet<string>(); foreach (var num in phoneNumbers) { newPhoneList.Strings.Add(num); } this.listOfPhones.Add(newPhoneList); oldPhonesFound = true; } else if (old.Count() == 1) { PhonebookList phoneContact = old.First(); foreach (var num in phoneNumbers) { phoneContact.Strings.Add(num); } oldPhonesFound = false; } else { Console.WriteLine("Duplicated name in the phonebook found: " + name); return false; } return oldPhonesFound; }
/// <summary> /// Method providing functionality for listing of phone contacts /// </summary> /// <param name="startIndex">start index of the list</param> /// <param name="sizeOfPage">Size of the page to be displayed</param> /// <returns></returns> public PhonebookList[] ListEntries(int startIndex, int sizeOfPage) { if (startIndex < 0 || startIndex + sizeOfPage > this.listOfPhones.Count) { throw new ArgumentOutOfRangeException("Invalid start index or count."); } this.listOfPhones.Sort(); PhonebookList[] phonebookList = new PhonebookList[sizeOfPage]; for (int index = startIndex; index <= startIndex + sizeOfPage - 1; index++) { PhonebookList entry = this.listOfPhones[index]; phonebookList[index - startIndex] = entry; } return phonebookList; }
/// <summary> /// Method providing funcitonality for listing contacts /// </summary> /// <param name="startIndex">Start index of the List</param> /// <param name="sizeOfPage">Size of the page</param> /// <returns></returns> public PhonebookList[] ListEntries(int startIndex, int sizeOfPage) { if (startIndex < 0 || startIndex + sizeOfPage > this.dictionary.Count) { throw new ArgumentException("Invalid list parameters!"); } PhonebookList[] listOfContacts = new PhonebookList[sizeOfPage]; for (int index = startIndex; index <= startIndex + sizeOfPage - 1; index++) { PhonebookList entry = this.sortedPhonebookList[index]; listOfContacts[index - startIndex] = entry; } return listOfContacts; }