Skip to content

Commit 1e41956

Browse files
authored
Create ResourceCapacityAndAvailabilityViewerDailyBasis.js
1 parent a3cbbb8 commit 1e41956

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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

Comments
 (0)