i want to CSA (servicenow) cerificate with my full name

munukuntlak
Tera Contributor

i want to CSA (servicenow) cerificate with my full name

1 ACCEPTED SOLUTION

Dr Atul G- LNG
Tera Patron

Is issue still open @munukuntlak 

*************************************************************************************************************
If my response proves useful, please indicate its helpfulness by selecting " Accept as Solution" and " Helpful." This action benefits both the community and me.

Regards
Dr. Atul G. - Learn N Grow Together
ServiceNow Techno - Functional Trainer
LinkedIn: https://www.linkedin.com/in/dratulgrover
YouTube: https://www.youtube.com/@LearnNGrowTogetherwithAtulG
Topmate: https://topmate.io/dratulgrover [ Connect for 1-1 Session]

****************************************************************************************************************

View solution in original post

30 REPLIES 30

munukuntlak
Tera Contributor
    generateScheduleName: function(appName, scheduleType, daysOfWeek, startTime, endTime) {
        if (!appName || !scheduleType || !daysOfWeek || !startTime || !endTime) {
            gs.error('ScheduleNameGenerator: Missing required parameters');
            return 'Schedule_Error';
        }
        var cleanAppName = this._cleanString(appName);
        var cleanScheduleType = this._cleanString(scheduleType);
        var dayAbbreviations = this._convertDaysToAbbreviation(daysOfWeek);
        var scheduleName = cleanAppName + '_' + cleanScheduleType + '_' + dayAbbreviations + '[' + startTime + ':' + endTime + ']';
        
        gs.info('ScheduleNameGenerator: Generated name = ' + scheduleName);
        
        return scheduleName;
    },
    
    _cleanString: function(str) {
        if (!str) return '';
        return String(str).replace(/[^a-zA-Z0-9]/g, '');
    },
    

    _convertDaysToAbbreviation: function(daysNumeric) {
        if (!daysNumeric) return 'AllDays';
        
        var dayMap = {
            '1': 'Mon',
            '2': 'Tue',
            '3': 'Wed',
            '4': 'Thu',
            '5': 'Fri',
            '6': 'Sat',
            '7': 'Sun'
        };
        
        var numericStr = String(daysNumeric);
        var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
        
        var dayAbbrevs = [];
        for (var i = 0; i < dayNumbers.length; i++) {
            var num = dayNumbers[i].trim();
            if (dayMap[num]) {
                dayAbbrevs.push(dayMap[num]);
            }
        }
        
        return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
    },

munukuntlak
Tera Contributor
generateCompleteScheduleName: function(scheduleId, appName, scheduleType, newDays, newStartTime, newEndTime, timezone, allDay) {
        try {
            var cleanAppName = this._cleanString(appName);
            var cleanScheduleType = this._cleanString(scheduleType);
            
            var scheduleName = cleanAppName + '_' + cleanScheduleType;
            
            var existingEntries = this._getExistingEntries(scheduleId);
            
            for (var i = 0; i < existingEntries.length; i++) {
                var entry = existingEntries[i];
                scheduleName += ' ' + entry.displayText;
            }
            
            var newTimingString = this._generateDaysForName(newDays, newStartTime, newEndTime, allDay);
            
            scheduleName += ' ' + newTimingString;
            
            scheduleName += ' ' + timezone;
            
            gs.info('ScheduleNameGenerator: Complete name = ' + scheduleName);
            
            return scheduleName;
            
        } catch (ex) {
            gs.error('ScheduleNameGenerator.generateCompleteScheduleName: ' + ex.message);
            return 'Schedule_Error';
        }
    },
    
    
    _getExistingEntries: function(scheduleId) {
        var entries = [];
        
        var gr = new GlideRecord('cmn_schedule_span');
        gr.addQuery('schedule', scheduleId);
        gr.addQuery('type', 'include'); // Not exclude type
        gr.query();
        
        while (gr.next()) {
            var days = gr.getValue('days_of_week') || '';
            var startTime = this._extractTimeFromDateTime(gr.getValue('start_date_time'));
            var endTime = this._extractTimeFromDateTime(gr.getValue('end_date_time'));
            var allDay = gr.getValue('all_day') == 'true' || gr.getValue('all_day') == '1';
            
            var displayText = this._generateDaysForName(days, startTime, endTime, allDay);
            
            entries.push({
                sys_id: gr.getUniqueValue(),
                name: gr.getValue('name'),
                displayText: displayText
            });
        }
        
        return entries;
    },
    
   
    _generateDaysForName: function(daysOfWeek, startTime, endTime, allDay) {
        var days = '';
        var dateString = '';
        
        if (allDay) {
            dateString = '00:00-23:59';
        } else {
            dateString = startTime + '-' + endTime;
        }
        
        var cleanDays = daysOfWeek.replace(/,/g, '');
        
        if (cleanDays === '12345') {
            days = 'Mon-Fri[' + dateString + ']';
        } else if (cleanDays === '67') {
            days = 'Sat-Sun[' + dateString + ']';
        } else if (cleanDays === '123456') {
            days = 'Mon-Sat[' + dateString + ']';
        } else if (cleanDays === '1234567') {
            days = 'Mon-Sun[' + dateString + ']';
        } else {
            var dayMap = {
                '1': 'Mon',
                '2': 'Tue',
                '3': 'Wed',
                '4': 'Thu',
                '5': 'Fri',
                '6': 'Sat',
                '7': 'Sun'
            };
            
            var dayNames = [];
            for (var i = 0; i < cleanDays.length; i++) {
                var dayNum = cleanDays.charAt(i);
                if (dayMap[dayNum]) {
                    dayNames.push(dayMap[dayNum]);
                }
            }
            
            days = dayNames.join(',') + '[' + dateString + ']';
        }
        
        return days;
    },
    

    _extractTimeFromDateTime: function(dateTimeValue) {
        if (!dateTimeValue) return '00:00';
        
        var dateTimeStr = String(dateTimeValue).trim();
        
        if (dateTimeStr.indexOf('TZID=') === 0) {
            var parts = dateTimeStr.split(';');
            if (parts.length > 1) dateTimeStr = parts[1];
        }
        
        if (dateTimeStr.indexOf('T') > -1 && dateTimeStr.indexOf('-') === -1) {
            var hour = dateTimeStr.substring(9, 11);
            var minute = dateTimeStr.substring(11, 13);
            return hour + ':' + minute;
        }
        
        if (dateTimeStr.indexOf(' ') > -1) {
            var timePart = dateTimeStr.split(' ')[1];
            if (timePart) {
                var timeComponents = timePart.split(':');
                if (timeComponents.length >= 2) {
                    return timeComponents[0] + ':' + timeComponents[1];
                }
            }
        }
        
        return '00:00';
    },
    

    _cleanString: function(str) {
        if (!str) return '';
        return String(str).replace(/[^a-zA-Z0-9]/g, '');
    },
    

    _convertDaysToAbbreviation: function(daysNumeric) {
        if (!daysNumeric) return 'AllDays';
        
        var dayMap = {
            '1': 'Mon',
            '2': 'Tue',
            '3': 'Wed',
            '4': 'Thu',
            '5': 'Fri',
            '6': 'Sat',
            '7': 'Sun'
        };
        
        var numericStr = String(daysNumeric);
    
        var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
        
        var dayAbbrevs = [];
        for (var i = 0; i < dayNumbers.length; i++) {
            var num = dayNumbers[i].trim();
            if (dayMap[num]) {
                dayAbbrevs.push(dayMap[num]);
            }
        }
        
        return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
    },
var scheduleRefRecord = fd_data.schedule_ref_record.toString(); // Schedule sys_id
    var appName = fd_data.application_name;
    var scheduleType = fd_data.schedule_type;
    var newDays = fd_data.days_of_week;
    var newStartTime = fd_data.start_time;
    var newEndTime = fd_data.end_time;
    var timezone = fd_data.timezone;
    var allDay = fd_data.all_day == 'true' || fd_data.all_day == true;
    
    // Generate complete schedule name with all entries
    var generator = new ScheduleNameGenerator();
    var completeName = generator.generateCompleteScheduleName(
        scheduleRefRecord,
        appName,
        scheduleType,
        newDays,
        newStartTime,
        newEndTime,
        timezone,
        allDay
    );

return completeName;

munukuntlak
Tera Contributor
regenerateScheduleNameFromEntries: function(scheduleId) {
        try {
            var schedule = new GlideRecord('cmn_schedule');
            if (!schedule.get(scheduleId)) {
                gs.error('ScheduleNameGenerator: Schedule not found: ' + scheduleId);
                return 'Schedule_Error';
            }
            
            var appName = schedule.getValue('name') || 'App';
            var scheduleType = schedule.getValue('type') || 'Schedule';
            var timezone = schedule.getValue('time_zone') || 'US/Eastern';
            
            var cleanAppName = this._cleanString(appName);
            var cleanScheduleType = this._cleanString(scheduleType);
            
            var scheduleName = cleanAppName + '_' + cleanScheduleType;
            
            var gr = new GlideRecord('cmn_schedule_span');
            gr.addQuery('schedule', scheduleId);
            gr.query();
            
            while (gr.next()) {
                var days = gr.getValue('days_of_week') || '';
                var startTime = this._extractTimeFromDateTime(gr.getValue('start_date_time'));
                var endTime = this._extractTimeFromDateTime(gr.getValue('end_date_time'));
                var allDay = gr.getValue('all_day') == 'true' || gr.getValue('all_day') == '1';
                
                var displayText = this._generateDaysForName(days, startTime, endTime, allDay);
                scheduleName += ' ' + displayText;
            }
            
            scheduleName += ' ' + timezone;
            
            gs.info('ScheduleNameGenerator: Regenerated name = ' + scheduleName);
            
            return scheduleName;
            
        } catch (ex) {
            gs.error('ScheduleNameGenerator.regenerateScheduleNameFromEntries: ' + ex.message);
            return 'Schedule_Error';
        }
    },
    
    

    _generateDaysForName: function(daysOfWeek, startTime, endTime, allDay) {
        var days = '';
        var dateString = '';
        
        if (allDay) {
            dateString = '00:00-23:59';
        } else {
            dateString = startTime + '-' + endTime;
        }
        
        var cleanDays = daysOfWeek.replace(/,/g, '');
        
        if (cleanDays === '12345') {
            days = 'Mon-Fri[' + dateString + ']';
        } else if (cleanDays === '67') {
            days = 'Sat-Sun[' + dateString + ']';
        } else if (cleanDays === '123456') {
            days = 'Mon-Sat[' + dateString + ']';
        } else if (cleanDays === '1234567') {
            days = 'Mon-Sun[' + dateString + ']';
        } else {
            var dayMap = {
                '1': 'Mon',
                '2': 'Tue',
                '3': 'Wed',
                '4': 'Thu',
                '5': 'Fri',
                '6': 'Sat',
                '7': 'Sun'
            };
            
            var dayNames = [];
            for (var i = 0; i < cleanDays.length; i++) {
                var dayNum = cleanDays.charAt(i);
                if (dayMap[dayNum]) {
                    dayNames.push(dayMap[dayNum]);
                }
            }
            
            days = dayNames.join(',') + '[' + dateString + ']';
        }
        
        return days;
    },
    

    _extractTimeFromDateTime: function(dateTimeValue) {
        if (!dateTimeValue) return '00:00';
        
        var dateTimeStr = String(dateTimeValue).trim();
        
        if (dateTimeStr.indexOf('TZID=') === 0) {
            var parts = dateTimeStr.split(';');
            if (parts.length > 1) dateTimeStr = parts[1];
        }
        
        if (dateTimeStr.indexOf('T') > -1 && dateTimeStr.indexOf('-') === -1) {
            var hour = dateTimeStr.substring(9, 11);
            var minute = dateTimeStr.substring(11, 13);
            return hour + ':' + minute;
        }
        
        if (dateTimeStr.indexOf(' ') > -1) {
            var timePart = dateTimeStr.split(' ')[1];
            if (timePart) {
                var timeComponents = timePart.split(':');
                if (timeComponents.length >= 2) {
                    return timeComponents[0] + ':' + timeComponents[1];
                }
            }
        }
        
        return '00:00';
    },
    

    _cleanString: function(str) {
        if (!str) return '';
        return String(str).replace(/[^a-zA-Z0-9]/g, '');
    },
    
    _convertDaysToAbbreviation: function(daysNumeric) {
        if (!daysNumeric) return 'AllDays';
        
        var dayMap = {
            '1': 'Mon',
            '2': 'Tue',
            '3': 'Wed',
            '4': 'Thu',
            '5': 'Fri',
            '6': 'Sat',
            '7': 'Sun'
        };
        
        var numericStr = String(daysNumeric);
        var dayNumbers = numericStr.indexOf(',') > -1 ? numericStr.split(',') : numericStr.split('');
        
        var dayAbbrevs = [];
        for (var i = 0; i < dayNumbers.length; i++) {
            var num = dayNumbers[i].trim();
            if (dayMap[num]) {
                dayAbbrevs.push(dayMap[num]);
            }
        }
        
        return dayAbbrevs.length > 0 ? dayAbbrevs.join('') : 'AllDays';
    },
var scheduleId = fd_data.schedule_ref_record.toString();
    var generator = new ScheduleNameGenerator();
    return generator.regenerateScheduleNameFromEntries(scheduleId);

munukuntlak
Tera Contributor
regenerateScheduleNameFromEntries: function (scheduleId, applicationName, scheduleType) {
    try {
        gs.info('SCHHH :: START regenerateScheduleNameFromEntries');

        var scheduleName = '';
        var schedule = new GlideRecord('cmn_schedule');
        schedule.addQuery('sys_id', scheduleId);
        schedule.query();

        if (schedule.next()) {

            var timezone = schedule.getValue('time_zone') || 'US/Eastern';
            var appName = applicationName || 'Application';
            var schedType = scheduleType || 'Schedule';

            scheduleName = appName + ' ' + schedType;
            gs.info('SCHHH :: Initial Schedule Name = ' + scheduleName);

            var entriesJSON = this._getScheduleEntries(scheduleId);
            gs.info('SCHHH :: Entries raw value = ' + entriesJSON);

            var entries = entriesJSON;

            // ✅ SAFE parsing
            if (typeof entriesJSON === 'string') {
                gs.info('SCHHH :: Parsing entries JSON string');
                entries = JSON.parse(entriesJSON);
            } else {
                gs.info('SCHHH :: Entries already an object, skipping JSON.parse');
            }

            gs.info('SCHHH :: Number of entries = ' + entries.length);

            for (var i = 0; i < entries.length; i++) {
                gs.info('SCHHH :: Entry ' + (i + 1) + ' days = ' + entries[i].days);
                scheduleName += ' ' + entries[i].days;
            }

            scheduleName += ' - ' + timezone;
            gs.info('SCHHH :: Final Schedule Name = ' + scheduleName);
        }

        gs.info('SCHHH :: END regenerateScheduleNameFromEntries');
        return scheduleName;

    } catch (ex) {
        gs.error('SCHHH :: Exception in regenerateScheduleNameFromEntries - ' + ex.message);
        return 'Schedule_Error';
    }
},

munukuntlak
Tera Contributor