Friday, 22 May 2015

Current user datetime in mscrm using javascrips

var today = new Date();
var userTime = getUsersLocalDateTime(today);
function getServerURL(location) {
    var urlReg = new RegExp(/http[s]?:\/\/[0-9.:]+\/[^\/]+/);
    var ServerUrl = Xrm.Page.context.getServerUrl();
    if (window.location.href.match(urlReg) != null) {
        ServerUrl = window.location.href.match(urlReg).toString();
    }
    if (ServerUrl.match(/\/$/)) {
        ServerUrl = ServerUrl.substring(0, ServerUrl.length - 1);
    }
    return ServerUrl;
}

function getUsersLocalDateTime(tDate) {
    /// <summary>
    /// Returns the date time from the server in the format present in the CRM user local settings.
    /// Note: Include JSON2 and REST Operations library in the form before calling this function.
    /// </summary>
    /// <returns>User local date time.</returns>
    //debugger;
    var usersLocalDateTime = null;
    var UserId = Xrm.Page.context.getUserId();
    SDK.REST.retrieveRecordSync(UserId, "UserSettings", function retrieveUsersLocalDateTime(userSettings) {
        /// <summary>
        /// Called on the successfull retrieval of user settings.
        /// </summary>
        /// <param name="userSettings">Present execution object</param>
        /// <returns>User local date time.</returns>
        usersLocalDateTime = convertToLocalDateTime(userSettings.TimeZoneCode, tDate.toJSON());
    }, retrieveUsersLocalDateTimeError);
    return usersLocalDateTime;
}

function retrieveUsersLocalDateTimeError(error) {
    alert(error);
}

function convertToLocalDateTime(timeZoneCode, dateTimeUTC) {
    var _xmlHttpRequestObject = new XMLHttpRequest();
    var _response = null;
    _xmlHttpRequestObject.open("POST", getServerURL() + '/XRMServices/2011/Organization.svc/web', false);
    _xmlHttpRequestObject.setRequestHeader("Accept", "application/xml, text/xml, */*");
    _xmlHttpRequestObject.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
    _xmlHttpRequestObject.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/xrm/2011/Contracts/Services/IOrganizationService/Execute");

    var _soapRequest = "<s:Envelope xmlns:s=\"http://schemas.xmlsoap.org/soap/envelope/\">";
    _soapRequest += "<s:Body>";
    _soapRequest += "<Execute xmlns=\"http://schemas.microsoft.com/xrm/2011/Contracts/Services\" xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\">";
    _soapRequest += "<request i:type=\"b:LocalTimeFromUtcTimeRequest\" xmlns:a=\"http://schemas.microsoft.com/xrm/2011/Contracts\" xmlns:b=\"http://schemas.microsoft.com/crm/2011/Contracts\">";
    _soapRequest += "<a:Parameters xmlns:c=\"http://schemas.datacontract.org/2004/07/System.Collections.Generic\">";
    _soapRequest += "<a:KeyValuePairOfstringanyType>";
    _soapRequest += "<c:key>TimeZoneCode</c:key>";
    _soapRequest += "<c:value i:type=\"d:int\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + timeZoneCode + "</c:value>";
    _soapRequest += "</a:KeyValuePairOfstringanyType>";
    _soapRequest += "<a:KeyValuePairOfstringanyType>";
    _soapRequest += "<c:key>UtcTime</c:key>";
    _soapRequest += "<c:value i:type=\"d:dateTime\" xmlns:d=\"http://www.w3.org/2001/XMLSchema\">" + dateTimeUTC + "</c:value>";
    _soapRequest += "</a:KeyValuePairOfstringanyType>";
    _soapRequest += "</a:Parameters>";
    _soapRequest += "<a:RequestId i:nil=\"true\" />";
    _soapRequest += "<a:RequestName>LocalTimeFromUtcTime</a:RequestName>";
    _soapRequest += "</request>";
    _soapRequest += "</Execute>";
    _soapRequest += "</s:Body>";
    _soapRequest += "</s:Envelope>";

    _xmlHttpRequestObject.onreadystatechange = function () {
        if (_xmlHttpRequestObject.readyState == 4) {
            if (_xmlHttpRequestObject.status == 200) {
                _response = _xmlHttpRequestObject;
            }
        }
    }
    _xmlHttpRequestObject.send(_soapRequest);

    if (_response != null && _response.responseXML != null && _response.responseXML.text != null) {
        var _presentDate = new Date();
        if (_response.responseXML.text != undefined) {
            _presentDate.setYear(parseInt(_response.responseXML.text.substring(29, 33), 10));

            _presentDate.setMonth(parseInt(_response.responseXML.text.substring(34, 36), 10) - 1);
            _presentDate.setDate(parseInt(_response.responseXML.text.substring(37, 39), 10));
            _presentDate.setHours(parseInt(_response.responseXML.text.substring(40, 42), 10));
            _presentDate.setMinutes(parseInt(_response.responseXML.text.substring(43, 45), 10));
            _presentDate.setSeconds(parseInt(_response.responseXML.text.substring(46, 48), 10));
        }
        else {
            var userT = _response.responseXML.getElementsByTagName("c:value")[0].textContent;
            _presentDate.setYear(parseInt(userT.substring(0, 4), 10));
            _presentDate.setMonth(parseInt(userT.substring(5, 7), 10) - 1);
            _presentDate.setDate(parseInt(userT.substring(8, 10), 10));
            _presentDate.setHours(parseInt(userT.substring(11, 13), 10));
            _presentDate.setMinutes(parseInt(userT.substring(14, 16), 10));
            _presentDate.setSeconds(parseInt(userT.substring(17, 19), 10));

        }
        return _presentDate;

    }
}

No comments:

Post a Comment