a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction pushIfNotContains(list, item) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (list.indexOf(item) === -1) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold list.push(item);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction setISO8601(dateInput, string) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\\.([0-9]+))?)?" +
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?",
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne d = string.match(new RegExp(regexp)),
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne offset = 0, date = new Date(d[1], 0, 1), time;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[3]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMonth(d[3] - 1);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[5]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setDate(d[5]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[7]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setHours(d[7]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[8]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMinutes(d[8]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[10]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setSeconds(d[10]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[12]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold date.setMilliseconds(Number("0." + d[12]) * 1000);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (d[14]) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset = (Number(d[16]) * 60) + Number(d[17]);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset *= ((d[15] === '-') ? 1 : -1);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold offset -= date.getTimezoneOffset();
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold time = (Number(date) + (offset * 60 * 1000));
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold dateInput.setTime(Number(time));
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold return dateInput;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omeboldfunction processDelegates(delegate, candidates) {
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne var startDate = setISO8601(new Date(), delegate.startDate),
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne endDate = setISO8601(new Date(), delegate.endDate),
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne now = new Date();
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (startDate < now && now < endDate ) {
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold pushIfNotContains(candidates, delegate.to);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold(function () {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (request.method === "query") {
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold if (!request.additionalParameters.userId) {
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne throw "Parameter userId is required";
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
c5e82a0c28bdc179de9af4587b5fe9572a963279omebold var userId = request.additionalParameters.userId,
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne user = openidm.read("managed/user/"+userId, null, ["*", "manager"]), i,
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne managerCandidates = [ "managed/user/superadmin" ], manager;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (!user) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold throw "User not found: " + userId;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
0d1c2b939c941d043d78564ca632fff97dcc1151Chad Kienle if (user.manager && user.manager._ref) {
0d1c2b939c941d043d78564ca632fff97dcc1151Chad Kienle pushIfNotContains(managerCandidates, user.manager._ref);
0d1c2b939c941d043d78564ca632fff97dcc1151Chad Kienle manager = openidm.read(user.manager._ref);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold if (manager.delegates !== undefined) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold for (i = 0; i < manager.delegates.length; i++) {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold processDelegates(manager.delegates[i], managerCandidates);
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne return managerCandidates.map(function (manager) {
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne return {
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne "userName": openidm.read(manager).userName
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne };
73306ac32669a5b530766e3b65c8d2007fc630c9jason.browne });
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold } else {
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold throw "Unsupported operation: " + request.method;
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold }
a60d77aaed3324cd783f4e648fedfecd54f8e551omebold}());