ews javascript api

__extends

declaration
 __extends 

var __extends = this.__extends || function (d, b) {
    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
    function __() { this.constructor = d; }
    __.prototype = b.prototype;
    d.prototype = new __();
};
var AvailabilityData_1 = require("../../Enumerations/AvailabilityData");
var XmlNamespace_1 = require("../../Enumerations/XmlNamespace");
var ServiceError_1 = require("../../Enumerations/ServiceError");
var GetUserAvailabilityResults_1 = require("../../Misc/Availability/GetUserAvailabilityResults");
var ExchangeVersion_1 = require("../../Enumerations/ExchangeVersion");
var XmlElementNames_1 = require("../XmlElementNames");
var AttendeeAvailability_1 = require("../Responses/AttendeeAvailability");
var SuggestionsResponse_1 = require("../Responses/SuggestionsResponse");
var ServiceResponseCollection_1 = require("../Responses/ServiceResponseCollection");
var SimpleServiceRequestBase_1 = require("./SimpleServiceRequestBase");
var GetUserAvailabilityRequest = (function (_super) {
    __extends(GetUserAvailabilityRequest, _super);
    // private attendees: AttendeeInfo[];//System.Collections.Generic.IEnumerable<AttendeeInfo>; - no need of backing field
    // private timeWindow: TimeWindow;
    // private requestedData: AvailabilityData;
    // private options: AvailabilityOptions;
    function GetUserAvailabilityRequest(service) {
        _super.call(this, service);
        this.Attendees = []; //System.Collections.Generic.IEnumerable<AttendeeInfo>;
        this.TimeWindow = null;
        this.RequestedData = AvailabilityData_1.AvailabilityData.FreeBusyAndSuggestions;
        this.Options = null;
    }
    Object.defineProperty(GetUserAvailabilityRequest.prototype, "EmitTimeZoneHeader", {
        get: function () { return true; },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(GetUserAvailabilityRequest.prototype, "IsFreeBusyViewRequested", {
        get: function () { return this.RequestedData == AvailabilityData_1.AvailabilityData.FreeBusy || this.RequestedData == AvailabilityData_1.AvailabilityData.FreeBusyAndSuggestions; },
        enumerable: true,
        configurable: true
    });
    Object.defineProperty(GetUserAvailabilityRequest.prototype, "IsSuggestionsViewRequested", {
        get: function () { return this.RequestedData == AvailabilityData_1.AvailabilityData.Suggestions || this.RequestedData == AvailabilityData_1.AvailabilityData.FreeBusyAndSuggestions; },
        enumerable: true,
        configurable: true
    });
    GetUserAvailabilityRequest.prototype.Execute = function () { return this.InternalExecute(); };
    GetUserAvailabilityRequest.prototype.GetMinimumRequiredServerVersion = function () { return ExchangeVersion_1.ExchangeVersion.Exchange2007_SP1; };
    GetUserAvailabilityRequest.prototype.GetResponseXmlElementName = function () { return XmlElementNames_1.XmlElementNames.GetUserAvailabilityResponse; };
    GetUserAvailabilityRequest.prototype.GetXmlElementName = function () { return XmlElementNames_1.XmlElementNames.GetUserAvailabilityRequest; };
    GetUserAvailabilityRequest.prototype.ParseResponse = function (jsonBody) {
        var serviceResponse = new GetUserAvailabilityResults_1.GetUserAvailabilityResults();
        if (this.IsFreeBusyViewRequested) {
            serviceResponse.AttendeesAvailability = new ServiceResponseCollection_1.ServiceResponseCollection();
            var responseArray = jsonBody[XmlElementNames_1.XmlElementNames.FreeBusyResponseArray];
            var responseMessages = responseArray[XmlElementNames_1.XmlElementNames.FreeBusyResponse];
            if (!Array.isArray(responseMessages)) {
                responseMessages = [responseMessages];
            }
            for (var _i = 0; _i < responseMessages.length; _i++) {
                var responseMessage = responseMessages[_i];
                var freeBusyResponse = new AttendeeAvailability_1.AttendeeAvailability();
                freeBusyResponse.LoadFromXmlJsObject(responseMessage[XmlElementNames_1.XmlElementNames.ResponseMessage], this.Service);
                if (freeBusyResponse.ErrorCode == ServiceError_1.ServiceError.NoError) {
                    freeBusyResponse.LoadFreeBusyViewFromXmlJsObject(responseMessage[XmlElementNames_1.XmlElementNames.FreeBusyView], this.Options.RequestedFreeBusyView, this.Service);
                }
                serviceResponse.AttendeesAvailability.Add(freeBusyResponse);
            }
        }
        if (this.IsSuggestionsViewRequested) {
            serviceResponse.SuggestionsResponse = new SuggestionsResponse_1.SuggestionsResponse();
            var suggestionResponse = jsonBody[XmlElementNames_1.XmlElementNames.SuggestionsResponse];
            serviceResponse.SuggestionsResponse.LoadFromXmlJsObject(suggestionResponse[XmlElementNames_1.XmlElementNames.ResponseMessage], this.Service);
            if (serviceResponse.SuggestionsResponse.ErrorCode == ServiceError_1.ServiceError.NoError) {
                serviceResponse.SuggestionsResponse.LoadSuggestedDaysFromXml(suggestionResponse, this.Service);
            }
        }
        return serviceResponse;
    };
    GetUserAvailabilityRequest.prototype.Validate = function () {
        _super.prototype.Validate.call(this);
        this.Options.Validate(this.TimeWindow.Duration);
    };
    GetUserAvailabilityRequest.prototype.WriteElementsToXml = function (writer) {
        // Only serialize the TimeZone property against an Exchange 2007 SP1 server.
        // Against Exchange 2010, the time zone is emitted in the request's SOAP header.
        if (writer.Service.RequestedServerVersion == ExchangeVersion_1.ExchangeVersion.Exchange2007_SP1) {
        }
        writer.WriteStartElement(XmlNamespace_1.XmlNamespace.Messages, XmlElementNames_1.XmlElementNames.MailboxDataArray);
        for (var _i = 0, _a = this.Attendees; _i < _a.length; _i++) {
            var attendee = _a[_i];
            attendee.WriteToXml(writer);
        }
        writer.WriteEndElement(); // MailboxDataArray
        this.Options.WriteToXml(writer, this);
    };
    return GetUserAvailabilityRequest;
})(SimpleServiceRequestBase_1.SimpleServiceRequestBase);
exports.GetUserAvailabilityRequest = GetUserAvailabilityRequest;