|
| 1 | +// Set first argument to either a User ID or a Sys ID from the "sys_user" table |
| 2 | +// Set second and thirt arguments to Start Date and End Date respectively in format YYYY-MM-DD |
| 3 | +getUserCapacity("ae44946c835cba90cac7a5e0deaad38f", "2025-01-01", "2025-02-28"); |
| 4 | + |
| 5 | +function getUserCapacity(userIdOrSysId, startDateString, endDateString) { |
| 6 | + var grUser = new GlideRecord("sys_user"); |
| 7 | + if(grUser.get(userIdOrSysId)) { |
| 8 | + var startDate = new GlideDate(startDateString); |
| 9 | + var endDate = new GlideDate(endDateString); |
| 10 | + |
| 11 | + var capacityApi = new RMCapacityAPI(startDateString, endDateString); |
| 12 | + var capacityObj = capacityApi.getCapacityForUser(grUser.getUniqueValue()); |
| 13 | + var availabilityObj = capacityApi.getAvailabilityForUser(grUser.getUniqueValue()); |
| 14 | + var totalDaysInRange = GlideDateTime.subtract(startDate, endDate).getDayPart() + 1; |
| 15 | + var totalWorkingDaysInRange = 0; |
| 16 | + |
| 17 | + var dateIterator = GlideDateTime(startDateString); |
| 18 | + |
| 19 | + var currentMonth = dateIterator.getMonthUTC(); |
| 20 | + var monthlyTotalCapacity = 0; |
| 21 | + var monthlyTotalAvailability = 0; |
| 22 | + var totalCapacity = 0; |
| 23 | + var totalAvailability = 0; |
| 24 | + |
| 25 | + for (var i = 0; i < capacityObj.length; i++) { |
| 26 | + |
| 27 | + var month = dateIterator.getMonthUTC(); |
| 28 | + if (month != currentMonth) { |
| 29 | + gs.info(""); |
| 30 | + gs.info("Breakdown for Month --- Capacity: " + monthlyTotalCapacity + " --- Availability: " + monthlyTotalAvailability); |
| 31 | + gs.info(""); |
| 32 | + currentMonth = month; |
| 33 | + monthlyTotalCapacity = 0; |
| 34 | + monthlyTotalAvailability = 0; |
| 35 | + } |
| 36 | + |
| 37 | + gs.info(dateIterator.getDate() + ": " + capacityObj[i] + " | " + availabilityObj[i]); |
| 38 | + dateIterator.add(86400000); |
| 39 | + if (capacityObj[i] > 0) { |
| 40 | + totalWorkingDaysInRange++; |
| 41 | + totalCapacity += capacityObj[i]; |
| 42 | + totalAvailability += availabilityObj[i]; |
| 43 | + monthlyTotalCapacity += capacityObj[i]; |
| 44 | + monthlyTotalAvailability += availabilityObj[i]; |
| 45 | + } |
| 46 | + } |
| 47 | + |
| 48 | + gs.info(""); |
| 49 | + gs.info("Breakdown for Month --- Capacity: " + monthlyTotalCapacity + " --- Availability: " + monthlyTotalAvailability); |
| 50 | + gs.info(""); |
| 51 | + |
| 52 | + gs.info("Total days in range: " + totalDaysInRange); |
| 53 | + gs.info("Total working days in range: " + totalWorkingDaysInRange); |
| 54 | + gs.info("Total capacity: " + totalCapacity); |
| 55 | + gs.info("Total availability: " + totalAvailability); |
| 56 | + } |
| 57 | +} |
0 commit comments