public SettingsOOF(bool initMessage) { if (initMessage) { Message = new OOFMessage[3]; } }
protected override void ParseResponseBody(ActiveSync.RequestBase request, ZPushConnection.Response response) { // Check capabilities if (response.Capabilities == null) { SupportsTimes = null; } else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE_TIMES)) { SupportsTimes = true; } else if (response.Capabilities.Has(Constants.ZPUSH_CAPABILITY_OUT_OF_OFFICE)) { SupportsTimes = false; } else { SupportsTimes = null; } // Parse contents XPathNavigator nav = response.Body.CreateNavigator().SelectSingleNode("/Settings/Oof/Get"); State = (OOFState)nav.SelectSingleNode("OofState").ValueAsInt; From = nav.SelectSingleNode("StartTime")?.ValueAsDateTime.ToLocalTime(); Till = nav.SelectSingleNode("EndTime")?.ValueAsDateTime.ToLocalTime(); // Messages Message = new OOFMessage[3]; foreach (XPathNavigator node in nav.Select("OofMessage")) { // Target OOFTarget target; if (node.SelectSingleNode("AppliesToInternal") != null) { target = OOFTarget.Internal; } else if (node.SelectSingleNode("AppliesToExternalKnown") != null) { target = OOFTarget.ExternalKnown; } else if (node.SelectSingleNode("AppliesToExternalUnknown") != null) { target = OOFTarget.ExternalUnknown; } else { Logger.Instance.Warning(this, "Unknown OOF message: {0}", node.OuterXml); continue; } // Message OOFMessage oof = new OOFMessage(); oof.Message = node.SelectSingleNode("ReplyMessage")?.Value; // Create the object Message[(int)target] = oof; } }