Name

global.CertificationAjax

Description

Support for Certification application

Script

var CertificationAjax = Class.create();
CertificationAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  getCerts: function() {
      var certs = new GlideRecordSecure("cert_element");
      certs.addQuery("id", "IN", this.getParameter("sysparm_ids"));
      certs.addQuery("cert_task", this.getParameter("sysparm_cert_task"));
      certs.orderBy("id");
      certs.query();
      var id = "";
      while (certs.next()) {
          if (id != certs.id) {
              var item = this.newItem();
              item.setAttribute("id", certs.id + "");
              id = certs.id + "";
          }
          var fieldElement = this.getDocument().createElement("f");
          item.appendChild(fieldElement);
          fieldElement.setAttribute("n", certs.element + "");
          fieldElement.setAttribute("s", certs.state + "");
          if (!certs.comment.nil())
              fieldElement.setAttribute("c", certs.comment + "");
      }
  },
  
  revertElements: function() {
      var elements = this.getParameter("sysparm_elements").split(",");
      gs.globalPut("no_update_cert_task", "true");
      for (var i = 0; i < elements.length; i++) {
          if (i == elements.length - 1)
              delete no_update_cert_task;
          var element = elements[i];
          var split = element.indexOf("_");
          var id = element.substring(0, split);
          var field = element.substring(split + 1);
          var gr = new GlideRecordSecure("cert_element");
          gr.addQuery("id", id);
          gr.addQuery("element", field);
          gr.addQuery("cert_task", this.getParameter("sysparm_cert_task"));
          gr.query();
          if (gr.next()) {
              gr.state = "Pending";
              gr.comment = "";
              gr.certified = "";
              gr.certified_value = "";
              gr.update();
          }
      }
  },
  
  certifyElements: function() {
      this.processElements("Certified");
  },
  
  failElements: function() {
      this.processElements("Failed");
  },
  
  processElements: function(status) {
      var elements = this.getParameter("sysparm_elements").split(",");
      gs.globalPut("no_update_cert_task", "true");
      for (var i = 0; i < elements.length; i++) {
          if (i == elements.length - 1)
              delete no_update_cert_task;
          var element = elements[i];
          var split = element.indexOf("_");
          var id = element.substring(0, split);
          var field = element.substring(split + 1);
          var gr = new GlideRecordSecure("cert_element");
          gr.addQuery("id", id);
          gr.addQuery("element", field);
          gr.addQuery("cert_task", this.getParameter("sysparm_cert_task"));
          gr.query();
          if (gr.next()) {
              gr.state = status;
              gr.comment = this.getParameter("sysparm_cert_comment");;
              gr.certified = gs.nowDateTime();
              gr.certified_value = gr.getDisplayValue("id." + field);
              gr.update();
          }
      }
  },
  
  certifyAll: function() {
      var gr = new GlideRecordSecure("cert_element");
      gr.addQuery("cert_task", this.getParameter("sysparm_cert_task"));
      gr.addQuery("state", "Pending");
      gr.query();
      gs.globalPut("no_update_cert_task", "true");
      while (gr.next()) {
          if (!gr.hasNext())
              delete no_update_cert_task;
          gr.state = "Certified";
          gr.update();
      }
  },
  
  cancelCert: function() {
      var current_sys_id = (this.getParameter("sysparm_cert_instance"));
      var gr = new GlideRecord("cert_instance");
      gr.addQuery('sys_id', current_sys_id);
      gr.query();
      if (gr.next() && gr.canWrite()) {
          gr.setValue("state", 7);
          gr.update();    
  		return('true');  
      } 
  	return('false');
  }
  
});

Sys ID

e70a68fc0a0006d401a8dd3b1fe0a5a2

Offical Documentation

Official Docs: