📄 permissionmanager.cs
字号:
writer.WriteEndElement();
});
req.Message.Body = tw.ToString();
ErrorHelper.HandleSendRequestErrorAndTimeout(req);
req.FinalResponseReceived += new EventHandler<SipResponseReceivedEventArgs>(this, (IntPtr) this.SetUserGlobalPermission_FinalResponseReceived);
this._owner.SendSipMessage(req);
}
return true;
}
internal void CalcContactFinalPointValue(Imps.Client.Core.Contact contact, PermissionPointValue ppv)
{
if ((ppv.Value != null) && (ppv.Value >= 0))
{
ppv.FinalValue = ppv.Value.OriginalValue;
}
else if (ppv.PermissionPoint.IsGlobal)
{
bool flag = (contact.Type == ContactType.Buddy) || (contact.Type == ContactType.MobileBuddy);
int originalValue = this.UserGlobalPermission[ppv.PermissionPoint.PointName].Value.OriginalValue;
if (ppv.PermissionPoint.PointName == PermissionPointName.Contact)
{
if ((originalValue == 1) || flag)
{
ppv.FinalValue = 1;
}
else
{
ppv.FinalValue = 2;
}
}
else if (ppv.PermissionPoint.PointName == PermissionPointName.Ivr)
{
switch (((PermissionValue_Ivr) originalValue))
{
case PermissionValue_Ivr.Reject:
ppv.FinalValue = 0;
return;
case PermissionValue_Ivr.Allow:
ppv.FinalValue = 1;
return;
case PermissionValue_Ivr.BuddyAllow_ElseApply:
ppv.FinalValue = flag ? 1 : 4;
return;
case PermissionValue_Ivr.BuddyAllow_ElseReject:
ppv.FinalValue = flag ? 1 : 0;
return;
case PermissionValue_Ivr.Apply:
ppv.FinalValue = 4;
return;
case PermissionValue_Ivr.BuddyApply_ElseReject:
ppv.FinalValue = flag ? 4 : 0;
return;
}
}
else
{
ppv.FinalValue = originalValue;
}
}
else
{
ppv.FinalValue = ppv.PermissionPoint.DefaultValue;
}
}
internal void Clear()
{
this.PermissionVersion = string.Empty;
this._globalPermission = null;
}
public bool CommitChanges(AsyncBizOperation op)
{
this.AsyncSetUserGlobalPermission(op);
return true;
}
private void getAllContactsPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
{
SipResponse sipMsg = e.Response;
AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
if (sipMsg.IsOK)
{
XmlDocument document = new XmlDocument();
document.LoadXml(sipMsg.Message.Body.Trim());
XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
if (node == null)
{
LogHelper.LogReceivedSipMessage(sipMsg);
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
}
else
{
this.InnerLoadXmlNode(node);
this.SaveLocalStorage();
if (op != null)
{
op.FireSuccessedInUiThread(EventArgs.Empty);
}
Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
}
}
else
{
LogHelper.LogReceivedSipMessage(sipMsg);
switch (sipMsg.Message.StatusCode)
{
case 400:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_400), op);
return;
case 0x194:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
return;
case 500:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
return;
}
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
}
}
private void getContactsPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
{
SipResponse sipMsg = e.Response;
AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
if (!sipMsg.IsOK)
{
LogHelper.LogReceivedSipMessage(sipMsg);
switch (sipMsg.Message.StatusCode)
{
case 400:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_400), op);
return;
case 0x194:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_404), op);
return;
case 500:
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed_500), op);
return;
}
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
}
else
{
XmlDocument document = new XmlDocument();
document.LoadXml(sipMsg.Message.Body.Trim());
XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
if (node == null)
{
LogHelper.LogReceivedSipMessage(sipMsg);
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetContactPermissionFailed), op);
}
else
{
this.InnerLoadXmlNode(node);
this.SaveLocalStorage();
}
}
}
public ContactPermissionDict GetDefaultContactPermission(Imps.Client.Core.Contact contact)
{
ContactPermissionDict dict = new ContactPermissionDict(contact);
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Birthday));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Business));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Contact));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Email));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Identity));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Ivr));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Location));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Phone));
dict.Add(this.InnerGetDefaultPointValue(contact, PermissionPointName.Presence));
dict.Sort();
return dict;
}
private void getUserGlobalPermission_FinalResponseReceived(object sender, SipResponseReceivedEventArgs e)
{
SipResponse sipMsg = e.Response;
AsyncBizOperation op = (AsyncBizOperation) sipMsg.Request.Context;
try
{
if (sipMsg.IsOK)
{
string xml = sipMsg.Message.Body;
if (xml.Length <= 0)
{
if (op != null)
{
op.FireSuccessedInUiThread(EventArgs.Empty);
}
Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
}
else
{
XmlDocument document = new XmlDocument();
document.LoadXml(xml);
XmlNode node = document.DocumentElement.SelectSingleNode("permissions");
if (node == null)
{
LogHelper.LogReceivedSipMessage(sipMsg);
this._owner.FireImpsErrorInUiThread(new ImpsErrorEventArgs(StringTable.Permission.Msg_GetGlobalPermissionFailed), op);
}
else
{
this.InnerLoadXmlNode(node);
this.SaveLocalStorage();
if (op != null)
{
op.FireSuccessedInUiThread(EventArgs.Empty);
}
Imps.Client.Core.User.TryCallReceiveMessageOnOp(op);
}
}
}
else
{
ErrorHelper.HandleReceivedErrorResponse(sipMsg);
}
}
catch (Exception exception)
{
ErrorHelper.HandleException(exception);
}
}
private PermissionPointValue InnerGetDefaultPointValue(Imps.Client.Core.Contact contact, PermissionPointName name)
{
PermissionPoint point = this.FixedPermissionSetting[name];
PermissionPointValue ppv = new PermissionPointValue(point);
this.CalcContactFinalPointValue(contact, ppv);
return ppv;
}
internal void InnerLoadXmlNode(XmlNode node)
{
if (node != null)
{
lock (this)
{
XmlAttribute attribute = node.Attributes["version"];
if (attribute != null)
{
this.PermissionVersion = attribute.Value;
}
string values = XmlHelper.ReadXmlAttributeString(node, "values");
this.UserGlobalPermission.UpdateValues(values, this);
XmlNodeList list = node.SelectNodes("permission");
if ((list != null) || (list.Count == 0))
{
foreach (XmlNode node2 in list)
{
string text2 = XmlHelper.ReadXmlAttributeString(node2, "uri");
if (text2.Length != 0)
{
Imps.Client.Core.Contact contact = this._owner.ContactList.Contacts[text2];
if (contact != null)
{
string text3 = XmlHelper.ReadXmlAttributeString(node2, "values");
if (string.IsNullOrEmpty(text3))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -