I am trying to write a script which validates the Outage start date and Outage end date be within Pl

Jagan9
Tera Contributor

I am trying to write a script include which validates the Outage start date and Outage end date be within Planned Start date and Planned end dates. Please some one help me out with this as its a little bit confusing to me.

7 REPLIES 7

Jagan9
Tera Contributor

Hi , 

Could you please update it 

Bert_c1
Kilo Patron

Script include named "checkOutageDates":

var checkOutageDates = Class.create();
checkOutageDates.prototype = {
    initialize: function() {
    },

	checkDates: function(outage_start_date, outage_end_date, planned_start_date, planned_end_date) {
		var withinPlannedDates = false;
		if ((outage_start_date >= planned_start_date) && (outage_start_date < planned_end_date) && (outage_end_date > planned_start_date) && (outage_end_date <= planned_end_date)) {
			withinPlannedDates = true;
		}
		return withinPlannedDates;
	},
	
    type: 'checkOutageDates'
};

Test:

var plannedStart = new GlideDateTime('2023-09-20 00:00:00');
var plannedEnd = new GlideDateTime('2023-09-21 00:00:00');
var outageStart = new GlideDateTime('2023-09-20 12:00:00');
var outageEnd = new GlideDateTime('2023-09-20 22:00:00');
var outageWithinPlanned = new checkOutageDates();
var result = outageWithinPlanned.checkDates(outageStart, outageEnd, plannedStart, plannedEnd);
gs.info(result);

result in scripts background:

*** Script: true

Bert_c1
Kilo Patron

@Jagan9 ,

Can you please review?

Jagan9
Tera Contributor
var ChangeOutageValidate = Class.create();
ChangeOutageValidate.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getOutageDetails: function() {
        var result = true;
        var cR_sys_id = this.getParameter("sysparm_sysid");
        var cR_start_date = this.getParameter("sysparm_startDate");
        var cR_end_date = this.getParameter("sysparm_endDate");
        var outageRec = new GlideRecord("task_outage");
        outageRec.addEncodedQuery("task=" + cR_sys_id);
        outageRec.query();
        while (outageRec.next()) {
            if(!JSUtil.nil(outageRec.outage.begin) && !JSUtil.nil(outageRec.outage.end))
            {
                var d1 = new GlideDateTime(outageRec.outage.begin.getDisplayValue());
                var d2 = new GlideDateTime(cR_start_date);
                var d3 = new GlideDateTime(outageRec.outage.end.getDisplayValue());
                var d4 = new GlideDateTime(cR_end_date);
                if(d1 >= d2 && d3 <= d4){
                    result = true;
                }
                else{
                    result = false;
                }
            }
            else{
                result = false;
            }
        }
        return result;
    },
    type: 'ChangeOutageValidate'
});