/// <summary> Gets users general settings.</summary> /// <param name="organizationId"> The organization identifier.</param> /// <param name="userUpn"> The user UPN.</param> /// <returns> User settings.</returns> internal override SfBUser GetSfBUserGeneralSettingsInternal(string organizationId, string userUpn) { HostedSolutionLog.LogStart("GetSfBUserGeneralSettingsInternal"); HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId); HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn); var sfbUser = new SfBUser(); Runspace runspace = null; try { runspace = OpenRunspace(); var command = new Command("Get-CsUser"); command.Parameters.Add("Identity", userUpn); Collection <PSObject> result = ExecuteShellCommand(runspace, command, false); PSObject user = result[0]; sfbUser.DisplayName = (string)GetPSObjectProperty(user, "DisplayName"); sfbUser.SipAddress = (string)GetPSObjectProperty(user, "SipAddress"); sfbUser.LineUri = (string)GetPSObjectProperty(user, "LineURI"); sfbUser.SipAddress = sfbUser.SipAddress.ToLower().Replace("sip:", ""); sfbUser.LineUri = sfbUser.LineUri.ToLower().Replace("tel:+", ""); sfbUser.LineUri = sfbUser.LineUri.ToLower().Replace("tel:", ""); } catch (Exception ex) { HostedSolutionLog.LogError("GetSfBUserGeneralSettingsInternal", ex); throw; } finally { CloseRunspace(runspace); } HostedSolutionLog.LogEnd("GetSfBUserGeneralSettingsInternal"); return(sfbUser); }
/// <summary> Sets users general settings.</summary> /// <param name="organizationId"> The organization identifier.</param> /// <param name="userUpn"> The user UPN.</param> /// <param name="sfbUser"> The sfb user settings.</param> /// <returns> The result.</returns> internal override bool SetSfBUserGeneralSettingsInternal(string organizationId, string userUpn, SfBUser sfbUser) { HostedSolutionLog.LogStart("SetSfBUserGeneralSettingsInternal"); HostedSolutionLog.DebugInfo("organizationId: {0}", organizationId); HostedSolutionLog.DebugInfo("userUpn: {0}", userUpn); bool ret = true; Runspace runspace = null; SfBTransaction transaction = StartTransaction(); try { runspace = OpenRunspace(); Guid tenantId = GetObjectGuid(organizationId, runspace); string[] tmp = userUpn.Split('@'); if (tmp.Length < 2) { return(false); } var command = new Command("Get-CsSipDomain"); Collection <PSObject> sipDomains = ExecuteShellCommand(runspace, command, false); bool bSipDomainExists = sipDomains.Select(domain => (string)GetPSObjectProperty(domain, "Name")).Any(d => d.ToLower() == tmp[1].ToLower()); if (!bSipDomainExists) { command = new Command("New-CsSipDomain"); command.Parameters.Add("Identity", tmp[1].ToLower()); ExecuteShellCommand(runspace, command, false); transaction.RegisterNewSipDomain(tmp[1].ToLower()); string path = AddADPrefix(GetOrganizationPath(organizationId)); DirectoryEntry ou = ActiveDirectoryUtils.GetADObject(path); string[] sipDs = ActiveDirectoryUtils.GetADObjectPropertyMultiValue(ou, "Url"); var listSipDs = new List <string>(); listSipDs.AddRange(sipDs); listSipDs.Add(tmp[1]); ActiveDirectoryUtils.SetADObjectPropertyValue(ou, "Url", listSipDs.ToArray()); ou.CommitChanges(); CreateSimpleUrl(runspace, tenantId); transaction.RegisterNewSimpleUrl(tmp[1].ToLower(), tenantId.ToString()); path = AddADPrefix(GetResultObjectDN(organizationId, runspace)); DirectoryEntry user = ActiveDirectoryUtils.GetADObject(path); if (tmp.Length > 0) { string Url = SimpleUrlRoot + tmp[1]; ActiveDirectoryUtils.SetADObjectPropertyValue(user, "msRTCSIP-BaseSimpleUrl", Url.ToLower()); } user.CommitChanges(); } command = new Command("Set-CsUser"); command.Parameters.Add("Identity", userUpn); if (!string.IsNullOrEmpty(sfbUser.SipAddress)) { command.Parameters.Add("SipAddress", "SIP:" + sfbUser.SipAddress); } if (!string.IsNullOrEmpty(sfbUser.LineUri)) { command.Parameters.Add("LineUri", "TEL:+" + sfbUser.LineUri); } else { command.Parameters.Add("LineUri", null); } ExecuteShellCommand(runspace, command, false); if (!String.IsNullOrEmpty(sfbUser.PIN)) { command = new Command("Set-CsClientPin"); command.Parameters.Add("Identity", userUpn); command.Parameters.Add("Pin", sfbUser.PIN); ExecuteShellCommand(runspace, command, false); } command = new Command("Update-CsAddressBook"); ExecuteShellCommand(runspace, command, false); command = new Command("Update-CsUserDatabase"); ExecuteShellCommand(runspace, command, false); } catch (Exception ex) { ret = false; HostedSolutionLog.LogError("SetSfBUserGeneralSettingsInternal", ex); RollbackTransaction(transaction); } finally { CloseRunspace(runspace); } HostedSolutionLog.LogEnd("SetSfBUserGeneralSettingsInternal"); return(ret); }
internal virtual bool SetSfBUserGeneralSettingsInternal(string organizationId, string userUpn, SfBUser sfbUser) { throw new NotImplementedException(); }
public virtual bool SetSfBUserGeneralSettings(string organizationId, string userUpn, SfBUser sfbUser) { return(SetSfBUserGeneralSettingsInternal(organizationId, userUpn, sfbUser)); }