/// <summary>
        /// Updates the ECA system's phone number with the given updated phone number.
        /// </summary>
        /// <param name="updatedPhoneNumber">The updated phone number.</param>
        public void Update(UpdatedPhoneNumber updatedPhoneNumber)
        {
            var phoneNumber = Context.PhoneNumbers.Find(updatedPhoneNumber.Id);
            ParticipantPersonSevisDTO participant = null;

            if (phoneNumber != null && phoneNumber.PersonId.HasValue)
            {
                participant = GetParticipantByPersonId((int)phoneNumber.PersonId);
            }
            List <PhoneNumber> existingPhoneNumbers = new List <PhoneNumber>();

            if (phoneNumber != null && updatedPhoneNumber.IsPrimary)
            {
                existingPhoneNumbers = CreateGetOtherPhoneNumbersQuery(phoneNumber).ToList();
            }
            DoUpdate(updatedPhoneNumber, phoneNumber, existingPhoneNumbers, participant);
        }
        /// <summary>
        /// Updates the ECA system's phone number data with the given updated phone number.
        /// </summary>
        /// <param name="updatedPhoneNumber">The updated phone number.</param>
        public async Task UpdateAsync(UpdatedPhoneNumber updatedPhoneNumber)
        {
            var phoneNumber = await Context.PhoneNumbers.FindAsync(updatedPhoneNumber.Id);

            ParticipantPersonSevisDTO participant = null;

            if (phoneNumber != null && phoneNumber.PersonId.HasValue)
            {
                participant = await GetParticipantByPersonIdAsync((int)phoneNumber.PersonId);
            }
            List <PhoneNumber> existingPhoneNumbers = new List <PhoneNumber>();

            if (phoneNumber != null && updatedPhoneNumber.IsPrimary)
            {
                existingPhoneNumbers = await CreateGetOtherPhoneNumbersQuery(phoneNumber).ToListAsync();
            }
            DoUpdate(updatedPhoneNumber, phoneNumber, existingPhoneNumbers, participant);
        }
 private void DoUpdate(UpdatedPhoneNumber updatedPhoneNumber, PhoneNumber modelToUpdate,
                       List <PhoneNumber> existingPhoneNumbers, ParticipantPersonSevisDTO participant)
 {
     Contract.Requires(updatedPhoneNumber != null, "The updatedPhoneNumber must not be null.");
     throwIfPhoneNumberNotFound(modelToUpdate, updatedPhoneNumber.Id);
     if (participant != null)
     {
         throwValidationErrorIfParticipantSevisInfoIsLocked(participant);
     }
     modelToUpdate.PhoneNumberTypeId = updatedPhoneNumber.PhoneNumberTypeId;
     modelToUpdate.Number            = updatedPhoneNumber.Number;
     modelToUpdate.Extension         = updatedPhoneNumber.Extension;
     modelToUpdate.IsPrimary         = updatedPhoneNumber.IsPrimary;
     updatedPhoneNumber.Audit.SetHistory(modelToUpdate);
     if (updatedPhoneNumber.IsPrimary)
     {
         existingPhoneNumbers.ForEach(x => x.IsPrimary = false);
     }
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="updatedPhoneNumber"></param>
 /// <returns></returns>
 public Task UpdateAsync(UpdatedPhoneNumber updatedPhoneNumber)
 {
     Contract.Requires(updatedPhoneNumber != null, "The updated phone number must not be null.");
     return(Task.FromResult <object>(null));
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="updatedPhoneNumber"></param>
 public void Update(UpdatedPhoneNumber updatedPhoneNumber)
 {
     Contract.Requires(updatedPhoneNumber != null, "The updated phone number must not be null.");
 }