@jaricardodev/ews-javascript-api
Version:
EWS Managed api in JavaScript
826 lines (753 loc) • 29.2 kB
text/typescript
import {Convert, hasValue} from "../ExtensionMethods";
import {EmailAddressCollection} from "./EmailAddressCollection";
import {EwsServiceXmlWriter} from "../Core/EwsServiceXmlWriter";
import {EwsUtilities} from "../Core/EwsUtilities";
import {ExchangeService} from "../Core/ExchangeService";
import {FlaggedForAction} from "../Enumerations/FlaggedForAction";
import {Importance} from "../Enumerations/Importance";
import {RulePredicateDateRange} from "./RulePredicateDateRange";
import {RulePredicateSizeRange} from "./RulePredicateSizeRange";
import {Sensitivity} from "../Enumerations/Sensitivity";
import {StringList} from "./StringList";
import {XmlElementNames} from "../Core/XmlElementNames";
import {XmlNamespace} from "../Enumerations/XmlNamespace";
import {ComplexProperty} from "./ComplexProperty";
/**
* Represents the set of conditions and exceptions available for a rule.
*
* @sealed
*/
export class RulePredicates extends ComplexProperty {
/**
* The HasCategories predicate.
*/
private categories: StringList = null;
/**
* The ContainsBodyStrings predicate.
*/
private containsBodyStrings: StringList = null;
/**
* The ContainsHeaderStrings predicate.
*/
private containsHeaderStrings: StringList = null;
/**
* The ContainsRecipientStrings predicate.
*/
private containsRecipientStrings: StringList = null;
/**
* The ContainsSenderStrings predicate.
*/
private containsSenderStrings: StringList = null;
/**
* The ContainsSubjectOrBodyStrings predicate.
*/
private containsSubjectOrBodyStrings: StringList = null;
/**
* The ContainsSubjectStrings predicate.
*/
private containsSubjectStrings: StringList = null;
/**
* The FlaggedForAction predicate.
*/
private flaggedForAction: FlaggedForAction = null; //Nullable
/**
* The FromAddresses predicate.
*/
private fromAddresses: EmailAddressCollection = null;
/**
* The FromConnectedAccounts predicate.
*/
private fromConnectedAccounts: StringList = null;
/**
* The HasAttachments predicate.
*/
private hasAttachments: boolean = false;
/**
* The Importance predicate.
*/
private importance: Importance = null; //Nullable
/**
* The IsApprovalRequest predicate.
*/
private isApprovalRequest: boolean = false;
/**
* The IsAutomaticForward predicate.
*/
private isAutomaticForward: boolean = false;
/**
* The IsAutomaticReply predicate.
*/
private isAutomaticReply: boolean = false;
/**
* The IsEncrypted predicate.
*/
private isEncrypted: boolean = false;
/**
* The IsMeetingRequest predicate.
*/
private isMeetingRequest: boolean = false;
/**
* The IsMeetingResponse predicate.
*/
private isMeetingResponse: boolean = false;
/**
* The IsNDR predicate.
*/
private isNonDeliveryReport: boolean = false;
/**
* The IsPermissionControlled predicate.
*/
private isPermissionControlled: boolean = false;
/**
* The IsSigned predicate.
*/
private isSigned: boolean = false;
/**
* The IsVoicemail predicate.
*/
private isVoicemail: boolean = false;
/**
* The IsReadReceipt predicate.
*/
private isReadReceipt: boolean = false;
/**
* The ItemClasses predicate.
*/
private itemClasses: StringList = null;
/**
* The MessageClassifications predicate.
*/
private messageClassifications: StringList = null;
/**
* The NotSentToMe predicate.
*/
private notSentToMe: boolean = false;
/**
* The SentCcMe predicate.
*/
private sentCcMe: boolean = false;
/**
* The SentOnlyToMe predicate.
*/
private sentOnlyToMe: boolean = false;
/**
* The SentToAddresses predicate.
*/
private sentToAddresses: EmailAddressCollection = null;
/**
* The SentToMe predicate.
*/
private sentToMe: boolean = false;
/**
* The SentToOrCcMe predicate.
*/
private sentToOrCcMe: boolean = false;
/**
* The Sensitivity predicate.
*/
private sensitivity: Sensitivity = null; //Nullable
/**
* The WithinDateRange predicate.
*/
private withinDateRange: RulePredicateDateRange = null;
/**
* The WithinSizeRange predicate.
*/
private withinSizeRange: RulePredicateSizeRange = null;
/**
* Gets the categories that an incoming message should be stamped with for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get Categories(): StringList {
return this.categories;
}
/**
* Gets the strings that should appear in the body of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsBodyStrings(): StringList {
return this.containsBodyStrings;
}
/**
* Gets the strings that should appear in the headers of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsHeaderStrings(): StringList {
return this.containsHeaderStrings;
}
/**
* Gets the strings that should appear in either the To or Cc fields of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsRecipientStrings(): StringList {
return this.containsRecipientStrings;
}
/**
* Gets the strings that should appear in the From field of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsSenderStrings(): StringList {
return this.containsSenderStrings;
}
/**
* Gets the strings that should appear in either the body or the subject of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsSubjectOrBodyStrings(): StringList {
return this.containsSubjectOrBodyStrings;
}
/**
* Gets the strings that should appear in the subject of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ContainsSubjectStrings(): StringList {
return this.containsSubjectStrings;
}
/**
* @Nullable Gets or sets the flag for action value that should appear on incoming messages for the condition or execption to apply.
* To disable this predicate, set it to null.
*/
get FlaggedForAction(): FlaggedForAction {
return this.flaggedForAction;
}
set FlaggedForAction(value: FlaggedForAction) {
this.SetFieldValue<FlaggedForAction>({ getValue: () => this.flaggedForAction, setValue: (updateValue) => { this.flaggedForAction = updateValue } }, value);
}
/**
* Gets the e-mail addresses of the senders of incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get FromAddresses(): EmailAddressCollection {
return this.fromAddresses;
}
/**
* Gets or sets a value indicating whether incoming messages must have attachments for the condition or exception to apply.
*/
get HasAttachments(): boolean {
return this.hasAttachments;
}
set HasAttachments(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.hasAttachments, setValue: (updateValue) => { this.hasAttachments = updateValue } }, value);
}
/**
* @Nullable Gets or sets the importance that should be stamped on incoming messages for the condition or exception to apply.
* To disable this predicate, set it to null.
*/
get Importance(): Importance {
return this.importance;
}
set Importance(value: Importance) {
this.SetFieldValue<Importance>({ getValue: () => this.importance, setValue: (updateValue) => { this.importance = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be approval requests for the condition or exception to apply.
*/
get IsApprovalRequest(): boolean {
return this.isApprovalRequest;
}
set IsApprovalRequest(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isApprovalRequest, setValue: (updateValue) => { this.isApprovalRequest = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be automatic forwards for the condition or exception to apply.
*/
get IsAutomaticForward(): boolean {
return this.isAutomaticForward;
}
set IsAutomaticForward(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isAutomaticForward, setValue: (updateValue) => { this.isAutomaticForward = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be automatic replies for the condition or exception to apply.
*/
get IsAutomaticReply(): boolean {
return this.isAutomaticReply;
}
set IsAutomaticReply(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isAutomaticReply, setValue: (updateValue) => { this.isAutomaticReply = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be S/MIME encrypted for the condition or exception to apply.
*/
get IsEncrypted(): boolean {
return this.isEncrypted;
}
set IsEncrypted(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isEncrypted, setValue: (updateValue) => { this.isEncrypted = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be meeting requests for the condition or exception to apply.
*/
get IsMeetingRequest(): boolean {
return this.isMeetingRequest;
}
set IsMeetingRequest(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isMeetingRequest, setValue: (updateValue) => { this.isMeetingRequest = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be meeting responses for the condition or exception to apply.
*/
get IsMeetingResponse(): boolean {
return this.isMeetingResponse;
}
set IsMeetingResponse(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isMeetingResponse, setValue: (updateValue) => { this.isMeetingResponse = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be non-delivery reports (NDR) for the condition or exception to apply.
*/
get IsNonDeliveryReport(): boolean {
return this.isNonDeliveryReport;
}
set IsNonDeliveryReport(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isNonDeliveryReport, setValue: (updateValue) => { this.isNonDeliveryReport = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be permission controlled (RMS protected) for the condition or exception to apply.
*/
get IsPermissionControlled(): boolean {
return this.isPermissionControlled;
}
set IsPermissionControlled(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isPermissionControlled, setValue: (updateValue) => { this.isPermissionControlled = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be S/MIME signed for the condition or exception to apply.
*/
get IsSigned(): boolean {
return this.isSigned;
}
set IsSigned(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isSigned, setValue: (updateValue) => { this.isSigned = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be voice mails for the condition or exception to apply.
*/
get IsVoicemail(): boolean {
return this.isVoicemail;
}
set IsVoicemail(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isVoicemail, setValue: (updateValue) => { this.isVoicemail = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether incoming messages must be read receipts for the condition or exception to apply.
*/
get IsReadReceipt(): boolean {
return this.isReadReceipt;
}
set IsReadReceipt(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.isReadReceipt, setValue: (updateValue) => { this.isReadReceipt = updateValue } }, value);
}
/**
* Gets the e-mail account names from which incoming messages must have been aggregated for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get FromConnectedAccounts(): StringList {
return this.fromConnectedAccounts;
}
/**
* Gets the item classes that must be stamped on incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get ItemClasses(): StringList {
return this.itemClasses;
}
/**
* Gets the message classifications that must be stamped on incoming messages for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get MessageClassifications(): StringList {
return this.messageClassifications;
}
/**
* Gets or sets a value indicating whether the owner of the mailbox must NOT be a To recipient of the incoming messages for the condition or exception to apply.
*/
get NotSentToMe(): boolean {
return this.notSentToMe;
}
set NotSentToMe(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.notSentToMe, setValue: (updateValue) => { this.notSentToMe = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether the owner of the mailbox must be a Cc recipient of incoming messages for the condition or exception to apply.
*/
get SentCcMe(): boolean {
return this.sentCcMe;
}
set SentCcMe(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.sentCcMe, setValue: (updateValue) => { this.sentCcMe = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether the owner of the mailbox must be the only To recipient of incoming messages for the condition or exception to apply.
*/
get SentOnlyToMe(): boolean {
return this.sentOnlyToMe;
}
set SentOnlyToMe(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.sentOnlyToMe, setValue: (updateValue) => { this.sentOnlyToMe = updateValue } }, value);
}
/**
* Gets the e-mail addresses incoming messages must have been sent to for the condition or exception to apply.
* To disable this predicate, empty the list.
*/
get SentToAddresses(): EmailAddressCollection {
return this.sentToAddresses;
}
/**
* Gets or sets a value indicating whether the owner of the mailbox must be a To recipient of incoming messages for the condition or exception to apply.
*/
get SentToMe(): boolean {
return this.sentToMe;
}
set SentToMe(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.sentToMe, setValue: (updateValue) => { this.sentToMe = updateValue } }, value);
}
/**
* Gets or sets a value indicating whether the owner of the mailbox must be either a To or Cc recipient of incoming messages for the condition or exception to apply.
*/
get SentToOrCcMe(): boolean {
return this.sentToOrCcMe;
}
set SentToOrCcMe(value: boolean) {
this.SetFieldValue<boolean>({ getValue: () => this.sentToOrCcMe, setValue: (updateValue) => { this.sentToOrCcMe = updateValue } }, value);
}
/**
* @Nullable Gets or sets the sensitivity that must be stamped on incoming messages for the condition or exception to apply.
* To disable this predicate, set it to null.
*/
get Sensitivity(): Sensitivity {
return this.sensitivity;
}
set Sensitivity(value: Sensitivity) {
this.SetFieldValue<Sensitivity>({ getValue: () => this.sensitivity, setValue: (updateValue) => { this.sensitivity = updateValue } }, value);
}
/**
* Gets the date range within which incoming messages must have been received for the condition or exception to apply.
* To disable this predicate, set both its Start and End properties to null.
*/
get WithinDateRange(): RulePredicateDateRange {
return this.withinDateRange;
}
/**
* Gets the minimum and maximum sizes incoming messages must have for the condition or exception to apply.
* To disable this predicate, set both its MinimumSize and MaximumSize properties to null.
*/
get WithinSizeRange(): RulePredicateSizeRange {
return this.withinSizeRange;
}
/**
* @internal Initializes a new instance of the **RulePredicates** class.
*/
constructor() {
super();
this.categories = new StringList();
this.containsBodyStrings = new StringList();
this.containsHeaderStrings = new StringList();
this.containsRecipientStrings = new StringList();
this.containsSenderStrings = new StringList();
this.containsSubjectOrBodyStrings = new StringList();
this.containsSubjectStrings = new StringList();
this.fromAddresses = new EmailAddressCollection(XmlElementNames.Address);
this.fromConnectedAccounts = new StringList();
this.itemClasses = new StringList();
this.messageClassifications = new StringList();
this.sentToAddresses = new EmailAddressCollection(XmlElementNames.Address);
this.withinDateRange = new RulePredicateDateRange();
this.withinSizeRange = new RulePredicateSizeRange();
}
/**
* @internal Validates this instance.
*/
InternalValidate(): void {
super.InternalValidate();
EwsUtilities.ValidateParam(this.fromAddresses, "FromAddresses");
EwsUtilities.ValidateParam(this.sentToAddresses, "SentToAddresses");
EwsUtilities.ValidateParam(this.withinDateRange, "WithinDateRange");
EwsUtilities.ValidateParam(this.withinSizeRange, "WithinSizeRange");
}
/**
* @internal Loads service object from XML.
*
* @param {any} jsObject Json Object converted from XML.
* @param {ExchangeService} service The service.
*/
LoadFromXmlJsObject(jsObject: any, service: ExchangeService): void {
for (let key in jsObject) {
switch (key) {
case XmlElementNames.Categories:
this.categories.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsBodyStrings:
this.containsBodyStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsHeaderStrings:
this.containsHeaderStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsRecipientStrings:
this.containsRecipientStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsSenderStrings:
this.containsSenderStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsSubjectOrBodyStrings:
this.containsSubjectOrBodyStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.ContainsSubjectStrings:
this.containsSubjectStrings.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.FlaggedForAction:
this.flaggedForAction = FlaggedForAction[<string>jsObject[key]];
break;
case XmlElementNames.FromAddresses:
this.fromAddresses.CreateFromXmlJsObjectCollection(jsObject[key][XmlElementNames.Address], service);
break;
case XmlElementNames.FromConnectedAccounts:
this.fromConnectedAccounts.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.HasAttachments:
this.hasAttachments = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.Importance:
this.importance = Importance[<string>jsObject[key]];
break;
case XmlElementNames.IsApprovalRequest:
this.isApprovalRequest = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsAutomaticForward:
this.isAutomaticForward = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsAutomaticReply:
this.isAutomaticReply = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsEncrypted:
this.isEncrypted = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsMeetingRequest:
this.isMeetingRequest = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsMeetingResponse:
this.isMeetingResponse = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsNDR:
this.isNonDeliveryReport = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsPermissionControlled:
this.isPermissionControlled = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsSigned:
this.isSigned = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsVoicemail:
this.isVoicemail = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.IsReadReceipt:
this.isReadReceipt = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.ItemClasses:
this.itemClasses.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.MessageClassifications:
this.messageClassifications.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.NotSentToMe:
this.notSentToMe = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.SentCcMe:
this.sentCcMe = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.SentOnlyToMe:
this.sentOnlyToMe = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.SentToAddresses:
this.sentToAddresses.CreateFromXmlJsObjectCollection(jsObject[key][XmlElementNames.Address], service);
break;
case XmlElementNames.SentToMe:
this.sentToMe = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.SentToOrCcMe:
this.sentToOrCcMe = Convert.toBool(jsObject[key]);
break;
case XmlElementNames.Sensitivity:
this.sensitivity = Sensitivity[<string>jsObject[key]];
break;
case XmlElementNames.WithinDateRange:
this.withinDateRange.LoadFromXmlJsObject(jsObject[key], service);
break;
case XmlElementNames.WithinSizeRange:
this.withinSizeRange.LoadFromXmlJsObject(jsObject[key], service);
break;
default:
break
}
}
}
/**
* @internal Writes the elements to XML writer.
*
* @param {EwsServiceXmlWriter} writer The writer.
*/
WriteElementsToXml(writer: EwsServiceXmlWriter): void {
if (this.Categories.Count > 0) {
this.Categories.WriteToXml(writer, XmlElementNames.Categories);
}
if (this.ContainsBodyStrings.Count > 0) {
this.ContainsBodyStrings.WriteToXml(writer, XmlElementNames.ContainsBodyStrings);
}
if (this.ContainsHeaderStrings.Count > 0) {
this.ContainsHeaderStrings.WriteToXml(writer, XmlElementNames.ContainsHeaderStrings);
}
if (this.ContainsRecipientStrings.Count > 0) {
this.ContainsRecipientStrings.WriteToXml(writer, XmlElementNames.ContainsRecipientStrings);
}
if (this.ContainsSenderStrings.Count > 0) {
this.ContainsSenderStrings.WriteToXml(writer, XmlElementNames.ContainsSenderStrings);
}
if (this.ContainsSubjectOrBodyStrings.Count > 0) {
this.ContainsSubjectOrBodyStrings.WriteToXml(writer, XmlElementNames.ContainsSubjectOrBodyStrings);
}
if (this.ContainsSubjectStrings.Count > 0) {
this.ContainsSubjectStrings.WriteToXml(writer, XmlElementNames.ContainsSubjectStrings);
}
if (hasValue(this.FlaggedForAction)) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.FlaggedForAction,
FlaggedForAction[this.FlaggedForAction]);
}
if (this.FromAddresses.Count > 0) {
this.FromAddresses.WriteToXml(writer, XmlElementNames.FromAddresses);
}
if (this.FromConnectedAccounts.Count > 0) {
this.FromConnectedAccounts.WriteToXml(writer, XmlElementNames.FromConnectedAccounts);
}
if (this.HasAttachments != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.HasAttachments,
this.HasAttachments);
}
if (hasValue(this.Importance)) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.Importance,
Importance[this.Importance]);
}
if (this.IsApprovalRequest != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsApprovalRequest,
this.IsApprovalRequest);
}
if (this.IsAutomaticForward != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsAutomaticForward,
this.IsAutomaticForward);
}
if (this.IsAutomaticReply != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsAutomaticReply,
this.IsAutomaticReply);
}
if (this.IsEncrypted != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsEncrypted,
this.IsEncrypted);
}
if (this.IsMeetingRequest != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsMeetingRequest,
this.IsMeetingRequest);
}
if (this.IsMeetingResponse != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsMeetingResponse,
this.IsMeetingResponse);
}
if (this.IsNonDeliveryReport != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsNDR,
this.IsNonDeliveryReport);
}
if (this.IsPermissionControlled != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsPermissionControlled,
this.IsPermissionControlled);
}
if (this.isReadReceipt != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsReadReceipt,
this.IsReadReceipt);
}
if (this.IsSigned != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsSigned,
this.IsSigned);
}
if (this.IsVoicemail != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.IsVoicemail,
this.IsVoicemail);
}
if (this.ItemClasses.Count > 0) {
this.ItemClasses.WriteToXml(writer, XmlElementNames.ItemClasses);
}
if (this.MessageClassifications.Count > 0) {
this.MessageClassifications.WriteToXml(writer, XmlElementNames.MessageClassifications);
}
if (this.NotSentToMe != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.NotSentToMe,
this.NotSentToMe);
}
if (this.SentCcMe != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.SentCcMe,
this.SentCcMe);
}
if (this.SentOnlyToMe != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.SentOnlyToMe,
this.SentOnlyToMe);
}
if (this.SentToAddresses.Count > 0) {
this.SentToAddresses.WriteToXml(writer, XmlElementNames.SentToAddresses);
}
if (this.SentToMe != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.SentToMe,
this.SentToMe);
}
if (this.SentToOrCcMe != false) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.SentToOrCcMe,
this.SentToOrCcMe);
}
if (hasValue(this.Sensitivity)) {
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.Sensitivity,
Sensitivity[this.Sensitivity]);
}
if (this.WithinDateRange.Start || this.WithinDateRange.End) {
this.WithinDateRange.WriteToXml(writer, XmlElementNames.WithinDateRange);
}
if (this.WithinSizeRange.MaximumSize || this.WithinSizeRange.MinimumSize) {
this.WithinSizeRange.WriteToXml(writer, XmlElementNames.WithinSizeRange);
}
}
}