private List<ASObject> getMultipleList(ASObject policy) { if (policy == null) return null; List<ASObject> multipleList = null; object managers = policy.get("managers"); if (managers != null && managers is object[]) { multipleList = new List<ASObject>(); foreach (object o in (object[])managers) { if (o is ASObject) { multipleList.Add((ASObject)o); } } } else if (managers != null && managers is List<ASObject>) { multipleList = new List<ASObject>(); foreach (ASObject o in (List<ASObject>)managers) { multipleList.Add(o); } } return multipleList; }
void OnMailEvent(MailWorker.Event eventType, ASObject mail, string[] updateFields) { switch (eventType) { case MailWorker.Event.Delete: return; case MailWorker.Event.Create: { if (mail == null) return; MailWorker.instance.saveMailRecord(mail); string folder = mail.getString("folder"); XElement folderXml = sxml.XPathSelectElement("/mailbox/folder[@name='" + folder + "']"); string count = folderXml.AttributeValue("count"); if (IsBool(mail.get("is_seen"))) { if (count == "(1)" || count == "") folderXml.SetAttributeValue("count", ""); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) - 1) + ")"); } } else { if (count == "") folderXml.SetAttributeValue("count", "(1)"); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) + 1) + ")"); } } if (mail["mail_date"] is DateTime && !IsBool(mail.get("is_handled"))) { DateTime time = (DateTime)mail["mail_date"]; string value = unhandledMailProvider.JudgeTimePhase(time); folderXml = sxml.XPathSelectElement("/folder/folder[@value='" + value + "']"); if (folderXml != null) { count = folderXml.AttributeValue("count"); if (count == "") folderXml.SetAttributeValue("count", "(1)"); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) + 1) + ")"); } } } } break; case MailWorker.Event.Update: { if (mail == null || updateFields == null || updateFields.Length == 0) return; MailWorker.instance.updateMail(mail, updateFields); bool is_seen = false; bool is_handled = false; foreach (string s in updateFields) { if (s == "is_seen") is_seen = true; else if (s == "is_handled") is_handled = true; } if (is_seen) { string folder = mail.getString("folder"); XElement folderXml = sxml.XPathSelectElement("/mailbox/folder[@name='" + folder + "']"); string count = folderXml.AttributeValue("count"); if (IsBool(mail.get("is_seen"))) { if (count == "(1)" || count == "") folderXml.SetAttributeValue("count", ""); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) - 1) + ")"); } } else { if (count == "") folderXml.SetAttributeValue("count", "(1)"); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) + 1) + ")"); } } } if (is_handled) { DateTime time = (DateTime)mail["mail_date"]; string value = unhandledMailProvider.JudgeTimePhase(time); XElement folderXml = sxml.XPathSelectElement("/folder/folder[@value='" + value + "']"); string count = folderXml.AttributeValue("count"); if (IsBool(mail.get("is_handled"))) { if (count == "(1)" || count == "") folderXml.SetAttributeValue("count", ""); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) - 1) + ")"); } } else { if (count == "") folderXml.SetAttributeValue("count", "(1)"); else { count = count.Replace("(", "").Replace(")", ""); folderXml.SetAttributeValue("count", "(" + (NumberUtil.toLong(count) + 1) + ")"); } } } } break; case MailWorker.Event.Reset: this.Reset(); break; case MailWorker.Event.MoveFolder: { Map<string, long> countMap = unhandledMailProvider.FetchUnhandledMailCount(); IEnumerable<XElement> folders = sxml.XPathSelectElements("/folder/folder"); foreach (XElement folderXml in folders) { string value = folderXml.AttributeValue("value"); if (countMap.ContainsKey(value)) folderXml.SetAttributeValue("count", "(" + countMap[value] + ")"); else folderXml.SetAttributeValue("count", ""); } } break; case MailWorker.Event.ClearSearch: { XElement folderXml = tree.SelectedItem as XElement; if (folderXml == null) return; this.Dispatcher.BeginInvoke((Action)delegate { FolderChangedEvent(folderXml); }, System.Windows.Threading.DispatcherPriority.ApplicationIdle); } break; } if (mail == null) return; if ("DSBOX" == mail.getString("folder") || "OUTBOX" == mail.getString("folder")) { XElement dsboxXml = sxml.XPathSelectElement("/mailbox/folder[@name='DSBOX']"); string dsboxCount = FetchDsBoxMailCount(); if (dsboxCount != "0,0") dsboxXml.SetAttributeValue("count", "(" + dsboxCount + ")"); else dsboxXml.SetAttributeValue("count", ""); } }
private List<ASObject> getMultipleList(ASObject policy) { List<ASObject> multipleList = null; object distributors = policy.get("distributor"); if (distributors != null && distributors is object[]) { multipleList = new List<ASObject>(); foreach (object o in (object[])distributors) { if (o is ASObject) { multipleList.Add((ASObject)o); } } } else if (distributors != null && distributors is List<ASObject>) { multipleList = new List<ASObject>(); foreach (ASObject o in (List<ASObject>)distributors) { multipleList.Add(o); } } return multipleList; }