@jaricardodev/ews-javascript-api
Version:
EWS Managed api in JavaScript
108 lines (94 loc) • 3.52 kB
text/typescript
import {Convert} from "../../../ExtensionMethods";
import {DateTime} from "../../../DateTime";
import {EwsServiceXmlWriter} from "../../../Core/EwsServiceXmlWriter";
import {ExchangeService} from "../../../Core/ExchangeService";
import {Recurrence} from "../Patterns/Recurrence";
import {XmlElementNames} from "../../../Core/XmlElementNames";
import {XmlNamespace} from "../../../Enumerations/XmlNamespace";
import {RecurrenceRange} from "./RecurrenceRange";
/**
* @internal Represents recurrence range with start and number of occurance.
*/
export class NumberedRecurrenceRange extends RecurrenceRange {
private numberOfOccurrences: number;
/**
* @internal Gets the name of the XML element.
*
* @value The name of the XML element.
*/
get XmlElementName(): string {
return XmlElementNames.NumberedRecurrence;
}
/**
* Gets or sets the number of occurrences.
*
* @value The number of occurrences.
*/
get NumberOfOccurrences(): number {
return this.numberOfOccurrences;
}
set NumberOfOccurrences(value: number) {
this.SetFieldValue<number>({ getValue: () => this.numberOfOccurrences, setValue: (updateValue) => { this.numberOfOccurrences = updateValue } }, value);
}
/**
* Initializes a new instance of the **NumberedRecurrenceRange** class.
*/
constructor();
/**
* Initializes a new instance of the **NumberedRecurrenceRange** class.
*
* @param {DateTime} startDate The start date.
* @param {number} numberOfOccurrences The number of occurrences.
*/
constructor(startDate: DateTime, numberOfOccurrences: number);
constructor(startDate: DateTime = null, numberOfOccurrences: number = null) {
if (arguments.length === 0) {
super();
return;
}
super(startDate);
this.numberOfOccurrences = numberOfOccurrences;
}
/**
* @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 {
super.LoadFromXmlJsObject(jsObject, service);
for (let key in jsObject) {
switch (key) {
case XmlElementNames.NumberOfOccurrences:
this.numberOfOccurrences = Convert.toNumber(jsObject[key]);
break;
default:
break;
}
}
}
/**
* Setups the recurrence.
*
* @param {Recurrence} recurrence The recurrence.
*/
SetupRecurrence(recurrence: Recurrence): void {
super.SetupRecurrence(recurrence);
recurrence.NumberOfOccurrences = this.NumberOfOccurrences;
}
/**
* @internal Writes elements to XML.
*
* @param {EwsServiceXmlWriter} writer The writer.
*/
WriteElementsToXml(writer: EwsServiceXmlWriter): void {
super.WriteElementsToXml(writer);
if (this.NumberOfOccurrences)
{
writer.WriteElementValue(
XmlNamespace.Types,
XmlElementNames.NumberOfOccurrences,
this.NumberOfOccurrences);
}
}
}