Exemplo n.º 1
0
        /// <summary>
        /// Get local phone number assigned to the applcation by name (or reserve it if need)
        /// </summary>
        /// <param name="phoneNumber">IPhoneNumber instance</param>
        /// <param name="availableNumber">IAvailableNumber instance</param>
        /// <param name="applicationId">Application Id</param>
        /// <param name="query">Optioons to allocate number</param>
        /// <param name="name">Name of allocated phone number</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>Phone number</returns>
        public static async Task <string> GetOrCreateLocalAsync(this IPhoneNumber phoneNumber, IAvailableNumber availableNumber, string applicationId, LocalNumberQueryForOrder query = null, string name = null, CancellationToken?cancellationToken = null)
        {
            var existingNumber = phoneNumber.GetByName(applicationId, name);

            if (existingNumber != null)
            {
                return(existingNumber.Number);
            }
            return(await phoneNumber.CreateLocalAsync(availableNumber, applicationId, query, name, cancellationToken));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Allocate local phone number and assign it to the application
        /// </summary>
        /// <param name="phoneNumber">IPhoneNumber instance</param>
        /// <param name="availableNumber">IAvailableNumber instance</param>
        /// <param name="applicationId">Application Id</param>
        /// <param name="query">Optioons to allocate number</param>
        /// <param name="name">Name of allocated phone number</param>
        /// <param name="cancellationToken">Cancellation token</param>
        /// <returns>Created phone number</returns>
        public static async Task <string> CreateLocalAsync(this IPhoneNumber phoneNumber, IAvailableNumber availableNumber, string applicationId, LocalNumberQueryForOrder query = null, string name = null, CancellationToken?cancellationToken = null)
        {
            query          = query ?? new LocalNumberQueryForOrder();
            query.Quantity = 1;
            var result = (await availableNumber.SearchAndOrderLocalAsync(query, cancellationToken)).First();
            await phoneNumber.UpdateAsync(result.Id, new UpdatePhoneNumberData
            {
                ApplicationId = applicationId,
                Name          = name
            }, cancellationToken);

            return(result.Number);
        }
Exemplo n.º 3
0
 public Task <OrderedNumber[]> SearchAndOrderLocalAsync(LocalNumberQueryForOrder query, CancellationToken?cancellationToken = default(CancellationToken?))
 {
     return(_context.Invoke(f => f.SearchAndOrderLocalAsync(query, cancellationToken)));
 }