UNPKG

@jaricardodev/ews-javascript-api

Version:
108 lines (94 loc) 3.52 kB
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); } } }