<html><head><meta></head><body style="margin: 0px; padding: 0px; overflow-wrap: break-word;">﻿


<!-- dAloor 26Nov2016 
Update the page title
Update the jquery and json references.
Update the 4 variables
--- dAloor 26Nov2016 -->


    <title>IOTAP Email To Case : License Activation</title>
    <script src="ClientGlobalContext.js.aspx"></script>
    <script src="iotap_/E2CM/Scripts/jquery1.9.1.js" type="text/javascript"></script>
    <script src="iotap_/E2CM/Scripts/json.js" type="text/javascript"></script>

    <script language="javascript" type="text/javascript">

        //UPDATE THESE VALUES AS REQUIRED
        var solutionName = "EmailToCaseAutomation";
        var licenseEntityName = "iotap_emailtocaselicense";
        var licenseEntityPluralName = "iotap_emailtocaselicenses";
        var licenseAppUri = "https://licensing.work365apps.com";
        var licenseAppHome = "LicenseActivation.html";
        //UPDATE THESE VALUES AS REQUIRED
                

        var ClientCRM = new Object();
        var licenseActivationPage;
        var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
        var eventer = window[eventMethod];
        var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

        eventer(messageEvent, function (e) {           
            if (e.origin == licenseAppUri) {

                try{
                    if (e.data.startsWith("Load")) {
                        ClientCRM.OrgName = Xrm.Page.context.getOrgUniqueName();
                        IOTAP_AddOn_RetrieveVersion();
                        IOTAP_AddOn_RetrieveSolution();
                        IOTAP_AddOn_RetrieveDeploymentType();
                        IOTAP_AddOn_RetrieveUserInfo();
                        IOTAP_AddOn_RetrieveLicense();

                        var ClientCRMObj = JSON.stringify(ClientCRM);
                        licenseActivationPage.contentWindow.postMessage(ClientCRMObj, licenseAppUri);
                    }
            
                    if (e.data.startsWith("LicenseActivation")) {                   
                        var val = e.data.split('|');
                        var licenseXml = val[1];
                    
                        var license = new Object();
                        license.iotap_name = solutionName;
                        license.iotap_licensexml = licenseXml;
                        IOTAP_AddOn_CreateRecord( licenseEntityPluralName, license );
                    }

                    if (e.data.startsWith("RefreshLicense")) {
                        var val = e.data.split('|');
                        var licenseXml = val[1];

                        var license = new Object();
                        license.iotap_licensexml = licenseXml;
                        IOTAP_AddOn_RetrieveLicense();
                        IOTAP_AddOn_UpdateRecord( licenseEntityPluralName, ClientCRM.LicenseId, license );
                    }
                }
                catch(ex)
                {
                    alert("Error Activating License : " + ex.message)
                }


            }            
        }, false);
        

        $(document).ready(function () {
            licenseActivationPage = document.getElementById('licenseActivation');           
            licenseActivationPage.src = licenseAppUri + "/" + licenseAppHome;
        });

        // Retrieve CRM Deployment Type
        IOTAP_AddOn_RetrieveDeploymentType = function ()
        {
            
            try {               
                if (window.location.protocol == "https:" && String(window.location.hostname).indexOf("dynamics.com") > 5)
                    ClientCRM.SKU = "2";  //online
                else
                    ClientCRM.SKU = "1";  //onpremise            
            }
            catch (ex) {
                throw ex;
            }
        }

        // Retrieve CRM Version
        IOTAP_AddOn_RetrieveVersion = function ()
        {
            var coll;

            try {
                var query = "RetrieveVersion";
                var httpReq = IOTAP_AddOn_CreateHTTPRequest("GET", query, false);
                httpReq.send(null);

                if (httpReq.status === 200) {                    
                    ClientCRM.CrmVersion = JSON.parse(httpReq.responseText).Version;
                }
                return coll;
            }
            catch (ex) {
                throw ex;
            }
        }

        // Retrieve Admin User Info
        IOTAP_AddOn_RetrieveUserInfo = function ()
        {
            try {               
                var userId = Xrm.Page.context.getUserId().replace("{","").replace("}","");                
                var query = "systemusers?$select=address1_telephone1,firstname,internalemailaddress,lastname,mobilephone,title&$filter=accessmode eq 0 and isdisabled eq false";
                var httpReq = IOTAP_AddOn_CreateHTTPRequest( "GET", query, false );
                httpReq.send( null );

                if (httpReq.status === 200) {                   
                    var systemUserColl = JSON.parse(httpReq.responseText).value;
                    ClientCRM.ActiveUserCount = systemUserColl.length;

                    for (var i = 0; i < systemUserColl.length; i++) {
                        //Fetch logged in user details                       
                        if (systemUserColl[i].systemuserid.replace("{","").replace("}","").toLowerCase() == userId.toLowerCase()) {
                            ClientCRM.AdminFirstName = systemUserColl[i].firstname;
                            ClientCRM.AdminLastName = systemUserColl[i].lastname;
                            ClientCRM.AdminMobile = systemUserColl[i].mobilephone;
                            ClientCRM.AdminTitle = systemUserColl[i].title;
                            ClientCRM.AdminEmail = systemUserColl[i].internalemailaddress;
                            ClientCRM.AdminPhone = systemUserColl[i].address1_telephone1;
                        }
                    }                    
                }                
            }
            catch ( ex ) {
                throw ex;
            }
        }

        // Retrieve Solution Info
        IOTAP_AddOn_RetrieveSolution = function ()
        {
            var coll;

            try {
                var query = "solutions?$select=uniquename,version,solutionpackageversion&$filter=uniquename eq '" + solutionName + "'";
                var httpReq = IOTAP_AddOn_CreateHTTPRequest("GET", query, false);
                httpReq.send(null);

                if (httpReq.status === 200) {                   
                    coll = JSON.parse(httpReq.responseText).value;

                    for (var i = 0; i < coll.length; i++) {
                        ClientCRM.SolutionName = coll[i].uniquename;
                        ClientCRM.SolutionVersion = coll[i].version;
                        ClientCRM.SolutionPackageVersion = coll[i].solutionpackageversion;

                    }                    
                }
                return coll;
            }
            catch (ex) {
                throw ex;
            }
        }       

        // Retrieve Solution Info
        IOTAP_AddOn_RetrieveLicense = function () {
            var coll;

            try {
                ClientCRM.LicenseXML = null;
                var primaryKey = licenseEntityName + "id";
                var query = licenseEntityPluralName + "?$select=" + primaryKey + ",iotap_licensexml&$filter=statecode eq 0";
                var httpReq = IOTAP_AddOn_CreateHTTPRequest("GET", query, false);
                httpReq.send(null);

                if (httpReq.status === 200) {
                    coll = JSON.parse(httpReq.responseText).value;

                    for (var i = 0; i < coll.length; i++) {
                        ClientCRM.LicenseId = eval("coll[i]." + primaryKey);
                        ClientCRM.LicenseXML = coll[i].iotap_licensexml;
                    }
                }
                return coll;
            }
            catch (ex) {
                throw ex;
            }
        }


        //Create the HTTP Request object
        IOTAP_AddOn_CreateHTTPRequest = function ( action, query, async )
        {
            try {
                var httpReq = new XMLHttpRequest();
                httpReq.open( action, IOTAP_AddOn_GetClientUrl() + "/api/data/v8.0/" + query, async );
                httpReq.setRequestHeader( "Accept", "application/json" );
                httpReq.setRequestHeader( "Content-Type", "application/json; charset=utf-8" );
                httpReq.setRequestHeader( "OData-MaxVersion", "4.0" );
                httpReq.setRequestHeader( "OData-Version", "4.0" );
            }
            catch ( ex ) {
                throw ex;
            }
            return httpReq;
        }

        //Get the CRM Client Url
        IOTAP_AddOn_GetClientUrl = function ()
        {
            return Xrm.Page.context.getClientUrl();
        }

        IOTAP_AddOn_CreateRecord = function ( entityName, entity )
        {
            try {
                var httpReq = IOTAP_AddOn_CreateHTTPRequest( "POST", entityName, false );
                httpReq.send( JSON.stringify( entity ) );
            }
            catch ( ex ) {
                throw ex;
            }
        }

        IOTAP_AddOn_UpdateRecord = function ( entityName, entityId, entity )
        {
            try {
                var httpReq = IOTAP_AddOn_CreateHTTPRequest( "PATCH", entityName + "(" + entityId + ")", false );
                httpReq.send( JSON.stringify( entity ) );
            }
            catch ( ex ) {
                throw ex;
            }
        }

        </script>
        
                    
            <iframe style="border-style:none;border-width:0px;width:100%;height:650px" frameborder="0" id="licenseActivation"></iframe>
        
        
</body></html>