public bool AddPhone(string name, IEnumerable <string> phoneNumbers) { if (string.IsNullOrEmpty(name)) { throw new ArgumentException("Phone entry name cannot be null or empty."); } if (phoneNumbers == null) { throw new NullReferenceException("Phone numbers to add to phone entry cannot be null."); } string nameToLowerCase = name.ToLowerInvariant(); IPhoneEntry phoneEntry; bool isNewEntry = !this.entriesByName.TryGetValue(nameToLowerCase, out phoneEntry); if (isNewEntry) { phoneEntry = new PhoneEntry(name); this.entriesByName.Add(nameToLowerCase, phoneEntry); this.sortedEntries.Add(phoneEntry); } // TODO: Extract method foreach (var phoneNumber in phoneNumbers) { this.entriesByPhone.Add(phoneNumber, phoneEntry); } phoneEntry.PhoneNumbers.UnionWith(phoneNumbers); return(isNewEntry); }
/// <summary> /// Adds a new phone into the list of the entries /// </summary> /// <param name="name">The name of the person that number is accociated with</param> /// <param name="numbers">Sorted set of numbers.</param> /// <returns>If the number is added or merged</returns> public bool AddPhone(string name, IEnumerable<string> numbers) { bool isNewNumberAdded = false; if (numbers == null || numbers.Contains("")) { throw new ArgumentException("Invalid parameters"); } foreach (var number in numbers) { var numberOfSameNames = from entries in this.phoneEntries where entries.Name.ToLowerInvariant() == name.ToLowerInvariant() select entries; if (numberOfSameNames.Count() == 0) { PhoneEntry phoneEntry = new PhoneEntry(name); phoneEntry.PhoneNumbers.Add(number); this.phoneEntries.Add(phoneEntry); isNewNumberAdded = true; } else if (numberOfSameNames.Count() == 1) { PhoneEntry existingEntry = numberOfSameNames.First(); existingEntry.PhoneNumbers.Add(number); isNewNumberAdded = false; } } return isNewNumberAdded; }
public SearchTableEntity(PhoneEntry phoneEntry) { Name = phoneEntry.Name; Department = phoneEntry.Department; Extension = phoneEntry.Extension.ToString(); IsReady = phoneEntry.PhoneState == PhoneState.Ready; IsGroup = phoneEntry.PhoneType == PhoneEntryType.Group; }
public void ThrowArgumentExceptionOnRemovingMissingEntry() { var newEntry = new PhoneEntry { FirstName = "Chuck", LastName = "McGill", PhoneNumber = "15325324" }; Assert.Throws <ArgumentException>(() => { _phonebook.RemoveEntryAsync(newEntry); }); }
public void AddPhoneEntry() { var newEntry = new PhoneEntry { FirstName = "Chuck", LastName = "McGill", PhoneNumber = "15325324" }; _phonebook.AddEntryAsync(newEntry); Assert.NotEmpty(_phoneEntries.ListAll()); }
public void ThrowArgumentExceptionOnDuplicateInsert() { var newEntry = new PhoneEntry { FirstName = "Chuck", LastName = "McGill", PhoneNumber = "15325324" }; Assert.Throws <ArgumentException>(() => { _phonebook.AddEntryAsync(newEntry); _phonebook.AddEntryAsync(newEntry); }); }
public async Task <PhoneEntry> CreatePhoneEntryAsync(string name, string phoneNumber, int phoneBookId) { Guard.ThrowIfDefaultOrEmpty(name, "Name"); Guard.ThrowIfLessThanMinLength(name, "Name", 5); Guard.ThrowIfGreaterThanMaxLength(name, "Name", 50); Guard.ThrowIfDefaultOrEmpty(phoneNumber, "Phone Number"); Guard.ThrowIfDefaultValue(phoneBookId, "Phone Book"); Guard.ThrowIfRegexNotMatch(phoneNumber, "Phone Number", Constants.Constant10DigitPhoneFormat); var phoneBook = await _phoneBookService.GetPhoneBookAsync(phoneBookId); if (phoneBook == null) { throw new NotFoundException("Phone book not found"); } var phoneEntry = await GetPhoneEntryByNumberAsync(phoneNumber); if (phoneEntry == null) { phoneEntry = new PhoneEntry { Name = name, PhoneNumber = phoneNumber.RemoveNonNumericChars(), DateCreated = _clock.Now, DateModified = _clock.Now, }; await _repository.AddAsync(phoneEntry); } else { phoneEntry.Name = name; } if (phoneEntry.BookEntries.All(p => p.PhoneBookId != phoneBookId)) { phoneEntry.BookEntries.Add(new PhoneBookEntry { PhoneBook = phoneBook, DateCreated = _clock.Now }); } await _repository.SaveChangesAsync(); return(phoneEntry); }
public PhoneEntry[] ListPhoneEntries(int startIndex, int count) { if (startIndex < 0 || startIndex + count > this.PhoneBookEntries.Count) { throw new ArgumentOutOfRangeException("Invalid start index or count."); } this.PhoneBookEntries.Sort(); PhoneEntry[] listOfPhoneEntries = new PhoneEntry[count]; for (int i = startIndex; i <= startIndex + count - 1; i++) { PhoneEntry entry = this.PhoneBookEntries[i]; listOfPhoneEntries[i - startIndex] = entry; } return listOfPhoneEntries; }
public async Task <ActionResult <PhoneEntry> > CreateAsync([FromBody] NewPhoneEntryInput input) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var newEntry = new PhoneEntry { FirstName = input.FirstName, LastName = input.LastName, PhoneNumber = input.PhoneNumber }; await _phonebookManager.AddEntryAsync(newEntry); return(CreatedAtAction(nameof(GetByIdAsync), new { id = newEntry.PhoneNumber }, newEntry)); }
private static void AddEntry() { PhoneEntry entry = book.GetEntryByPage(book.AddEntry()); Console.Write("Page " + entry.PageNumber + "\nLast Name: "); entry.LastName = Console.ReadLine(); Console.Write("First Name: "); entry.FirstName = Console.ReadLine(); Console.Write("Patronymic: "); entry.Patronymic = Console.ReadLine(); bool success; do { Console.Write("Phone: "); success = entry.SetPhone(Console.ReadLine()); if (!success) { Console.WriteLine("Phone isn't correct. Try again."); } } while (!success); Console.Write("Country: "); entry.Country = Console.ReadLine(); do { Console.Write("Birthday: "); success = entry.SetBirthdayString(Console.ReadLine()); if (!success) { Console.WriteLine("Phone isn't correct. Try again."); } } while (!success); Console.Write("Company: "); entry.Company = Console.ReadLine(); Console.Write("Position: "); entry.Position = Console.ReadLine(); Console.Write("Notes: "); entry.Notes = Console.ReadLine(); Console.ReadKey(true); }
public async Task EditPhoneEntryAsync(PhoneEntry phoneEntry) { Guard.ThrowIfDefaultOrEmpty(phoneEntry.Name, nameof(phoneEntry.Name)); Guard.ThrowIfLessThanMinLength(phoneEntry.Name, nameof(phoneEntry.Name), 5); Guard.ThrowIfGreaterThanMaxLength(phoneEntry.Name, nameof(phoneEntry.Name), 50); Guard.ThrowIfDefaultOrEmpty(phoneEntry.PhoneNumber, "Phone Number"); Guard.ThrowIfRegexNotMatch(phoneEntry.PhoneNumber, "Phone Number", Constants.Constant10DigitPhoneFormat); var entity = await GetPhoneEntryAsync(phoneEntry.Id); if (entity == null) { throw new NotFoundException("Phone entry not found"); } entity.Name = phoneEntry.Name; entity.PhoneNumber = phoneEntry.PhoneNumber.RemoveNonNumericChars(); entity.DateModified = _clock.Now; _repository.Update(entity); await _repository.SaveChangesAsync(); }
public bool AddPhone(string name, IEnumerable <string> phoneNumbers) { var old = from e in this.entries where e.Name.ToLowerInvariant() == name.ToLowerInvariant() select e; bool flag; if (old.Count() == 0) { var obj = new PhoneEntry(name); foreach (var num in phoneNumbers) { obj.PhoneNumbers.Add(num); } this.entries.Add(obj); flag = true; } else if (old.Count() == 1) { IPhoneEntry obj2 = old.First(); foreach (var num in phoneNumbers) { obj2.PhoneNumbers.Add(num); } flag = false; } else { Console.WriteLine("Duplicated name in the phonebook found: " + name); return(false); } return(flag); }
public bool AddPhone(string name, IEnumerable<string> listOfNumbers) { var listWithOldNumbers = from e in this.PhoneBookEntries where e.Name.ToLowerInvariant() == name.ToLowerInvariant() select e; bool isNumberFound = false; PhoneEntry phoneEntry; var distinctItems = listOfNumbers.Distinct(); // bottleneck if (listWithOldNumbers.Count() == 0) { phoneEntry = new PhoneEntry(); phoneEntry.Name = name; phoneEntry.ListOfNumbers = new SortedSet<string>(); foreach (var number in distinctItems) { phoneEntry.ListOfNumbers.Add(number); } this.PhoneBookEntries.Add(phoneEntry); isNumberFound = true; } else if (listWithOldNumbers.Count() == 1) { phoneEntry = listWithOldNumbers.First(); foreach (var number in distinctItems) { phoneEntry.ListOfNumbers.Add(number); } isNumberFound = false; } return isNumberFound; }
public bool AddPhone(string name, IEnumerable<string> phoneNumbers) { string caseInsensitiveName = name.ToLowerInvariant(); PhoneEntry entry; bool isNotExistingNumber = !this.caseInsensitiveKeyName.TryGetValue(caseInsensitiveName, out entry); if (isNotExistingNumber) { entry = new PhoneEntry(); entry.Name = name; entry.numbers = new HashSet<string>(); this.caseInsensitiveKeyName.Add(caseInsensitiveName, entry); this.phoneEntrySorted.Add(entry); } foreach (var number in phoneNumbers) { this.keyNumberValueEntry.Add(number, entry); } entry.numbers.UnionWith(phoneNumbers); return isNotExistingNumber; }
public Info(Service service, TabbedPage tabs, Verify verify) { _phoneNumberContainer = new StackLayout(); _phoneNumberContainer.Orientation = StackOrientation.Horizontal; _phoneNumberContainer.HorizontalOptions = LayoutOptions.FillAndExpand; _phoneNumber = new PhoneEntry(); _phoneNumber.Placeholder = Localize.GetString("TelegramPhoneNumber"); _phoneNumber.HorizontalOptions = LayoutOptions.FillAndExpand; _phoneNumberContainer.Children.Add(_phoneNumber); var programmaticChange = false; _firstName = new Entry(); _firstName.Placeholder = Localize.GetString("TelegramFirstName"); _lastName = new Entry(); _lastName.Placeholder = Localize.GetString("TelegramLastName"); _loadConversationsLayout = new StackLayout(); _loadConversationsLayout.Orientation = StackOrientation.Horizontal; _loadConversationsLayout.HorizontalOptions = LayoutOptions.End; _loadConversationsLayout.Padding = new Thickness(15, 0); _loadConversationsLayout.Spacing = 10; _loadConversationsTitle = new Label(); _loadConversationsTitle.Text = Localize.GetString("TelegramLoadConversations"); _loadConversationsSwitch = new Switch(); _loadConversationsSwitch.Toggled += (sender, e) => { (service as Telegram).LoadConversations = e.Value; }; _loadConversationsSwitch.IsToggled = true; _loadConversationsLayout.Children.Add(_loadConversationsTitle); _loadConversationsLayout.Children.Add(_loadConversationsSwitch); _next = new Button(); _next.HorizontalOptions = LayoutOptions.FillAndExpand; _next.Text = Localize.GetString("TelegramNext"); _next.TextColor = Color.White; _next.BackgroundColor = Color.FromHex("77D065"); _next.Clicked += async (sender, e) => { if (String.IsNullOrWhiteSpace(_firstName.Text)) { await DisplayAlert(Localize.GetString("TelegramInvalidFirstNameTitle"), Localize.GetString("TelegramInvalidFirstNameMessage"), Localize.GetString("TelegramOkay")); return; } if (String.IsNullOrWhiteSpace(_lastName.Text)) { await DisplayAlert(Localize.GetString("TelegramInvalidLastNameTitle"), Localize.GetString("TelegramInvalidLastNameMessage"), Localize.GetString("TelegramOkay")); return; } Func<Task> invalidNumber = () => { return DisplayAlert(Localize.GetString("TelegramInvalidNumberTitle"), Localize.GetString("TelegramInvalidNumberMessage"), Localize.GetString("TelegramOkay")); }; if (!PhoneBook.IsPossibleNumber(_phoneNumber.Text)) { await invalidNumber(); return; } var number = PhoneBook.TryGetPhoneNumberLegible(_phoneNumber.Text); var formattedNumber = PhoneBook.FormatPhoneNumber(number); if (formattedNumber == null) { await invalidNumber(); return; } var nationalNumber = new string(formattedNumber.Item2.Where(Char.IsDigit).ToArray()); if (!await DisplayAlert(Localize.GetString("TelegramConfirmNumberTitle"), Localize.GetString("TelegramConfirmNumberMessage").Replace("[number]", number), Localize.GetString("TelegramYes"), Localize.GetString("TelegramNo"))) { return; } _progressBar.IsVisible = true; _next.IsEnabled = false; _firstName.IsEnabled = false; _lastName.IsEnabled = false; _phoneNumber.IsEnabled = false; DependencyService.Get<IPluginPageControls>().BackPressEnabled = false; TelegramSettings settings = null; var skipSave = false; var state = _settings.States.FirstOrDefault(x => x.NationalNumber == nationalNumber); if (state != null && state.Settings != null) { skipSave = true; settings = state.Settings; } else { settings = await Task<TelegramSettings>.Factory.StartNew(() => { return Telegram.GenerateAuthentication(service); }); } var firstName = _firstName.Text.Trim(); var lastName = _lastName.Text.Trim(); DependencyService.Get<IPluginPageControls>().BackPressEnabled = true; _firstName.IsEnabled = true; _lastName.IsEnabled = true; _phoneNumber.IsEnabled = true; _next.IsEnabled = true; _progressBar.IsVisible = false; if (settings == null) { await DisplayAlert(Localize.GetString("TelegramAuthGenerationFailedTitle"), Localize.GetString("TelegramAuthGenerationFailedMessage"), Localize.GetString("TelegramOkay")); return; } if (!skipSave) { _settings.States.Add(new Setup.TelegramSetupSettings.State { Settings = settings, NationalNumber = nationalNumber }); SaveSettings(); } verify.CountryCode = formattedNumber.Item1; verify.NationalNumber = nationalNumber; verify.FirstName = firstName; verify.LastName = lastName; tabs.Children.Add(verify); tabs.CurrentPage = verify; }; _image = new Image(); _image.Source = ImageSource.FromUri( new Uri("https://lh4.ggpht.com/fuvTtxbZ1-dkEmzUMfKcgMJwW8PyY4fhJJ_NKT-NpIQJukszEY2GfCkJUF5ch6Co3w=w300")); _image.WidthRequest = 100; _image.HeightRequest = 100; _progressBar = new ActivityIndicator(); _progressBar.VerticalOptions = LayoutOptions.EndAndExpand; _progressBar.IsRunning = true; _progressBar.IsVisible = false; var stackLayout = new StackLayout(); stackLayout.Spacing = 20; stackLayout.Padding = 25; stackLayout.VerticalOptions = LayoutOptions.Start; var children = stackLayout.Children; children.Add(_image); children.Add(_firstName); children.Add(_lastName); children.Add(_phoneNumberContainer); children.Add(_loadConversationsLayout); var nextLayout = new StackLayout(); nextLayout.Spacing = 20; nextLayout.Orientation = StackOrientation.Horizontal; nextLayout.Children.Add(_next); nextLayout.Children.Add(_progressBar); children.Add(nextLayout); Content = new ScrollView { Content = stackLayout }; Title = Localize.GetString("TelegramInformationTitle"); }
public Info(Service service, TabbedPage tabs, Verify verify) { _phoneNumberContainer = new StackLayout(); _phoneNumberContainer.Orientation = StackOrientation.Horizontal; _phoneNumberContainer.HorizontalOptions = LayoutOptions.FillAndExpand; _phoneNumber = new PhoneEntry(); _phoneNumber.Placeholder = Localize.GetString("TelegramPhoneNumber"); _phoneNumber.HorizontalOptions = LayoutOptions.FillAndExpand; _phoneNumberContainer.Children.Add(_phoneNumber); var programmaticChange = false; _firstName = new Entry(); _firstName.Placeholder = Localize.GetString("TelegramFirstName"); _lastName = new Entry(); _lastName.Placeholder = Localize.GetString("TelegramLastName"); _loadConversations = new CheckBox(); _loadConversations.DefaultText = Localize.GetString("TelegramLoadConversations"); _loadConversations.CheckedChanged += (sender, e) => { //TODO: }; _loadConversations.Checked = true; _next = new Button(); _next.HorizontalOptions = LayoutOptions.FillAndExpand; _next.Text = Localize.GetString("TelegramNext"); _next.TextColor = Color.White; _next.BackgroundColor = Color.FromHex("77D065"); _next.Clicked += async(sender, e) => { if (String.IsNullOrWhiteSpace(_firstName.Text)) { await DisplayAlert(Localize.GetString("TelegramInvalidFirstNameTitle"), Localize.GetString("TelegramInvalidFirstNameMessage"), Localize.GetString("TelegramOkay")); return; } if (String.IsNullOrWhiteSpace(_lastName.Text)) { await DisplayAlert(Localize.GetString("TelegramInvalidLastNameTitle"), Localize.GetString("TelegramInvalidLastNameMessage"), Localize.GetString("TelegramOkay")); return; } Func <Task> invalidNumber = () => { return(DisplayAlert(Localize.GetString("TelegramInvalidNumberTitle"), Localize.GetString("TelegramInvalidNumberMessage"), Localize.GetString("TelegramOkay"))); }; if (!PhoneBook.IsPossibleNumber(_phoneNumber.Text)) { await invalidNumber(); return; } var number = PhoneBook.TryGetPhoneNumberLegible(_phoneNumber.Text); var formattedNumber = PhoneBook.FormatPhoneNumber(number); if (formattedNumber == null) { await invalidNumber(); return; } var nationalNumber = new string(formattedNumber.Item2.Where(Char.IsDigit).ToArray()); if (!await DisplayAlert(Localize.GetString("TelegramConfirmNumberTitle"), Localize.GetString("TelegramConfirmNumberMessage").Replace("[number]", number), Localize.GetString("TelegramYes"), Localize.GetString("TelegramNo"))) { return; } _progressBar.IsVisible = true; _next.IsEnabled = false; _firstName.IsEnabled = false; _lastName.IsEnabled = false; _phoneNumber.IsEnabled = false; DependencyService.Get <IPluginPageControls>().BackPressEnabled = false; TelegramSettings settings = null; var skipSave = false; var state = _settings.States.FirstOrDefault(x => x.NationalNumber == nationalNumber); if (state != null && state.Settings != null) { skipSave = true; settings = state.Settings; } else { settings = await Task <TelegramSettings> .Factory.StartNew(() => { return(Telegram.GenerateAuthentication(service)); }); } var firstName = _firstName.Text.Trim(); var lastName = _lastName.Text.Trim(); DependencyService.Get <IPluginPageControls>().BackPressEnabled = true; _firstName.IsEnabled = true; _lastName.IsEnabled = true; _phoneNumber.IsEnabled = true; _next.IsEnabled = true; _progressBar.IsVisible = false; if (settings == null) { await DisplayAlert(Localize.GetString("TelegramAuthGenerationFailedTitle"), Localize.GetString("TelegramAuthGenerationFailedMessage"), Localize.GetString("TelegramOkay")); return; } if (!skipSave) { _settings.States.Add(new Setup.TelegramSetupSettings.State { Settings = settings, NationalNumber = nationalNumber }); SaveSettings(); } verify.CountryCode = formattedNumber.Item1; verify.NationalNumber = nationalNumber; verify.FirstName = firstName; verify.LastName = lastName; tabs.Children.Add(verify); tabs.CurrentPage = verify; }; _image = new Image(); _image.Source = ImageSource.FromUri( new Uri("https://lh4.ggpht.com/fuvTtxbZ1-dkEmzUMfKcgMJwW8PyY4fhJJ_NKT-NpIQJukszEY2GfCkJUF5ch6Co3w=w300")); _image.WidthRequest = 100; _image.HeightRequest = 100; _progressBar = new ActivityIndicator(); _progressBar.VerticalOptions = LayoutOptions.EndAndExpand; _progressBar.IsRunning = true; _progressBar.IsVisible = false; var stackLayout = new StackLayout(); stackLayout.Spacing = 20; stackLayout.Padding = 25; stackLayout.VerticalOptions = LayoutOptions.Start; var children = stackLayout.Children; children.Add(_image); children.Add(_firstName); children.Add(_lastName); children.Add(_phoneNumberContainer); children.Add(_loadConversations); var nextLayout = new StackLayout(); nextLayout.Spacing = 20; nextLayout.Orientation = StackOrientation.Horizontal; nextLayout.Children.Add(_next); nextLayout.Children.Add(_progressBar); children.Add(nextLayout); Content = new ScrollView { Content = stackLayout }; Title = Localize.GetString("TelegramInformationTitle"); }
public PhoneEntry[] ListEntries(int startPositon, int count) { if (startPositon < 0 || startPositon + count > this.caseInsensitiveKeyName.Count) { return null; } PhoneEntry[] list = new PhoneEntry[count]; for (int i = startPositon; i <= startPositon + count - 1; i++) { PhoneEntry entry = this.phoneEntrySorted[i]; list[i - startPositon] = entry; } return list; }
private static void ChangeEntry() { if (IsEmpty()) { return; } bool success = false; int page = 0; do { Console.Write("Number of the page: "); try { page = Convert.ToInt32(Console.ReadLine()); if (book.GetEntryByPage(page) == null) { success = false; Console.WriteLine("There is not such page in Phone Book. Try again."); } else { success = true; } } catch (Exception ex) { success = false; Console.WriteLine("Page number is not correct. Try again."); } } while (!success); PhoneEntry entry = book.GetEntryByPage(page); Console.Write("Last Name:\n" + entry.LastName); entry.LastName = EditString(entry.LastName); Console.Write("First Name:\n" + entry.FirstName); entry.FirstName = EditString(entry.FirstName); Console.Write("Patronymic:\n" + entry.Patronymic); entry.Patronymic = EditString(entry.Patronymic); do { Console.Write("Phone:\n" + entry.GetPhone()); success = entry.SetPhone(EditString(entry.GetPhone())); if (!success) { Console.WriteLine("Phone isn't correct. Try again."); } } while (!success); Console.Write("Country:\n" + entry.Country); entry.Country = EditString(entry.Country); do { Console.Write("Birthday:\n" + entry.GetBirthdayString()); success = entry.SetBirthdayString(EditString(entry.GetBirthdayString())); if (!success) { Console.WriteLine("Phone isn't correct. Try again."); } } while (!success); Console.Write("Company:\n" + entry.Company); entry.Company = EditString(entry.Company); Console.Write("Position:\n" + entry.Position); entry.Position = EditString(entry.Position); Console.Write("Notes:\n" + entry.Notes); entry.Notes = EditString(entry.Notes); Console.ReadKey(true); }
public MainPage() { InitializeComponent(); PhoneEntry.On <Android>().SetAutofillHint(AutofillHintType.Phone); }
/// <summary> /// Makes a list of all the enties that are in the phonebook /// </summary> /// <param name="startIndex"></param> /// <param name="numberOfEntriesToList"></param> /// <returns>An array of PhoneEntries</returns> public PhoneEntry[] ListEntries(int startIndex, int numberOfEntriesToList) { int endPosition = startIndex + numberOfEntriesToList; bool isOutOfEndRange = (endPosition) > this.phoneEntries.Count; if (startIndex < 0 || isOutOfEndRange) { throw new ArgumentOutOfRangeException("Invalid start index or count."); } this.phoneEntries.Sort(); PhoneEntry[] listOfEntries = new PhoneEntry[numberOfEntriesToList]; for (int i = startIndex; i <= endPosition - 1; i++) { listOfEntries[i - startIndex] = this.phoneEntries[i]; } return listOfEntries; }
public Task RemoveAsync(PhoneEntry phoneEntry) { _dbContext.PhoneEntries.Remove(phoneEntry); return(_dbContext.SaveChangesAsync()); }
public Task AddAsync(PhoneEntry phoneEntry) { _dbContext.AddAsync(phoneEntry); return(_dbContext.SaveChangesAsync()); }