private void Add()
{
try
{
SIPProvider sipProvider = null;
ProviderTypes providerType = (m_providerTypeSIPRadio.IsChecked != null && m_providerTypeSIPRadio.IsChecked.Value) ? ProviderTypes.SIP : ProviderTypes.GoogleVoice;
string providerName = m_providerName.Text.Trim();
string providerUsername = m_providerUsername.Text.Trim();
string providerPassword = m_providerPassword.Text.Trim();
if (providerType == ProviderTypes.SIP)
{
SIPURI providerServer = (!m_providerServer.Text.IsNullOrBlank()) ? SIPURI.ParseSIPURIRelaxed(m_providerServer.Text.Trim()) : null;
bool registerEnabled = m_providerRegister.IsChecked.Value;
bool sendMWISubscribe = m_providerSendMWISubscribe.IsChecked.Value;
SIPURI registerContact = (!m_providerRegisterContact.Text.IsNullOrBlank()) ? SIPURI.ParseSIPURIRelaxed(m_providerRegisterContact.Text.Trim()) : null;
string authUsername = m_providerAuthUsername.Text.Trim();
string providerFrom = m_providerFromHeader.Text.Trim();
string registerRealm = m_providerRegisterRealm.Text.Trim();
SIPURI registerServer = (!m_providerRegisterServer.Text.IsNullOrBlank()) ? SIPURI.ParseSIPURIRelaxed(m_providerRegisterServer.Text.Trim()) : null;
int registerExpiry = m_defaultRegisterExpiry;
Int32.TryParse(m_providerRegisterExpiry.Text, out registerExpiry);
string customHeaders = null;
if (m_providerCustomHeaders.Items.Count > 0)
{
foreach (string customHeader in m_providerCustomHeaders.Items)
{
customHeaders += (m_sipProvider.CustomHeaders != null && m_sipProvider.CustomHeaders.Trim().Length > 0) ? m_customHeadersSeparator.ToString() : null;
customHeaders += customHeader;
}
}
sipProvider = new SIPProvider()
{
ID = Guid.NewGuid().ToString(),
ProviderType = ProviderTypes.SIP.ToString(),
Owner = m_owner,
ProviderName = providerName,
ProviderUsername = providerUsername,
ProviderPassword = providerPassword,
ProviderServer = (providerServer != null) ? providerServer.ToString() : null,
ProviderFrom = providerFrom,
CustomHeaders = customHeaders,
RegisterContact = (registerContact != null) ? registerContact.ToString() : null,
RegisterExpiry = registerExpiry,
RegisterServer = (registerServer != null) ? registerServer.ToString() : null,
ProviderAuthUsername = authUsername,
RegisterRealm = registerRealm,
RegisterEnabled = registerEnabled,
SendMWISubscribe = sendMWISubscribe,
RegisterAdminEnabled = true,
Inserted = DateTime.Now.ToString("o"),
LastUpdate = DateTime.Now.ToString("o")
};
}
else
{
//string gvCallbackNumber = m_gvCallbackNumber.Text;
//string gvCallbackPattern = m_gvCallbackNumber.Text;
//GoogleVoiceCallbackTypes callbackType = (GoogleVoiceCallbackTypes)Enum.Parse(typeof(GoogleVoiceCallbackTypes), ((TextBlock)m_gvCallbackType.SelectedValue).Text, true);
//sipProvider = new SIPProvider(ProviderTypes.GoogleVoice, m_owner, providerName, providerUsername, providerPassword, null, null, null, null,
// null, 0, null, null, null, false, true, gvCallbackNumber, gvCallbackPattern, callbackType);
sipProvider = new SIPProvider()
{
ID = Guid.NewGuid().ToString(),
ProviderType = ProviderTypes.GoogleVoice.ToString(),
Owner = m_owner,
ProviderName = providerName,
ProviderUsername = providerUsername,
ProviderPassword = providerPassword,
GVCallbackNumber = m_gvCallbackNumber.Text,
GVCallbackPattern = m_gvCallbackPattern.Text,
GVCallbackType = ((TextBlock)m_gvCallbackType.SelectedValue).Text,
Inserted = DateTime.Now.ToString("o"),
LastUpdate = DateTime.Now.ToString("o")
};
}
if (sipProvider.HasValidationErrors)
{
WriteStatusMessage(MessageLevelsEnum.Warn, sipProvider.ValidationErrors.First().ErrorMessage);
}
else
{
WriteStatusMessage(MessageLevelsEnum.Info, "Adding SIP Provider please wait...");
SIPProviderAdd_External(sipProvider);
}
}
catch (Exception excp)
{
WriteStatusMessage(MessageLevelsEnum.Error, "Add SIPProvider Exception. " + excp.Message);
}
}