public IList<PhonebookEntry> ListEntries(int startIndex, int count)
        {
            if (startIndex < 0 || startIndex >= this.entriesByName.Count)
            {
                throw new ArgumentOutOfRangeException("startIndex");
            }

            if (count > this.entriesByName.Count)
            {
                throw new ArgumentOutOfRangeException("count");
            }

            if (startIndex + count > this.entriesByName.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid parameters");
            }

            var matchedEntries = new PhonebookEntry[count];

            for (int i = startIndex; i <= startIndex + count - 1; i++)
            {
                PhonebookEntry entry = this.sortedEntries[i];
                matchedEntries[i - startIndex] = entry;
            }

            return matchedEntries;
        }
Пример #2
0
        /// <summary>
        /// Adds new Phonebook Entry or if present adds new phones to the existing Entry.
        /// </summary>
        /// <param name="name">Represents name to wich are asigned, added the phone numbers.</param> 
        /// <param name="numbers">Represents the phone numbers, in IEnumerable form.</param>
        /// <returns>Returns true if </returns>
        /// <remarks></remarks>
        /// <exception cref=""></exception>
        public bool AddPhone(string name, IEnumerable<string> numbers)
        {
            var existingEntry = from entry in entries
                where string.Equals(entry.Name, name, StringComparison.OrdinalIgnoreCase)
                select entry;

            int newPhonesCount = numbers.Count();
            bool actionStatus = false;

            if (newPhonesCount <= 10)
            {
                switch (existingEntry.Count())
                {
                    case 0:
                        PhonebookEntry processEntry = new PhonebookEntry(name, numbers);
                        entries.Add(processEntry);
                        actionStatus = true;
                        break;
                    case 1:
                        existingEntry.First().AssignPhones(numbers);
                        break;
                    default:
                        throw new ArgumentException("Duplicated name in the phonebook found: " + name);
                        break;
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException("numbers","New entry overpopulated phone numbers.");
            }
            return actionStatus;
        }
 public PhonebookEntryDTO(PhonebookEntry entry)
 {
     Id          = entry.Id.ToString();
     PhonebookId = entry.PhonebookId.ToString();
     Name        = entry.Name;
     PhoneNumber = entry.PhoneNumber;
 }
        private async Task WriteEntryRecords(PhonebookEntry entry, int entryId)
        {
            var parameters = new DynamicParameters();

            foreach (var entryNumber in entry.EntryNumbers)
            {
                parameters = new DynamicParameters();
                parameters.Add("@entry_id", entryId, dbType: DbType.String);
                parameters.Add("@number", entryNumber.Number, dbType: DbType.String);
                parameters.Add("@number_type_id", entryNumber.NumberType, dbType: DbType.Int32);
                await PhonebookDbConnection.Connection.ExecuteAsync("sp_insert_entry_number", parameters, commandType : CommandType.StoredProcedure);
            }

            foreach (var entryEmail in entry.EntryEmails)
            {
                parameters = new DynamicParameters();
                parameters.Add("@entry_id", entryId, dbType: DbType.String);
                parameters.Add("@email", entryEmail.Email, dbType: DbType.String);
                parameters.Add("@email_type_id", entryEmail.EmailType, dbType: DbType.Int32);
                await PhonebookDbConnection.Connection.ExecuteAsync("sp_insert_entry_number", parameters, commandType : CommandType.StoredProcedure);
            }

            foreach (var entryAddress in entry.EntryAddresses)
            {
                parameters = new DynamicParameters();
                parameters.Add("@entry_id", entryId, dbType: DbType.String);
                parameters.Add("@address_l1", entryAddress.AddressL1, dbType: DbType.String);
                parameters.Add("@address_l2", entryAddress.AddressL2, dbType: DbType.String);
                parameters.Add("@post_code", entryAddress.PostCode, dbType: DbType.String);
                parameters.Add("@county", entryAddress.County, dbType: DbType.String);
                parameters.Add("@country", entryAddress.Country, dbType: DbType.String);
                parameters.Add("@email_type_id", entryAddress.AddressType, dbType: DbType.Int32);
                await PhonebookDbConnection.Connection.ExecuteAsync("sp_insert_entry_address", parameters, commandType : CommandType.StoredProcedure);
            }
        }
Пример #5
0
        public bool AddPhone(string name, IEnumerable <string> phoneNumbers)
        {
            string         contactNameLowerInvariant = name.ToLowerInvariant();
            PhonebookEntry phonebookEntry;

            bool entryDoesntExist = !this.phonebookEntriesByContactName.TryGetValue(contactNameLowerInvariant, out phonebookEntry);

            if (entryDoesntExist)
            {
                phonebookEntry              = new PhonebookEntry();
                phonebookEntry.ContactName  = name;
                phonebookEntry.PhoneNumbers = new SortedSet <string>();

                this.phonebookEntriesByContactName.Add(contactNameLowerInvariant, phonebookEntry);
                this.sortedPhonebookEntries.Add(phonebookEntry);
            }

            foreach (var phoneNumber in phoneNumbers)
            {
                this.multiplePhonebookEntriesByContactName.Add(phoneNumber, phonebookEntry);
            }

            phonebookEntry.PhoneNumbers.UnionWith(phoneNumbers);

            return(entryDoesntExist);
        }
Пример #6
0
        public bool AddPhone(string name, IEnumerable <string> nums)
        {
            var oldEntries =
                from e in this.entries
                where e.Name.ToLowerInvariant() == name.ToLowerInvariant()
                select e;

            if (oldEntries.Count() == 0)
            {
                PhonebookEntry newEntry = new PhonebookEntry();
                newEntry.Name = name;

                foreach (var num in nums)
                {
                    newEntry.PhoneNumbers.Add(num);
                }

                this.entries.Add(newEntry);
                return(false);
            }
            else if (oldEntries.Count() == 1)
            {
                PhonebookEntry oldEntry = oldEntries.First();
                foreach (var num in nums)
                {
                    oldEntry.PhoneNumbers.Add(num);
                }

                return(true);
            }
            else
            {
                throw new Exception("Duplicated name in the phonebook found: " + name);
            }
        }
        public async Task <ActionResult <Object> > Create(PhoneBookEntryDTO data)
        {
            var user = GetCurrentUser();

            if (user != null)
            {
                PhonebookEntry entry = new PhonebookEntry()
                {
                    Id          = Guid.NewGuid(),
                    FirstName   = data.FirstName,
                    Surname     = data.Surname,
                    PhoneNumber = data.PhoneNumber,
                    Kind        = (Enums.EntryKindEnum)data.Kind,
                    User        = user
                };

                try
                {
                    _context.PhonebookEntries.Add(entry);
                    _ = await _context.SaveChangesAsync();

                    return(Ok());
                } catch (Exception ex)
                {
                    throw ex;
                }
            }

            return(BadRequest());
        }
Пример #8
0
        public bool AddPhone(string name, IEnumerable<string> nums)
        {
            var oldEntries =
                from e in this.entries
                where e.Name.ToLowerInvariant() == name.ToLowerInvariant()
                select e;

            if (oldEntries.Count() == 0)
            {
                PhonebookEntry newEntry = new PhonebookEntry();
                newEntry.Name = name;

                foreach (var num in nums)
                {
                    newEntry.PhoneNumbers.Add(num);
                }

                this.entries.Add(newEntry);
                return false;
            }
            else if (oldEntries.Count() == 1)
            {
                PhonebookEntry oldEntry = oldEntries.First();
                foreach (var num in nums)
                {
                    oldEntry.PhoneNumbers.Add(num);
                }

                return true;
            }
            else
            {
                throw new Exception("Duplicated name in the phonebook found: " + name);
            }
        }
        public bool AddPhone(string name, IEnumerable<string> phoneNumbers)
        {
            string contactNameLowerInvariant = name.ToLowerInvariant();
            PhonebookEntry phonebookEntry;

            bool entryDoesntExist = !this.phonebookEntriesByContactName.TryGetValue(contactNameLowerInvariant, out phonebookEntry);
            if (entryDoesntExist)
            {
                phonebookEntry = new PhonebookEntry();
                phonebookEntry.ContactName = name;
                phonebookEntry.PhoneNumbers = new SortedSet<string>();

                this.phonebookEntriesByContactName.Add(contactNameLowerInvariant, phonebookEntry);
                this.sortedPhonebookEntries.Add(phonebookEntry);
            }

            foreach (var phoneNumber in phoneNumbers)
            {
                this.multiplePhonebookEntriesByContactName.Add(phoneNumber, phonebookEntry);
            }

            phonebookEntry.PhoneNumbers.UnionWith(phoneNumbers);

            return entryDoesntExist;
        }
Пример #10
0
        public PhonebookEntry Update(PhonebookEntry phonebookEntry)
        {
            var entity = context.PhonebookEntry.Attach(phonebookEntry);

            entity.State = EntityState.Modified;
            return(phonebookEntry);
        }
 public void UpdateDBEntry(PhonebookEntry entry, PhonebookEntryViewModel entryViewModel)
 {
     entry.FirstName = entryViewModel.FirstName;
     entry.LastName  = entryViewModel.LastName;
     entry.Type      = entryViewModel.Type;
     this.data.PhonebookEntries.Update(entry);
     this.data.SaveChanges();
 }
Пример #12
0
        public void ShoudAddSingleEntryWithSingleNumberAndName()
        {
            var entry = new PhonebookEntry("Kalina");
            entry.PhoneNumbers.Add("0899 76 15 33");

            Assert.AreEqual(1, entry.PhoneNumbers.Count);
            Assert.AreEqual("Kalina", entry.Name);
        }
Пример #13
0
 public PhoneBookEntryDTO(PhonebookEntry data)
 {
     Id          = data.Id.ToString();
     UserId      = data.User.Id.ToString();
     Kind        = (int)data.Kind;
     PhoneNumber = data.PhoneNumber;
     FirstName   = data.FirstName;
     Surname     = data.Surname;
 }
Пример #14
0
 public ActionResult AddEmailToEntry([FromBody] PhonebookEntry phonebookEntry, string email)
 {
     using (var context = new SqlConnection("Server=localhost;Database=PhonebookTestDb;Trusted_Connection=True;"))
     {
         var sql = @"INSERT INTO Email VALUES @entryId, @email";
         context.Execute(sql, new { @entryId = phonebookEntry.Id, @email = email });
     }
     return(Ok());
 }
Пример #15
0
    // Adds a phonebook entry to the internal hash table by key
    private void AddEntry(string key, PhonebookEntry entry)
    {
        if (!this.book.ContainsKey(key))
        {
            this.book[key] = new List<PhonebookEntry>();
        }

        this.book[key].Add(entry);
    }
Пример #16
0
 // Adds an entry to the phonebook
 public void Add(PhonebookEntry entry)
 {
     var names = entry.Name.Split(' ');
     foreach (var name in names)
     {
         this.AddEntry(name, entry);
         this.AddEntry(name + ' ' + entry.Town, entry);
     }
 }
Пример #17
0
 public ActionResult AddEntry([FromBody] PhonebookEntry phonebookEntry)
 {
     using (var context = new SqlConnection("Server=localhost;Database=PhonebookTestDb;Trusted_Connection=True;"))
     {
         var sql = @"INSERT INTO [Entry] VALUES (@LastName, @FirstName, @PhoneNumber, @Email)";
         context.Execute(sql, new { @LastName = phonebookEntry.LastName, @FirstName = phonebookEntry.FirstName, @PhoneNumber = phonebookEntry.PhoneNumber /*, @Email = phonebookEntry.Email*/ });
     }
     return(Ok());
 }
Пример #18
0
 public void EditEntry(PhonebookEntry editedEntry)
 {
     if (Book.ContainsKey(editedEntry.PhoneNumber))
     {
         Book[editedEntry.PhoneNumber] = editedEntry;
     }
     else
     {
         CreateEntry(editedEntry);
     }
 }
Пример #19
0
        public async Task <IHttpActionResult> PatchPhonebookEntry(PhonebookEntry request)
        {
            if (ModelState.IsValid)
            {
                var response = await PhonebookService.EditPhonebookEntry(request);

                return(Ok(response));
            }

            return(BadRequest(ModelState));
        }
Пример #20
0
        public async Task <IActionResult> AddEntry(int id, [Bind("Name,Number,PhonebookID")] PhonebookEntry phoneBookEntry)
        {
            if (ModelState.IsValid)
            {
                _context.Add(phoneBookEntry);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }

            return(RedirectToAction(nameof(Index)));
        }
        public ActionResult <PhoneBookEntryDTO> Get(string id)
        {
            var user = GetCurrentUser();

            if (user != null)
            {
                Guid.TryParse(id, out Guid entryId);
                PhonebookEntry entry = _context.PhonebookEntries.FirstOrDefault(x => x.User.Id == user.Id && x.Id == entryId);
                if (entry != null)
                {
                    return(new PhoneBookEntryDTO(entry));
                }
            }
            return(NotFound());
        }
        public PhonebookEntry[] ListEntries(int startIndex, int count)
        {
            if (startIndex < 0 || startIndex + count > this.entriesByName.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or count.");
            }

            PhonebookEntry[] matchedEntries = new PhonebookEntry[count];
            for (int i = startIndex; i <= startIndex + count - 1; i++)
            {
                PhonebookEntry entry = this.entriesSorted[i];
                matchedEntries[i - startIndex] = entry;
            }
            return matchedEntries;
        }
Пример #23
0
        public IEnumerable<PhonebookEntry> ListEntries(int first, int num)
        {
            if (first < 0 || first + num > this.phonebookEntriesByContactName.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid range");
            }

            PhonebookEntry[] list = new PhonebookEntry[num];

            for (int i = first; i <= first + num - 1; i++)
            {
                PhonebookEntry entry = this.sortedPhonebookEntries[i];
                list[i - first] = entry;
            }

            return list;
        }
Пример #24
0
        public PhonebookEntry[] ListEntries(int first, int num)
        {
            if (first < 0 || first + num > this.dictEntries.Count)
            {
                throw new ArgumentOutOfRangeException();
            }

            PhonebookEntry[] list = new PhonebookEntry[num];

            for (int i = first; i <= first + num - 1; i++)
            {
                PhonebookEntry entry = this.sortedEntries[i];
                list[i - first] = entry;
            }

            return list;
        }
Пример #25
0
        public PhonebookEntry[] ListEntries(int first, int num)
        {
            if (first < 0 || first + num > this.dictEntries.Count)
            {
                throw new ArgumentOutOfRangeException();
            }

            PhonebookEntry[] list = new PhonebookEntry[num];

            for (int i = first; i <= first + num - 1; i++)
            {
                PhonebookEntry entry = this.sortedEntries[i];
                list[i - first] = entry;
            }

            return(list);
        }
Пример #26
0
        public IEnumerable <PhonebookEntry> ListEntries(int first, int num)
        {
            if (first < 0 || first + num > this.phonebookEntriesByContactName.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid range");
            }

            PhonebookEntry[] list = new PhonebookEntry[num];

            for (int i = first; i <= first + num - 1; i++)
            {
                PhonebookEntry entry = this.sortedPhonebookEntries[i];
                list[i - first] = entry;
            }

            return(list);
        }
Пример #27
0
        public PhonebookEntry[] ListEntries(int start, int entriesPerPage)
        {
            if (start < 0 || start + entriesPerPage > this.entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or numbers per page.");
            }

            this.entries.ToList().Sort();
            PhonebookEntry[] resultEntries = new PhonebookEntry[entriesPerPage];

            for (int i = start; i < start + entriesPerPage; i++)
            {
                PhonebookEntry entry = this.entries[i];
                resultEntries[i - start] = entry;
            }

            return resultEntries;
        }
Пример #28
0
        public PhonebookEntry[] ListEntries(int start, int entriesPerPage)
        {
            if (start < 0 || start + entriesPerPage > this.entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or numbers per page.");
            }

            this.entries.ToList().Sort();
            PhonebookEntry[] resultEntries = new PhonebookEntry[entriesPerPage];

            for (int i = start; i < start + entriesPerPage; i++)
            {
                PhonebookEntry entry = this.entries[i];
                resultEntries[i - start] = entry;
            }

            return(resultEntries);
        }
Пример #29
0
        public IEnumerable <PhonebookEntry> ListEntries(int startEntryPosition, int entriesCount)
        {
            if (startEntryPosition < 0 || startEntryPosition + entriesCount > this.entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or count.");
            }

            this.entries.Sort();

            var phonebookEntry = new PhonebookEntry[entriesCount];

            for (int i = startEntryPosition; i <= startEntryPosition + entriesCount - 1; i++)
            {
                PhonebookEntry entry = this.entries[i];
                phonebookEntry[i - startEntryPosition] = entry;
            }

            return(phonebookEntry);
        }
Пример #30
0
        public IEnumerable<PhonebookEntry> ListEntries(int startEntryPosition, int entriesCount)
        {
            if (startEntryPosition < 0 || startEntryPosition + entriesCount > this.entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or count.");
            }

            this.entries.Sort();

            var phonebookEntry = new PhonebookEntry[entriesCount];

            for (int i = startEntryPosition; i <= startEntryPosition + entriesCount - 1; i++)
            {
                PhonebookEntry entry = this.entries[i];
                phonebookEntry[i - startEntryPosition] = entry;
            }

            return phonebookEntry;
        }
        public async Task <ActionResult> Delete(string id)
        {
            var user = GetCurrentUser();

            if (user != null)
            {
                Guid.TryParse(id, out Guid entryId);
                PhonebookEntry entry = _context.PhonebookEntries.FirstOrDefault(x => x.User.Id == user.Id && x.Id == entryId);
                if (entry != null)
                {
                    _context.Remove(entry);
                    _ = await _context.SaveChangesAsync();

                    return(Ok());
                }
            }

            return(NotFound());
        }
 public void SetIds(PhonebookEntry phonebookEntry)
 {
     try
     {
         var id = Guid.Parse(Id);
         phonebookEntry.SetId(id);
         var bookId = Guid.Parse(PhonebookId);
         phonebookEntry.SetPhonebookId(bookId);
     }
     catch (ArgumentNullException)
     {
         //TO DO: Log exception
         throw;
     }
     catch (FormatException)
     {
         //TO DO: Log exception
         throw;
     }
 }
Пример #33
0
        public void ShoudAddSingleEntryWithMaxNumberOfPhones()
        {
            string[] numbersList =
            {
                "0899 76 15 33",
                "(02) 981 22 33",
                "123",
                "(+1) 123 456 789",
                "0883 / 456-789",
                "0888 88 99 00",
                "888-88-99-00",
                "+359 (888) 41-80-12",
                "00359 (888) 41-80-12",
                "+359527734522"
            };
            var entry = new PhonebookEntry("Kalina", numbersList);

            Assert.AreEqual(numbersList.Count(), entry.PhoneNumbers.Count);
            Assert.AreEqual("Kalina", entry.Name);
        }
Пример #34
0
        public async Task <GenericApiResponse <object> > EditPhonebookEntry(PhonebookEntry entry)
        {
            GenericApiResponse <object> gResponse = new GenericApiResponse <object>();
            object returnObj = null;

            try
            {
                gResponse.Status  = HttpStatusCode.OK;
                gResponse.Message = "Success";

                var parameters = new DynamicParameters();
                parameters.Add("@entry_id", entry.Entry.Id, dbType: DbType.Int32);
                parameters.Add("@first_name", entry.Entry.FirstName, dbType: DbType.String);
                parameters.Add("@last_name", entry.Entry.LastName, dbType: DbType.String);
                parameters.Add("@error_code", null, dbType: DbType.Int32, direction: ParameterDirection.Output);
                parameters.Add("@error_msg", null, dbType: DbType.String, direction: ParameterDirection.Output, size: 200);

                await PhonebookDbConnection.Connection.ExecuteAsync("sp_update_phonebook_entry", parameters, commandType : CommandType.StoredProcedure);

                var errorOccured = Convert.ToBoolean(parameters.Get <dynamic>("@error_code"));
                var errorMsg     = (string)parameters.Get <dynamic>("@error_msg");

                if (!errorOccured)
                {
                    await WriteEntryRecords(entry, (int)entry.Entry.Id);
                }
                else
                {
                    gResponse.Message = "Unable to update entry!";
                }
            }
            catch (Exception ex)
            {
                gResponse.Status  = HttpStatusCode.InternalServerError;
                gResponse.Message = "Failure";
                logger.Information(ex.Message);
            }

            gResponse.Payload = returnObj;
            return(gResponse);
        }
        public bool AddPhone(string name, IEnumerable<string> phoneNumbers)
        {
            var nameLowercase = name.ToLowerInvariant();
            PhonebookEntry entry;
            bool isNewEntry = !this.entriesByName.TryGetValue(nameLowercase, out entry);

            if (isNewEntry)
            {
                entry = new PhonebookEntry(name);
                this.entriesByName.Add(nameLowercase, entry);
                this.sortedEntries.Add(entry);
            }

            foreach (var num in phoneNumbers)
            {
                this.entriesByPhoneNumber.Add(num, entry);
            }

            entry.PhoneNumbers.UnionWith(phoneNumbers);
            return isNewEntry;
        }
        public bool AddPhone(string name, IEnumerable<string> nums)
        {
            string nameToLower = name.ToLowerInvariant();
            PhonebookEntry entry;
            bool isNew = !this.nameEntries.TryGetValue(nameToLower, out entry);
            if (isNew)
            {
                entry = new PhonebookEntry { Name = name, EntryPhoneNumbers = new SortedSet<string>() };
                this.nameEntries.Add(nameToLower, entry);

                this.sortedEntries.Add(entry);
            }

            foreach (var num in nums)
            {
                this.phoneEntries.Add(num, entry);
            }

            entry.EntryPhoneNumbers.UnionWith(nums);
            return isNew;
        }
Пример #37
0
        public bool AddPhone(string name, IEnumerable <string> nums)
        {
            var old = from e in this.entries
                      where e.ContactName.ToLowerInvariant() == name.ToLowerInvariant()
                      select e;

            bool flag;

            if (old.Count() == 0)
            {
                PhonebookEntry obj = new PhonebookEntry();
                obj.ContactName  = name;
                obj.PhoneNumbers = new SortedSet <string>();

                foreach (var num in nums)
                {
                    obj.PhoneNumbers.Add(num);
                }

                this.entries.Add(obj);
                flag = true;
            }
            else if (old.Count() == 1)
            {
                PhonebookEntry obj2 = old.First();
                foreach (var num in nums)
                {
                    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> phoneNumbers)
        {
            var matchedEntry =
                from e in this.entries
                where e.Name.ToLowerInvariant() == name.ToLowerInvariant()
                select e;

            //matchedEntry = this.entries
            //    .Where(entry => string.Equals(entry.Name, name, StringComparison.InvariantCultureIgnoreCase))
            //    .ToList();

            bool isNewEntry;

            if (matchedEntry.Count() == 0)
            {
                PhonebookEntry entry = new PhonebookEntry(name);

                AddPhoneToEntry(phoneNumbers, entry);

                this.entries.Add(entry);
                isNewEntry = true;
            }
            else if (matchedEntry.Count() == 1)
            {
                PhonebookEntry existingEntry = matchedEntry.First();
                var newPhoneNumbers = phoneNumbers
                    .Where(phoneNumber => !existingEntry.PhoneNumbers.Contains(phoneNumber))
                    .ToList();

                AddPhoneToEntry(newPhoneNumbers, existingEntry);

                isNewEntry = false;
            }
            else
            {
                throw new InvalidOperationException("Duplicate name.");
            }

            return isNewEntry;
        }
Пример #39
0
        public bool AddPhone(string name, IEnumerable<string> nums)
        {
            var old = from e in this.entries
                      where e.ContactName.ToLowerInvariant() == name.ToLowerInvariant()
                      select e;

            bool flag;
            if (old.Count() == 0)
            {
                PhonebookEntry obj = new PhonebookEntry();
                obj.ContactName = name;
                obj.PhoneNumbers = new SortedSet<string>();

                foreach (var num in nums)
                {
                    obj.PhoneNumbers.Add(num);
                }

                this.entries.Add(obj);
                flag = true;
            }
            else if (old.Count() == 1)
            {
                PhonebookEntry obj2 = old.First();
                foreach (var num in nums)
                {
                    obj2.PhoneNumbers.Add(num);
                }

                flag = false;
            }
            else
            {
                Console.WriteLine("Duplicated name in the phonebook found: " + name);
                return false;
            }

            return flag;
        }
Пример #40
0
        public void AddEntry(PhonebookEntry newEntry)
        {
            if (newEntry.FirstName != PhonebookEntry.NameDefaultValue)
            {
                this.dictByFirstName.Add(newEntry.FirstName, newEntry);
            }

            if (!(newEntry.MiddleName != PhonebookEntry.NameDefaultValue))
            {
                this.dictByMiddleName.Add(newEntry.MiddleName, newEntry);
            }

            if (newEntry.LastName != PhonebookEntry.NameDefaultValue)
            {
                this.dictByLastName.Add(newEntry.LastName, newEntry);
            }

            if (newEntry.NickName != PhonebookEntry.NameDefaultValue)
            {
                this.dictByNickname.Add(newEntry.NickName, newEntry);
            }
        }
Пример #41
0
        public async Task <GenericApiResponse <object> > CreatePhonebookEntry(PhonebookEntry entry)
        {
            GenericApiResponse <object> gResponse = new GenericApiResponse <object>();
            object returnObj = null;

            try
            {
                gResponse.Status  = HttpStatusCode.OK;
                gResponse.Message = "Success";

                var parameters = new DynamicParameters();
                parameters.Add("@first_name", entry.Entry.FirstName, dbType: DbType.String);
                parameters.Add("@last_name", entry.Entry.LastName, dbType: DbType.String);
                parameters.Add("@ErrorCode", null, dbType: DbType.Int32, direction: ParameterDirection.Output);
                parameters.Add("@ErrorMessage", null, dbType: DbType.String, direction: ParameterDirection.Output, size: 200);

                var entryId = await PhonebookDbConnection.Connection.QueryFirstOrDefaultAsync <int?>("sp_create_phonebook_entry", parameters, commandType : CommandType.StoredProcedure);

                if (entryId != null)
                {
                    await WriteEntryRecords(entry, (int)entryId);

                    returnObj = new { Id = entryId };
                }
                else
                {
                    gResponse.Message = "Unable to create entry!";
                }
            }
            catch (Exception ex)
            {
                gResponse.Status  = HttpStatusCode.InternalServerError;
                gResponse.Message = "Failure";
                logger.Information(ex.Message);
            }

            gResponse.Payload = returnObj;
            return(gResponse);
        }
Пример #42
0
        public bool AddPhone(string name, IEnumerable <string> numbers)
        {
            string lowerName   = name.ToLowerInvariant();
            bool   entryExists = this.dictEntries.ContainsKey(lowerName);

            PhonebookEntry newEntry = new PhonebookEntry();

            if (entryExists)
            {
                newEntry      = new PhonebookEntry();
                newEntry.Name = name;
                this.dictEntries.Add(lowerName, newEntry);
                this.sortedEntries.Add(newEntry);
            }

            foreach (var num in numbers)
            {
                this.multidictEntries.Add(num, newEntry);
            }

            newEntry.PhoneNumbers.UnionWith(numbers);
            return(entryExists);
        }
        public async Task <ActionResult <Object> > Update(PhoneBookEntryDTO data)
        {
            var user = GetCurrentUser();

            if (user != null)
            {
                Guid.TryParse(data.Id, out Guid entryId);
                PhonebookEntry entry = _context.PhonebookEntries.FirstOrDefault(x => x.User.Id == user.Id && x.Id == entryId);
                if (entry != null)
                {
                    entry.FirstName   = data.FirstName;
                    entry.Surname     = data.Surname;
                    entry.PhoneNumber = data.PhoneNumber;
                    entry.Kind        = (Enums.EntryKindEnum)data.Kind;

                    _ = await _context.SaveChangesAsync();

                    return(Ok());
                }
            }

            return(NotFound());
        }
Пример #44
0
        public bool AddPhone(string name, IEnumerable<string> numbers)
        {
            string lowerName = name.ToLowerInvariant();
            bool entryExists = this.dictEntries.ContainsKey(lowerName);

            PhonebookEntry newEntry = new PhonebookEntry();

            if (entryExists)
            {
                newEntry = new PhonebookEntry();
                newEntry.Name = name;
                this.dictEntries.Add(lowerName, newEntry);
                this.sortedEntries.Add(newEntry);
            }

            foreach (var num in numbers)
            {
                this.multidictEntries.Add(num, newEntry);
            }

            newEntry.PhoneNumbers.UnionWith(numbers);
            return entryExists;
        }
        public bool AddPhone(string name, IEnumerable<string> phoneNumbers)
        {
            // Create / find the phonebook entry
            string nameLowercase = name.ToLowerInvariant();
            PhonebookEntry entry;
            bool isNewEntry = !this.entriesByName.TryGetValue(nameLowercase, out entry);
            if (isNewEntry)
            {
                entry = new PhonebookEntry(name);
                this.entriesByName.Add(nameLowercase, entry);
                this.entriesSorted.Add(entry);
            }

            // Add the entry by phone
            foreach (var phoneNumber in phoneNumbers)
            {
                this.entriesByPhone.Add(phoneNumber, entry);
            }

            // Add / merge the phone numbers
            entry.Phones.UnionWith(phoneNumbers);

            return isNewEntry;
        }
Пример #46
0
        /// <summary>Adds new phone to the phonebook.</summary> 
        /// <param name="name">The name of the owner to whom the list of numbers will be associated with.</param>
        /// <param name="phoneNumbers">The list of numbers associated with the owner.</param>
        /// <returns>The method returns true if the name is already in the phonebook and false if not.</returns>
        /// <exception cref="System.NullReferenceException">Throws NullReference exception on name or numbers list being null.</exception>
        /// <remarks>
        /// The name might already exist. In this case the list of numbers is merged with the list in the phonebook leaving
        /// only unique numbers in it. If it doesn't exist a new entry is created and all numbers are added.
        /// </remarks>
        public bool AddPhone(string name, IEnumerable<string> phoneNumbers)
        {
            string nameToLower = name.ToLowerInvariant();
            PhonebookEntry entry;

            bool phoneExists = this.namesDictionary.TryGetValue(nameToLower, out entry);

            if (!phoneExists)
            {
                entry = new PhonebookEntry();
                entry.Name = name;
                entry.PhoneNumbers = new SortedSet<string>();
                this.namesDictionary.Add(nameToLower, entry);
                this.entriesSorted.Add(entry);
            }

            foreach (var number in phoneNumbers)
            {
                this.phonesDictionary.Add(number, entry);
            }

            entry.PhoneNumbers.UnionWith(phoneNumbers);
            return phoneExists;
        }
Пример #47
0
 public void CreateEntry(PhonebookEntry newEntry)
 {
     Book.Add(newEntry.PhoneNumber, newEntry);
 }
Пример #48
0
 public IEnumerable <PhonebookEntry> QueryPhonebook(PhonebookStorage storage, int startIndex, int endIndex)
 {
     CpbsSet(storage);
     return(PhonebookEntry.Parse(GetATCommandResponse(string.Format("AT+CPBR={0},{1}\r", startIndex, endIndex))));
 }
Пример #49
0
        /// <summary>
        /// Lists entries from specified index to specified length.
        /// </summary>
        /// <param name="startIndex"></param> 
        /// <returns>Result filtered entries of PhoneEntry type.</returns>
        /// <remarks></remarks>
        /// <exception cref="System.ArgumentOutOfRangeException">Invalid start index or count.</exception>
        public PhonebookEntry[] ListEntries(int startIndex, int entriesToReturn)
        {
            if (startIndex < 0 || startIndex + entriesToReturn > entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or count.");
            }
            entries.Sort();
            PhonebookEntry[] resultEntries = new PhonebookEntry[entriesToReturn];
            int maximalConter = startIndex + entriesToReturn - 1;
            for (int i = startIndex; i <= maximalConter; i++)
            {
                resultEntries[i - startIndex] = entries[i];
            }

            return resultEntries;
        }
 private static void AddPhoneToEntry(IEnumerable<string> phoneNumbers, PhonebookEntry entry)
 {
     foreach (var phoneNumber in phoneNumbers)
     {
         entry.PhoneNumbers.Add(phoneNumber);
     }
 }
 public void DeleteDBEntry(PhonebookEntry entry)
 {
     this.data.PhonebookEntries.Delete(entry);
     this.data.SaveChanges();
 }
 public void CreateDBEntry(PhonebookEntry entry)
 {
     this.data.PhonebookEntries.Add(entry);
     this.data.SaveChanges();
 }
Пример #53
0
        /// <summary>Lists phonebook entries from the phonebook.</summary> 
        /// <param name="startIndex">The index where the retrieval of numbers will start.</param>
        /// <param name="count">The number of entries to be retrieved.</param>
        /// <returns>Returns an array of sorted entries by name.</returns>
        /// <exception cref="System.ArgumentOutOfRangeException">
        /// System.ArgumentOutOfRangeException is thrown if startIndex is outside of the namesDictionary bounds
        /// or if there aren't so many elements starting from the specified position. 
        /// </exception>
        public PhonebookEntry[] ListEntries(int startIndex, int count)
        {
            if (startIndex < 0 || startIndex + count > this.namesDictionary.Count)
            {
                throw new ArgumentOutOfRangeException("Index was out of phonebook's range.");
            }

            PhonebookEntry[] enrtiesSelected = new PhonebookEntry[count];

            for (int i = startIndex; i <= startIndex + count - 1; i++)
            {
                PhonebookEntry entry = this.entriesSorted[i];
                enrtiesSelected[i - startIndex] = entry;
            }

            return enrtiesSelected;
        }
        public IList<PhonebookEntry> ListEntries(int startIndex, int count)
        {
            if (startIndex < 0 || startIndex + count > this.entries.Count)
            {
                throw new ArgumentOutOfRangeException("Invalid start index or count.");
            }

            //objListOrder.Sort((x, y) => x.OrderDate.CompareTo(y.OrderDate));
            this.entries.Sort((x, y) => x.Name.CompareTo(y.Name));

            var listedEntries = new PhonebookEntry[count];

            for (int i = startIndex; i <= startIndex + count - 1; i++)
            {
                var entry = this.entries[i];
                listedEntries[i - startIndex] = entry;
            }

            return listedEntries;
        }
Пример #55
0
        public static PhonebookEntry Create(Phonebook phonebook)
        {
            var entry = new PhonebookEntry(phonebook);

            return(entry);
        }