@admin-layout/timetracker-module-server 1.0.3-alpha.62 → 1.0.3-alpha.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js
CHANGED
|
@@ -126,7 +126,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
126
126
|
o[k2] = m[k];
|
|
127
127
|
}));
|
|
128
128
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
129
|
-
for (var p in m) if (p !== "default" && !
|
|
129
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
130
130
|
};
|
|
131
131
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
132
132
|
__exportStar(__webpack_require__(/*! ./config */ "./src/config/config.ts"), exports);
|
|
@@ -199,7 +199,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
199
199
|
o[k2] = m[k];
|
|
200
200
|
}));
|
|
201
201
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
202
|
-
for (var p in m) if (p !== "default" && !
|
|
202
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
203
203
|
};
|
|
204
204
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
205
205
|
__exportStar(__webpack_require__(/*! ./constants */ "./src/constants/constants.ts"), exports);
|
|
@@ -223,22 +223,26 @@ const constants_1 = __webpack_require__(/*! ../constants */ "./src/constants/ind
|
|
|
223
223
|
const services_1 = __webpack_require__(/*! ../services */ "./src/services/index.ts");
|
|
224
224
|
const repository_1 = __webpack_require__(/*! ../store/repository */ "./src/store/repository/index.ts");
|
|
225
225
|
const migration_1 = __webpack_require__(/*! ../migration */ "./src/migration/index.ts");
|
|
226
|
-
|
|
226
|
+
const timeTrackerStoreModule = (setting) => new inversify_1.ContainerModule((bind) => {
|
|
227
227
|
bind(constants_1.TYPES.ITimeRecordRepository).to(repository_1.TimeRecordRepository).inSingletonScope();
|
|
228
228
|
bind(constants_1.TYPES.ITimesheetRepository).to(repository_1.TimesheetRepository).inSingletonScope();
|
|
229
229
|
});
|
|
230
|
-
exports.
|
|
230
|
+
exports.timeTrackerStoreModule = timeTrackerStoreModule;
|
|
231
|
+
const timeTrackerMailModule = (setting) => new inversify_1.ContainerModule((bind) => {
|
|
231
232
|
bind('MongodbMigration').to(migration_1.TimesheetApprovalMailTemplate).whenTargetNamed(migration_1.TimesheetApprovalMailTemplate.name);
|
|
232
233
|
bind('MongodbMigration').to(migration_1.TimesheetSubmitMailTemplate).whenTargetNamed(migration_1.TimesheetSubmitMailTemplate.name);
|
|
233
234
|
});
|
|
234
|
-
exports.
|
|
235
|
+
exports.timeTrackerMailModule = timeTrackerMailModule;
|
|
236
|
+
const timeTrackerModule = (setting) => new inversify_1.ContainerModule((bind) => {
|
|
235
237
|
bind(constants_1.TYPES.ITimeRecordService).to(services_1.TimeRecordService).inSingletonScope();
|
|
236
238
|
bind(constants_1.TYPES.ITimesheetService).to(services_1.TimesheetService).inSingletonScope();
|
|
237
239
|
});
|
|
238
|
-
exports.
|
|
240
|
+
exports.timeTrackerModule = timeTrackerModule;
|
|
241
|
+
const timeTrackerProxyModule = (setting) => new inversify_1.ContainerModule((bind) => {
|
|
239
242
|
bind(constants_1.TYPES.ITimeRecordService).to(services_1.TimeRecordProxyService).inSingletonScope();
|
|
240
243
|
bind(constants_1.TYPES.ITimesheetService).to(services_1.TimesheetProxyService).inSingletonScope();
|
|
241
244
|
});
|
|
245
|
+
exports.timeTrackerProxyModule = timeTrackerProxyModule;
|
|
242
246
|
|
|
243
247
|
|
|
244
248
|
/***/ }),
|
|
@@ -260,7 +264,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
260
264
|
o[k2] = m[k];
|
|
261
265
|
}));
|
|
262
266
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
263
|
-
for (var p in m) if (p !== "default" && !
|
|
267
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
264
268
|
};
|
|
265
269
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
266
270
|
__exportStar(__webpack_require__(/*! ./containers */ "./src/containers/containers.ts"), exports);
|
|
@@ -285,7 +289,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
285
289
|
o[k2] = m[k];
|
|
286
290
|
}));
|
|
287
291
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
288
|
-
for (var p in m) if (p !== "default" && !
|
|
292
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
289
293
|
};
|
|
290
294
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
291
295
|
const server_core_1 = __webpack_require__(/*! @common-stack/server-core */ "@common-stack/server-core");
|
|
@@ -316,7 +320,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
316
320
|
o[k2] = m[k];
|
|
317
321
|
}));
|
|
318
322
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
319
|
-
for (var p in m) if (p !== "default" && !
|
|
323
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
320
324
|
};
|
|
321
325
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
322
326
|
__exportStar(__webpack_require__(/*! ./service-initialization */ "./src/initialization/service-initialization.ts"), exports);
|
|
@@ -338,7 +342,7 @@ exports.mainLoadConfigurationPre = void 0;
|
|
|
338
342
|
const core_1 = __webpack_require__(/*! @workbench-stack/core */ "@workbench-stack/core");
|
|
339
343
|
const core_2 = __webpack_require__(/*! @common-stack/core */ "@common-stack/core");
|
|
340
344
|
const preferences_1 = __webpack_require__(/*! ../preferences */ "./src/preferences/index.ts");
|
|
341
|
-
|
|
345
|
+
const mainLoadConfigurationPre = async (_, container) => {
|
|
342
346
|
const logger = container.get(core_2.CommonType.LOGGER);
|
|
343
347
|
logger.info('PRESTART START: -- load TimeTrackerContribution to registry');
|
|
344
348
|
const registry = container.get(core_1.TYPES.IRegistry);
|
|
@@ -346,6 +350,7 @@ exports.mainLoadConfigurationPre = async (_, container) => {
|
|
|
346
350
|
configurationRegistry.registerConfiguration(preferences_1.TimeTrackerContribution);
|
|
347
351
|
logger.info('PRESTART ENDS: -- load TimeTrackerContribution to registry');
|
|
348
352
|
};
|
|
353
|
+
exports.mainLoadConfigurationPre = mainLoadConfigurationPre;
|
|
349
354
|
|
|
350
355
|
|
|
351
356
|
/***/ }),
|
|
@@ -380,7 +385,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
380
385
|
o[k2] = m[k];
|
|
381
386
|
}));
|
|
382
387
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
383
|
-
for (var p in m) if (p !== "default" && !
|
|
388
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
384
389
|
};
|
|
385
390
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
386
391
|
__exportStar(__webpack_require__(/*! ./mail-template */ "./src/migration/mail-template.ts"), exports);
|
|
@@ -557,7 +562,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
557
562
|
o[k2] = m[k];
|
|
558
563
|
}));
|
|
559
564
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
560
|
-
for (var p in m) if (p !== "default" && !
|
|
565
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
561
566
|
};
|
|
562
567
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
563
568
|
__exportStar(__webpack_require__(/*! ./timesheet-moleculer-service */ "./src/plugins/timesheet-moleculer-service.ts"), exports);
|
|
@@ -757,7 +762,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
757
762
|
o[k2] = m[k];
|
|
758
763
|
}));
|
|
759
764
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
760
|
-
for (var p in m) if (p !== "default" && !
|
|
765
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
761
766
|
};
|
|
762
767
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
763
768
|
__exportStar(__webpack_require__(/*! ./settings */ "./src/preferences/settings/index.ts"), exports);
|
|
@@ -783,7 +788,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
783
788
|
o[k2] = m[k];
|
|
784
789
|
}));
|
|
785
790
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
786
|
-
for (var p in m) if (p !== "default" && !
|
|
791
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
787
792
|
};
|
|
788
793
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
789
794
|
__exportStar(__webpack_require__(/*! ./timing-permissions-contribution */ "./src/preferences/permissions/timing-permissions-contribution.ts"), exports);
|
|
@@ -1431,7 +1436,7 @@ exports.resolvers = [timerecord_resolver_1.resolver, timesheet_resolver_1.resolv
|
|
|
1431
1436
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1432
1437
|
exports.resolver = void 0;
|
|
1433
1438
|
const graphql_subscriptions_1 = __webpack_require__(/*! graphql-subscriptions */ "graphql-subscriptions");
|
|
1434
|
-
|
|
1439
|
+
const resolver = (options) => ({
|
|
1435
1440
|
TimeRecord: {
|
|
1436
1441
|
id: (root) => root.id || root._id,
|
|
1437
1442
|
},
|
|
@@ -1486,6 +1491,7 @@ exports.resolver = (options) => ({
|
|
|
1486
1491
|
},
|
|
1487
1492
|
},
|
|
1488
1493
|
});
|
|
1494
|
+
exports.resolver = resolver;
|
|
1489
1495
|
|
|
1490
1496
|
|
|
1491
1497
|
/***/ }),
|
|
@@ -1502,7 +1508,7 @@ exports.resolver = (options) => ({
|
|
|
1502
1508
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1503
1509
|
exports.resolver = void 0;
|
|
1504
1510
|
/* eslint-disable no-underscore-dangle */
|
|
1505
|
-
|
|
1511
|
+
const resolver = (options) => ({
|
|
1506
1512
|
Query: {
|
|
1507
1513
|
getTimesheets: (root, args, { timesheetService, userContext }) => {
|
|
1508
1514
|
options.logger.trace('(Query.getTimeSheets) args %j', args);
|
|
@@ -1534,6 +1540,7 @@ exports.resolver = (options) => ({
|
|
|
1534
1540
|
},
|
|
1535
1541
|
},
|
|
1536
1542
|
});
|
|
1543
|
+
exports.resolver = resolver;
|
|
1537
1544
|
|
|
1538
1545
|
|
|
1539
1546
|
/***/ }),
|
|
@@ -1628,7 +1635,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
1628
1635
|
o[k2] = m[k];
|
|
1629
1636
|
}));
|
|
1630
1637
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
1631
|
-
for (var p in m) if (p !== "default" && !
|
|
1638
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
1632
1639
|
};
|
|
1633
1640
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1634
1641
|
__exportStar(__webpack_require__(/*! ./timesheet-service */ "./src/services/timesheet-service.ts"), exports);
|
|
@@ -2016,7 +2023,7 @@ let TimesheetService = class TimesheetService {
|
|
|
2016
2023
|
if (request.state === "SUBMITTED" /* SUBMITTED */ &&
|
|
2017
2024
|
settings.timetracker.notifications.submitNotifications &&
|
|
2018
2025
|
settings.timetracker.notifications.enableTimetrackerNotifications) {
|
|
2019
|
-
const mailTopic = '
|
|
2026
|
+
const mailTopic = 'Timesheet submitted';
|
|
2020
2027
|
const mailTo = userContext.emailId;
|
|
2021
2028
|
const mailFrom = config_1.config.MAIL_SEND_DEFAULT_EMAIL;
|
|
2022
2029
|
const templateId = constants_1.EmailTemplateCodes.SUBMIT_TIME;
|
|
@@ -2133,7 +2140,8 @@ TimeRecordSchema.set('toJSON', {
|
|
|
2133
2140
|
virtuals: true,
|
|
2134
2141
|
});
|
|
2135
2142
|
TimeRecordSchema.set('toObject', { virtuals: true });
|
|
2136
|
-
|
|
2143
|
+
const TimeRecordsModelFunc = (db) => db.model('timerecords', TimeRecordSchema);
|
|
2144
|
+
exports.TimeRecordsModelFunc = TimeRecordsModelFunc;
|
|
2137
2145
|
|
|
2138
2146
|
|
|
2139
2147
|
/***/ }),
|
|
@@ -2181,7 +2189,8 @@ TimesheetSchema.set('toJSON', {
|
|
|
2181
2189
|
virtuals: true,
|
|
2182
2190
|
});
|
|
2183
2191
|
TimesheetSchema.set('toObject', { virtuals: true });
|
|
2184
|
-
|
|
2192
|
+
const TimesheetsModelFunc = (db) => db.model('timesheets', TimesheetSchema);
|
|
2193
|
+
exports.TimesheetsModelFunc = TimesheetsModelFunc;
|
|
2185
2194
|
|
|
2186
2195
|
|
|
2187
2196
|
/***/ }),
|
|
@@ -2269,7 +2278,8 @@ TimeTrackerSchema.set('toJSON', {
|
|
|
2269
2278
|
virtuals: true,
|
|
2270
2279
|
});
|
|
2271
2280
|
TimeTrackerSchema.set('toObject', { virtuals: true });
|
|
2272
|
-
|
|
2281
|
+
const TimeTrackerModelFunc = (db) => db.model('timetracker', TimeTrackerSchema);
|
|
2282
|
+
exports.TimeTrackerModelFunc = TimeTrackerModelFunc;
|
|
2273
2283
|
|
|
2274
2284
|
|
|
2275
2285
|
/***/ }),
|
|
@@ -2291,7 +2301,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
2291
2301
|
o[k2] = m[k];
|
|
2292
2302
|
}));
|
|
2293
2303
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
2294
|
-
for (var p in m) if (p !== "default" && !
|
|
2304
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
2295
2305
|
};
|
|
2296
2306
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
2297
2307
|
__exportStar(__webpack_require__(/*! ./timerecord-repository */ "./src/store/repository/timerecord-repository.ts"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/config/config.ts","webpack:///./src/config/index.ts","webpack:///./src/constants/constants.ts","webpack:///./src/constants/index.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/index.ts","webpack:///./src/index.ts","webpack:///./src/initialization/index.ts","webpack:///./src/initialization/service-initialization.ts","webpack:///./src/migration/approval_notification.ejs","webpack:///./src/migration/index.ts","webpack:///./src/migration/mail-template.ts","webpack:///./src/migration/submit_notification.ejs","webpack:///./src/module.ts","webpack:///./src/plugins/index.ts","webpack:///./src/plugins/timerecord-moleculer-service.ts","webpack:///./src/plugins/timesheet-moleculer-service.ts","webpack:///./src/preferences/index.ts","webpack:///./src/preferences/permissions/index.ts","webpack:///./src/preferences/permissions/timing-permissions-contribution.ts","webpack:///./src/preferences/permissions/timing-roles-permission-overwrite.ts","webpack:///./src/preferences/settings/general-settings.ts","webpack:///./src/preferences/settings/index.ts","webpack:///./src/preferences/settings/payment-settings.ts","webpack:///./src/resolvers/index.ts","webpack:///./src/resolvers/timerecord-resolver.ts","webpack:///./src/resolvers/timesheet-resolver.ts","webpack:///./src/schema/common-schema.graphql","webpack:///./src/schema/index.ts","webpack:///./src/schema/timerecord-schema.graphql","webpack:///./src/schema/timesheet-schema.graphql","webpack:///./src/schema/timetracker-schema.graphql","webpack:///./src/services/index.ts","webpack:///./src/services/timerecord-proxy-service.ts","webpack:///./src/services/timerecord-service.ts","webpack:///./src/services/timesheet-proxy-service.ts","webpack:///./src/services/timesheet-service.ts","webpack:///./src/store/models/timerecords-model.ts","webpack:///./src/store/models/timesheets-model.ts","webpack:///./src/store/models/timetracker-model.ts","webpack:///./src/store/repository/index.ts","webpack:///./src/store/repository/timerecord-repository.ts","webpack:///./src/store/repository/timesheet-repository.ts","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@vscode-alt/monaco-editor/esm/vs/nls\"","webpack:///external \"@workbench-stack/core\"","webpack:///external \"envalid\"","webpack:///external \"graphql-subscriptions\"","webpack:///external \"inversify\"","webpack:///external \"moleculer\"","webpack:///external \"moment\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","/* eslint-disable import/no-extraneous-dependencies */\nimport * as envalid from 'envalid';\n\nconst { str, num } = envalid;\n\nexport const config = envalid.cleanEnv(process.env, {\n MAIL_SEND_DEFAULT_EMAIL: str(),\n CLIENT_URL: str(),\n});\n","export * from './config';\n","export const DEFAULT_USER = '123';\nexport const DEFAULT_ORG = '123';\nexport const TYPES = {\n ITimeTrackerService: Symbol('ITimeTrackerService'),\n ITimeRecordService: Symbol('ITimeRecordService'),\n ITimesheetService: Symbol('ITimesheetService'),\n ITimeTrackerRepository: Symbol('ITimeTrackerRepository'),\n ITimeRecordRepository: Symbol('ITimeRecordRepository'),\n ITimesheetRepository: Symbol('ITimesheetRepository'),\n ITaskRepository: Symbol('ITaskRepository'),\n ITaskService: Symbol('ITaskService'),\n};\n\nexport const EmailTemplateCodes = {\n TIMESHEET_APPROVAL: 'TIMESHEET_APPROVAL_EMAIL_TEMPLATE',\n ENABLE_TIMETRACKER: 'ENABLE_TIMETRACKER_EMAIL_TEMPLATE',\n SUBMIT_TIME: 'SUBMIT_TIME_EMAIL_TEMPLATE',\n TIMETRACKING_STOP: 'TIMETRACKING_STOP_TEMPLATE',\n};\n\nexport enum IPreDefineAccountPermissions {\n // others\n viewOthersTimeTracker = 'organization.timetracker.others.view',\n createOthersTimeTracker = 'organization.timetracker.others.create',\n editOthersTimeTracker = 'organization.timetracker.others.edit',\n deleteOthersTimeTracker = 'organization.timetracker.others.delete',\n manageOthersTimeTracker = 'organization.timetracker.others.manage',\n\n // self\n viewSelfTimeTracker = 'organization.timetracker.self.view',\n createSelfTimeTracker = 'organization.timetracker.self.create',\n editSelfTimeTracker = 'organization.timetracker.self.edit',\n deleteSelfTimeTracker = 'organization.timetracker.self.delete',\n manageSelfTimeTracker = 'organization.timetracker.self.manage',\n}\n","export * from './constants';\n","import { ContainerModule, interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { TYPES } from '../constants';\nimport { TimeRecordProxyService, TimesheetProxyService, TimeRecordService, TimesheetService } from '../services';\nimport { TimeRecordRepository, TimesheetRepository } from '../store/repository';\nimport { TimesheetApprovalMailTemplate, TimesheetSubmitMailTemplate } from '../migration';\n\nexport const timeTrackerStoreModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordRepository).to(TimeRecordRepository).inSingletonScope();\n bind(TYPES.ITimesheetRepository).to(TimesheetRepository).inSingletonScope();\n });\nexport const timeTrackerMailModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind('MongodbMigration').to(TimesheetApprovalMailTemplate).whenTargetNamed(TimesheetApprovalMailTemplate.name);\n bind('MongodbMigration').to(TimesheetSubmitMailTemplate).whenTargetNamed(TimesheetSubmitMailTemplate.name);\n });\n\nexport const timeTrackerModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordService).to(TimeRecordService).inSingletonScope();\n bind(TYPES.ITimesheetService).to(TimesheetService).inSingletonScope();\n });\n\nexport const timeTrackerProxyModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordService).to(TimeRecordProxyService).inSingletonScope();\n bind(TYPES.ITimesheetService).to(TimesheetProxyService).inSingletonScope();\n });\n","export * from './containers';\n","import { Feature } from '@common-stack/server-core';\nimport TimeTracker from './module';\n\nexport * from './constants';\nexport * from './store/repository';\nexport * from './store/models/timetracker-model';\nexport * from './containers';\n\nexport default new Feature(TimeTracker);\n","export * from './service-initialization';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { IRegistryExtensions as RegistryExtensions, IConfigurationRegistry, IRegistry } from '@adminide-stack/core';\nimport * as ILogger from 'bunyan';\nimport { TYPES as serverTypes, Schemas } from '@workbench-stack/core';\nimport { CommonType } from '@common-stack/core';\nimport { interfaces } from 'inversify';\nimport { TimeTrackerContribution } from '../preferences';\n\nexport const mainLoadConfigurationPre = async (_, container: interfaces.Container) => {\n const logger = container.get<ILogger>(CommonType.LOGGER);\n logger.info('PRESTART START: -- load TimeTrackerContribution to registry');\n\n const registry = container.get<IRegistry>(serverTypes.IRegistry);\n const configurationRegistry = registry.as<IConfigurationRegistry>(RegistryExtensions.Configuration);\n configurationRegistry.registerConfiguration(TimeTrackerContribution);\n logger.info('PRESTART ENDS: -- load TimeTrackerContribution to registry');\n};\n","export default \"<html>\\n <head>\\n\\n </head>\\n\\n <body>\\n <h1> Timesheet has approved! </h1>\\n <p> Dear <%= name %>! </p>\\n <p> Your timesheet from <bold> <%= startDate %> </bold> to <bold> <%= endDate %> </bold> has been approved! </p>\\n You can see timesheet details <a href=\\\"<%= timesheet_url %>\\\" __target=\\\"blank\\\"> here </a>\\n\\n <br /> <br />\\n <p> If you have any problem, please <a href=\\\"<%= contact_url %>\\\"> Contact us </a></p>\\n </body>\\n</html>\";","export * from './mail-template'","/* eslint-disable max-classes-per-file */\nimport * as Logger from 'bunyan';\nimport { injectable, inject, tagged } from 'inversify';\nimport { IDatabaseMigration } from '@adminide-stack/core';\nimport { IMoleculerServiceName, IMailServiceAction, IMailerServicesendArgs } from '@container-stack/mailing-api';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { CallingOptions, ServiceBroker } from 'moleculer';\nimport { EmailTemplateCodes } from '../constants';\nimport { config } from '../config';\n\nconst TimeApprovalTemplate = require('./approval_notification.ejs');\nconst TimeSubmitTemplate = require('./submit_notification.ejs');\n\n@injectable()\nexport class TimesheetApprovalMailTemplate implements IDatabaseMigration {\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n ) { }\n\n get id() {\n return 'EmailTemplateCodes_05012021';\n }\n\n public async up(): Promise<void> {\n const requestData = {\n engine: 'ejs',\n code: EmailTemplateCodes.TIMESHEET_APPROVAL,\n description: 'Timesheet approved',\n html: TimeApprovalTemplate.default,\n text: 'Timesheet approved',\n name: 'Timesheet approval notification',\n topic: 'Timesheet approved.',\n };\n\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n\n@injectable()\nexport class TimesheetSubmitMailTemplate implements IDatabaseMigration {\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n ) { }\n\n get id() {\n return 'TimesheetSubmitMailTemplate_05012021';\n }\n\n public async up(): Promise<void> {\n const requestData = {\n engine: 'ejs',\n code: EmailTemplateCodes.SUBMIT_TIME,\n description: 'Timesheet submitted',\n html: TimeSubmitTemplate.default,\n text: 'Timesheet submitted',\n name: 'Timesheet submit notification',\n topic: 'Timesheet submitted.',\n };\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","export default \"<html>\\n <head>\\n\\n </head>\\n\\n <body>\\n <h1> Timesheet has submitted! </h1>\\n <p> Dear <%= name %>! </p>\\n <p> Your timesheet from <bold> <%= startDate %> </bold> to <bold> <%= endDate %> </bold> has been submitted! </p>\\n You can see timesheet details <a href=\\\"<%= timesheet_url %>\\\" __target=\\\"blank\\\"> here </a>\\n\\n <br /> <br />\\n <p> If you have any problem, please <a href=\\\"<%= contact_url %>\\\"> Contact us </a></p>\\n </body>\\n</html>\";","import { Feature } from '@common-stack/server-core';\nimport { interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { schema } from './schema';\nimport { timeTrackerModule, timeTrackerProxyModule, timeTrackerMailModule, timeTrackerStoreModule } from './containers';\nimport { resolvers } from './resolvers';\nimport { TYPES } from './constants';\nimport { mainLoadConfigurationPre } from './initialization';\nimport { TimeTrackerRolesContribution, TimeTrackerRolesPermissionOverwrite } from './preferences';\nimport { TimeRecordMoleculerService, TimesheetMoleculerService } from './plugins';\n\nconst createServiceFunc = (container: interfaces.Container) => ({\n timeRecordService: container.get(TYPES.ITimeRecordService),\n timesheetService: container.get(TYPES.ITimesheetService),\n});\n\nexport default new Feature({\n schema,\n createResolversFunc: resolvers,\n createContainerFunc: [timeTrackerProxyModule, timeTrackerMailModule],\n createHemeraContainerFunc: [timeTrackerModule, timeTrackerStoreModule],\n createServiceFunc,\n addBrokerClientServiceClass: [TimeRecordMoleculerService, TimesheetMoleculerService],\n preStartFunc: [mainLoadConfigurationPre],\n addPermissions: {\n createPermissions: [TimeTrackerRolesContribution],\n },\n rolesUpdate: {\n overwriteRolesPermissions: TimeTrackerRolesPermissionOverwrite,\n },\n});\n","export * from './timesheet-moleculer-service';\nexport * from './timerecord-moleculer-service';\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ITimeRecordRequest, IMoleculerTopics as MoleculerTopics, ITimeRecordCommands as TimeRecordCommands,\n} from '@admin-layout/timetracker-core';\nimport { ITimeRecordService } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport class TimeRecordMoleculerService extends Service {\n private timerecordService: ITimeRecordService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container}) {\n super(broker);\n const topic = MoleculerTopics.TimeRecord;\n this.timerecordService = container.get<ITimeRecordService>(TYPES.ITimeRecordService);\n this.parseServiceSchema({\n name: topic,\n actions: {\n [TimeRecordCommands.getTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, userId?: string }>) => {\n return await this.timerecordService.getTimeRecords(ctx.params.orgId, ctx.params.userId);\n }\n },\n [TimeRecordCommands.getDurationTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, startTime: Date, endTime: Date, userId?: string }>) => {\n return await this.timerecordService.getDurationTimeRecords(\n ctx.params.orgId, ctx.params.startTime, ctx.params.endTime, ctx.params.userId\n );\n }\n },\n [TimeRecordCommands.getPlayingTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string }>) => {\n return await this.timerecordService.getPlayingTimeRecord(ctx.params.userId, ctx.params.orgId);\n }\n },\n [TimeRecordCommands.createTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, request: ITimeRecordRequest }>) => {\n return await this.timerecordService.createTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.request\n );\n }\n },\n [TimeRecordCommands.updateTimeRecord]: {\n handler: async (ctx: Context<{\n userId: string, orgId: string, recordId: string, request: ITimeRecordRequest,\n }>) => {\n return await this.timerecordService.updateTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.recordId, ctx.params.request\n );\n }\n },\n [TimeRecordCommands.removeTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, recordId: string }>) => {\n return await this.timerecordService.removeTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.recordId\n );\n }\n },\n [TimeRecordCommands.removeDurationTimeRecords]: {\n handler: async (ctx: Context<{\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n }>) => {\n return await this.timerecordService.removeDurationTimeRecords(\n ctx.params.userId, ctx.params.orgId, ctx.params.startTime, ctx.params.endTime, ctx.params.projectId\n );\n }\n },\n [TimeRecordCommands.approveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string, timeRecordsId: string[] }>) => {\n return await this.timerecordService.approveTimeRecords(\n ctx.params.orgId, ctx.params.sheetId, ctx.params.timeRecordsId\n );\n }\n },\n [TimeRecordCommands.disapproveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string }>) => {\n return await this.timerecordService.disapproveTimeRecords(ctx.params.orgId, ctx.params.sheetId);\n }\n },\n },\n });\n }\n}\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport {\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCommands as TimesheetCommands,\n ITimesheetCreateRequest, ITimesheetState,\n ITimeRecordBroadcasterAction\n} from '@admin-layout/timetracker-core';\nimport { ClientTypes } from '@common-stack/core';\nimport { ITimesheetService } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport class TimesheetMoleculerService extends Service {\n private timesheetService: ITimesheetService;\n\n private container: Container;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container}) {\n super(broker);\n this.container = container;\n\n const topic = MoleculerTopics.Timesheet;\n this.container.bind(ClientTypes.ApolloClient).toConstantValue(this.apolloClient);\n\n this.timesheetService = this.container.get<ITimesheetService>(TYPES.ITimesheetService)\n this.parseServiceSchema({\n name: topic,\n events: {\n [ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet]: {\n handler: async (ctx: Context<{ recordId: string, orgId: string }>) => {\n return await this.timesheetService.removeTimeRecordIdFromTimesheet(ctx.params.recordId, ctx.params.orgId);\n }\n }\n },\n actions: {\n [TimesheetCommands.getTimesheets]: {\n handler: async (ctx: Context<{ orgId: string }>) => {\n return await this.timesheetService.getTimesheets(ctx.params.orgId);\n }\n },\n [TimesheetCommands.getTimesheetsWithTotalHours]: {\n handler: async (ctx: Context<{ orgId: string, userId?: string }>) => {\n return await this.timesheetService.getTimesheetsWithTotalHours(ctx.params.orgId, ctx.params.userId);\n }\n },\n [TimesheetCommands.getDurationTimesheets]: {\n handler: async (ctx: Context<{ orgId: string, start: Date, end: Date }>) => {\n return await this.timesheetService.getDurationTimesheets(\n ctx.params.orgId, ctx.params.start, ctx.params.end\n );\n }\n },\n [TimesheetCommands.createTimesheet]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, request: ITimesheetCreateRequest }>) => {\n return await this.timesheetService.createTimesheet(\n ctx.params.userId, ctx.params.orgId, ctx.params.request\n );\n }\n },\n [TimesheetCommands.updateTimesheet]: {\n handler: async (ctx: Context<{\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n }>) => {\n return await this.timesheetService.updateTimesheet(\n ctx.params.userId, ctx.params.orgId, ctx.params.sheetId, ctx.params.request, ctx.params.userContext\n );\n }\n },\n [TimesheetCommands.removeTimesheet]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, sheetId: string }>) => {\n return await this.timesheetService.removeTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.sheetId);\n }\n },\n [TimesheetCommands.updateTimesheetStatus]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string, state: ITimesheetState }>) => {\n return await this.timesheetService.updateTimesheetStatus(\n ctx.params.orgId, ctx.params.sheetId, ctx.params.state\n );\n }\n },\n },\n });\n }\n}\n","export * from './settings';\nexport * from './permissions';\n","export * from './timing-permissions-contribution';\nexport * from './timing-roles-permission-overwrite';\n","import { ConfigurationScope, IPermissionType } from '@adminide-stack/core';\nimport * as nls from '@vscode-alt/monaco-editor/esm/vs/nls';\nimport { IRoles } from '@common-stack/server-core';\nimport { IPreDefineAccountPermissions } from '../../constants';\n\nconst extraParams = {\n type: 'string',\n enum: [IPermissionType.Allow, IPermissionType.Deny, IPermissionType.NotSet],\n default: IPermissionType.NotSet,\n scope: ConfigurationScope.WINDOW,\n};\nexport const TimeTrackerRolesContribution: IRoles<ConfigurationScope> = {\n // others\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.viewOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to view Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.viewOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to view Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.viewOthersTimeTracker,\n 'View an Time Tracker, Time Reports and Timesheet of others.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.createOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.createOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to create Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.createOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to create Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.createOthersTimeTracker,\n 'Create Time Tracker, Reports and Timesheet of other members.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.editOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.editOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to edit Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.editOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to edit Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.editOthersTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of other members',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.manageOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to manage Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.manageOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to manage Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.manageOthersTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of other members',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.deleteOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to delete Time Tracker and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.deleteOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to delete Time Tracker and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.deleteOthersTimeTracker,\n 'Delete Time Tracker and Timesheet of other members.',\n ),\n ...extraParams,\n },\n // self\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.viewSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to view Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.viewSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to view Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.viewSelfTimeTracker,\n 'View an Time Tracker, Time Reports and Timesheet of self',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.createSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.createSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to create Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.createSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to create Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.createSelfTimeTracker,\n 'Create Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.editSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.editSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to edit Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.editSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to edit Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.editSelfTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.manageSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to manage Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.manageSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to manage Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.manageSelfTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.deleteSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to delete Time Tracker and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.deleteSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to delete Time Tracker and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.deleteSelfTimeTracker,\n 'Delete Time Tracker and Timesheet of self.',\n ),\n ...extraParams,\n },\n};\n","import { IPermissionType, IApplicationRoles } from '@adminide-stack/core';\nimport { IPreDefineAccountPermissions } from '../../constants';\n\nexport const TimeTrackerRolesPermissionOverwrite = {\n [IApplicationRoles.OWNER]: {\n // self\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Allow,\n\n // others\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.ADMIN]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.ORGANIZATION_MANAGER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Allow,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.PROJECT_ADMIN]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.MEMBER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.PROJECT_VIEWER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.USER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.GUEST]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n};\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n// const localize = (id, defaultMessage) => defineMessages({\n// id,\n// defaultMessage,\n\n// });\nconst enum TimeFormat {\n ROUNDED_0_00_12 = 'h.mm A',\n ROUNDED_0_00_24 = 'H.mm',\n PRECISE_00_00_00_12 = 'hh:mm:ss A',\n PRECISE_00_00_00_24 = 'HH:mm:ss',\n ROUNDED_UP_00_00_12 = 'hh:mm A',\n ROUNDED_UP_00_00_24 = 'HH:mm',\n}\n\nconst enum GroupProjectsBy {\n CLIENT = 'Client',\n CATEGORY = 'Category',\n CUSTOM = 'Custom',\n}\nconst enum DateFormat {\n USFORMAT = 'MM-DD-YYYY',\n UKFORMAT = 'DD-MM-YYYY',\n ISOFORMAT = 'YYYY-MM-DD',\n}\n\nexport const enum WeekDay {\n SUN = 'Sunday',\n MON = 'Monday',\n TUE = 'Tuesday',\n WED = 'Wednesday',\n THU = 'Thursday',\n FRI = 'Friday',\n SAT = 'Saturday',\n}\n\nconst enum FristWeekOfTheYear {\n FIRST_DAY = 'Week containing first day of the year',\n FIRST_FULL_7DAY = 'First full seven-day week in January',\n FIRST_4_DAY = 'First four-day week in January',\n}\n\nconst enum TimeRoundingUpToValue {\n IN_MINUTES_15 = 15 * 60,\n IN_MINUTES_1 = 1 * 60,\n IN_MINUTES_5 = 5 * 60,\n IN_MINUTES_6 = 6 * 60,\n IN_MINUTES_10 = 10 * 60,\n IN_MINUTES_12 = 12 * 60,\n IN_MINUTES_30 = 30 * 60,\n IN_HOUR_1 = 1 * 60 * 60,\n IN_HOUR_4 = 4 * 60 * 60,\n}\n\nconst enum TimeRoundedType {\n ROUND_UP_TO = 'Round up to',\n ROUND_TO_NEAREST = 'Round to nearest',\n ROUND_DOWN_TO = 'Roudn down to',\n}\nexport const TimeTrackerProperties: { [path: string]: IConfigurationPropertySchema } = {\n // notifications\n 'timetracker.notifications.enableTimetrackerNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.timeTrackingNotification',\n 'Allow timetracker emails to be send',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n\n 'timetracker.notifications.timeTrackingNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.timeTrackingNotification',\n 'An email will be send when tracking is stopped by the system due to lack of user response',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.notifications.approvalNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.approvalNotifications',\n 'An email will be sent to me when my timesheet is approved',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.notifications.submitNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.submitNotifications',\n 'An email will be sent to me when team member submits time (Approval Managers only)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n\n // Time Tracking\n 'timetracker.activity.autoStop': {\n type: 'number',\n default: 24,\n description: localize(\n 'timetracker.activity.autoStop',\n 'Tracking will stop once maximum tack length has been exceeded',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.activity.waitingTime': {\n type: 'number',\n default: 120,\n description: localize(\n 'timetracker.activity.waitingTime',\n 'Enable activity check on the time tracking to ask if you are still tracking after the choosen idle time (in seconds)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.activity.maxTimeInADay': {\n type: 'number',\n default: 120,\n description: localize(\n 'timetracker.activity.maxTimeInADay',\n 'Enable activity check on the time tracking upto choosen max time in a day(in seconds). It can change upto 1440',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.timerecord.automaticLock': {\n type: 'string',\n default: null,\n description: localize(\n 'accountNotificationPrimaryEmail',\n 'Prevent regular users from editing their past time or adding new entries to past dates',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.billable': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.project.billable',\n 'When you create a project, make it billable so its time entries are set as billable by default.',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.daysAllowedToWork': {\n type: ['string'],\n default: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI],\n enum: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI, WeekDay.SAT, WeekDay.SUN],\n description: localize('timetracker.project.recurringDailyLimit', 'Select working day'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.firstDayOfTheWeek': {\n type: 'string',\n enum: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI, WeekDay.SAT, WeekDay.SUN],\n default: WeekDay.MON,\n description: localize('timetracker.project.firstDayOfTheWeek', 'First day of the week'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.firstWeekOfTheyear': {\n type: 'string',\n enum: [FristWeekOfTheYear.FIRST_4_DAY, FristWeekOfTheYear.FIRST_FULL_7DAY, FristWeekOfTheYear.FIRST_DAY],\n default: FristWeekOfTheYear.FIRST_4_DAY,\n enumDescriptions: [\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_4_DAY',\n 'The week regarded to be the first week of the year is that which contains at least 4 days of the new year.',\n ),\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_FULL_7DAY',\n 'The week regarded as the first week of the year is that which contains 7 full days in the new year.',\n ),\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_DAY',\n 'The week regarded as the first week of the years is that which contains at least one-day of the new year.',\n ),\n ],\n description: localize(\n 'timetracker.project.firstWeekOfTheyear',\n 'You can set how you start or view the first calendar week of the year. This will be visible on Timetracker pages like \"Reports\" or \"Calender View\".',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeFormat': {\n type: 'string',\n enum: [\n TimeFormat.ROUNDED_0_00_12,\n TimeFormat.ROUNDED_0_00_24,\n TimeFormat.PRECISE_00_00_00_12,\n TimeFormat.PRECISE_00_00_00_24,\n TimeFormat.ROUNDED_UP_00_00_12,\n TimeFormat.ROUNDED_UP_00_00_24,\n ],\n default: TimeFormat.PRECISE_00_00_00_12,\n enumDescriptions: [\n localize('timetracker.project.timeFormat.ROUNDED_0_00_12', '\"0.00 AM/PM\" (12 hours rounded)'),\n localize('timetracker.project.timeFormat.ROUNDED_0_00_24', '\"0.00\" (24 hours rounded)'),\n localize(\n 'timetracker.project.timeFormat.PRECISE_00_00_00_12',\n '\"00:00:00 AM/PM\" (precise 12 hours format)',\n ),\n localize('timetracker.project.timeFormat.PRECISE_00_00_00_24', '\"13:00:00\" (precise 24 hours format)'),\n localize('timetracker.project.timeFormat.ROUNDED_UP_00_00_12', '\"00:00 AM/PM\" (rounded up)'),\n localize('timetracker.project.timeFormat.ROUNDED_UP_00_00_24', '\"13:00\" (rounded up)'),\n ],\n description: localize(\n 'timetracker.project.timeFormat',\n 'Select the format in which you want your entry represented',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.dateFormat': {\n type: 'string',\n enum: [DateFormat.USFORMAT, DateFormat.UKFORMAT, DateFormat.ISOFORMAT],\n default: DateFormat.USFORMAT,\n enumDescriptions: [\n localize('timetracker.project.dateFormat.USFORMAT', '\"MM-DD-YYYY\" (US standard)'),\n localize('timetracker.project.dateFormat.UKFORMAT', '\"DD-MM-YYYY\" (UK standard)'),\n localize('timetracker.project.dateFormat.ISOFORMAT', '\"YYYY-MM-DD\" (ISO FORMAT)'),\n ],\n description: localize(\n 'timetracker.project.dateFormat',\n 'Select the format in which you want your entry represented',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.roundedToNearest': {\n type: 'string',\n enum: [\n TimeRoundingUpToValue.IN_MINUTES_1,\n TimeRoundingUpToValue.IN_MINUTES_5,\n TimeRoundingUpToValue.IN_MINUTES_6,\n TimeRoundingUpToValue.IN_MINUTES_10,\n TimeRoundingUpToValue.IN_MINUTES_12,\n TimeRoundingUpToValue.IN_MINUTES_15,\n TimeRoundingUpToValue.IN_MINUTES_30,\n TimeRoundingUpToValue.IN_HOUR_1,\n TimeRoundingUpToValue.IN_HOUR_4,\n ],\n default: TimeRoundingUpToValue.IN_MINUTES_15,\n enumDescriptions: [\n localize('TimeRoundingUpToValue.IN_MINUTES_1', '1 minute'),\n localize('TimeRoundingUpToValue.IN_MINUTES_5', '5 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_6', '6 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_10', '10 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_12', '12 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_15', '15 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_30', '30 minutes'),\n localize('TimeRoundingUpToValue.IN_HOUR_1', '1 hour'),\n localize('TimeRoundingUpToValue.IN_HOUR_4', '4 hours'),\n ],\n description: localize('timetracker.project.roundedToNearest', 'Round to nearest selected minute/hour'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.roundedType': {\n type: 'string',\n enum: [TimeRoundedType.ROUND_UP_TO, TimeRoundedType.ROUND_TO_NEAREST, TimeRoundedType.ROUND_DOWN_TO],\n default: TimeRoundedType.ROUND_TO_NEAREST,\n enumDescriptions: [\n localize(\n 'timetracker.project.roundedType.ROUND_UP_TO',\n 'e.g. if you set the interval to 30min, a 26min entry will show up in report as 30min',\n ),\n localize(\n 'timetracker.project.roundedType.ROUND_TO_NEAREST',\n 'e.g. if you set theinterval to 30min, a 14min entry will up as 0min and 26min entry as 30min',\n ),\n localize(\n 'timetracker.project.roundedType.ROUND_DOWN_TO',\n 'e.g. if you set the interval to 30min, a 26min entry will show up in reports as 0min',\n ),\n ],\n description: localize('timetracker.project.roundedType', 'Select the time rounding type'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.report.timeRoundingInReports': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.report.timeRoundingInReports',\n 'Round time in reports up, down, or to nearest X minutes',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n // 'timetracker.project.favorites': {\n // type: 'boolean',\n // default: true,\n // description: localize(\n // 'timetracker.project.favorites',\n // 'Let people mark their most used projects as favorite so they appear at the top of their project list when tracking time.',\n // ),\n // scope: ConfigurationScope.RESOURCE,\n // },\n 'timetracker.project.groupingLabel': {\n type: 'string',\n default: GroupProjectsBy.CLIENT,\n enum: [GroupProjectsBy.CLIENT, GroupProjectsBy.CATEGORY, GroupProjectsBy.CUSTOM],\n description: localize(\n 'timetracker.project.groupingLabel',\n 'Group Project by clients or departments, you can change the lable to somethign else',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.pickerSpecialFilter': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.pickerSpecialFilter',\n 'Quickly find the right task in project picker by using the task@project syntax.',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.timerecord.screenshotsEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.timerecord.screenshotsEnabled',\n 'Generate screenshots every 5 minutes while the timer is running (desktop app only)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.taskBillableEnabled': {\n type: 'boolean',\n default: false,\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.taskRateEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.taskRateEnabled',\n 'Have a different rate depending on the task on a project, plus choose whether tasks are billable by default.',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeApprovalEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.timeApprovalEnabled',\n 'Your team can submit their weekly timehseets for review, which you can approve or reject',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeTrackingMode': {\n type: 'string',\n default: 'DEFAULT',\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.trackTimeDownToSecond': {\n type: 'boolean',\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n default: true,\n scope: ConfigurationScope.WINDOW,\n },\n};\n","import { IConfigurationNode } from '@adminide-stack/core';\nimport { IConfigurationContributionNames } from '@admin-layout/timetracker-core';\nimport { TimeTrackerProperties } from './general-settings';\nimport { TrackerPaymentProperties } from './payment-settings';\n\nexport const TimeTrackerContribution: IConfigurationNode = {\n id: IConfigurationContributionNames.timeTracker,\n type: 'object',\n properties: { ...TimeTrackerProperties, ...TrackerPaymentProperties },\n};\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n\nconst enum PayPeriod {\n NONE = 'None',\n WEEKLY = 'Weekly',\n TWICE_PER_MONTH = 'Twice per month',\n BI_WEEKLY = 'Bi-weekly',\n MONTHLY = 'Monthly',\n}\n\nconst enum PayRate {\n HOURLY = 'Hourly',\n FIXED = 'Fixed',\n}\n\nconst enum ProcessPayment {\n MANUALLY = 'Manually',\n AUTOMATICALLY = 'Automatically',\n}\n\nexport const TrackerPaymentProperties: { [path: string]: IConfigurationPropertySchema } = {\n 'timetracker.user.payment.processPayments': {\n type: 'string',\n default: ProcessPayment.MANUALLY,\n enum: [ProcessPayment.MANUALLY, ProcessPayment.AUTOMATICALLY],\n enumDescriptions: [\n localize(\n 'timetracker.payment.processPayments.manually',\n 'When set manually, time need to be updated manually.',\n ),\n localize(\n 'timetracker.payment.processPayments.automatically',\n \"When set automatically, time is marked as 'paid' in our system and if you have payroll enabled, the payment will be send.\",\n ),\n ],\n description: localize(\n 'timetracker.payment.processPayments',\n 'Choose whether you want to manually send payments or have them automatically processed.',\n ),\n scope: ConfigurationScope.WINDOW,\n overridable: true,\n },\n 'timetracker.user.payment.sendPaymentAfter': {\n type: 'number',\n default: 0,\n description: localize(\n 'timetracker.payment.sendPaymentAfter',\n 'Number of days after pay period ends, you would like to send payments for timesheets. ',\n ),\n scope: ConfigurationScope.WINDOW,\n overridable: true,\n },\n\n 'timetracker.user.payment.payPeriod': {\n type: 'string',\n enum: [PayPeriod.NONE, PayPeriod.WEEKLY, PayPeriod.TWICE_PER_MONTH, PayPeriod.BI_WEEKLY, PayPeriod.MONTHLY],\n default: PayPeriod.NONE,\n description: localize('timetracker.payment.payPeriod', 'Pay Period'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.payType': {\n type: 'string',\n enum: [PayRate.HOURLY, PayRate.FIXED],\n default: PayRate.HOURLY,\n description: localize('timetracker.payment.payType', 'Pay type'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.billRate': {\n type: 'number',\n default: 0.0,\n description: localize('timetracker.payment.billRate', 'Billing Rate'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.payRate': {\n type: 'number',\n default: 0.0,\n description: localize('timetracker.payment.payRate', 'Paying Rate'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.requireTimesheetApproval': {\n type: 'boolean',\n default: false,\n description: localize('timetracker.payment.requireTimesheetApproval', 'Whether it requires Timesheet Approval'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n // User limits\n 'timetracker.user.recurringWeeklyLimit': {\n type: 'number',\n default: null,\n description: localize(\n 'timetracker.payment.recurringWeeklyLimit',\n 'Limits how much time can be tracked each week',\n ),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.recurringDailyLimit': {\n type: 'number',\n default: null,\n description: localize(\n 'timetracker.payment.recurringDailyLimit',\n 'Limits how much time can be tracked each day',\n ),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n};\n","import { resolver as timerecordResolver } from './timerecord-resolver';\nimport { resolver as timesheetResolver } from './timesheet-resolver';\n\nexport const resolvers = [timerecordResolver, timesheetResolver];\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-underscore-dangle */\nimport * as _ from 'lodash';\nimport { withFilter } from 'graphql-subscriptions';\nimport { ITimeRecordPubSubEvents } from '@admin-layout/timetracker-core';\n\nexport const resolver = (options) => ({\n TimeRecord: {\n id: (root) => root.id || root._id,\n },\n Query: {\n getTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getTimeRecords) args %j', args);\n return timeRecordService.getTimeRecords(userContext.orgId, args.userId);\n },\n getDurationTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getDurationTimeRecords) args %j', args);\n return timeRecordService.getDurationTimeRecords(userContext.orgId, args.startTime, args.endTime, args.userId);\n },\n getPlayingTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getPlayingTimeRecord) args %j', args);\n return timeRecordService.getPlayingTimeRecord(user._id || user.sub, userContext.orgId);\n },\n },\n Mutation: {\n createTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.createTimeRecord) args %j', args);\n let { userId } = args.request;\n if (userId === undefined) userId = user._id || user.sub;\n return timeRecordService.createTimeRecord(userId, userContext.orgId, args.request);\n },\n updateTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimeRecord) args %j', args);\n let { userId } = args.request;\n if (userId === undefined) userId = user._id || user.sub;\n return timeRecordService.updateTimeRecord(userId, userContext.orgId, args.recordId, args.request);\n },\n removeTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.removeTimeRecord) args %j', args);\n const userId = user._id || user.sub;\n return timeRecordService.removeTimeRecord(userId, userContext.orgId, args.recordId);\n },\n removeDurationTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.removeDurationTimeRecords) args %j', args);\n const userId = user._id || user.sub;\n return timeRecordService.removeDurationTimeRecords(\n userId,\n userContext.orgId,\n args.startTime,\n args.endTime,\n args.projectId,\n );\n },\n },\n Subscription: {\n SubscribeToTimeTracker: {\n subscribe: withFilter(\n () =>\n options.pubsub.asyncIterator([\n ITimeRecordPubSubEvents.TimeRecordCreated,\n ITimeRecordPubSubEvents.TimeRecordUpdated,\n ITimeRecordPubSubEvents.TimeRecordDeleted,\n ]),\n async (payload, variables, context: {}) =>\n payload.SubscribeToTimeTracker.orgName === variables.orgName &&\n payload.SubscribeToTimeTracker.userId === variables.userId,\n ),\n },\n },\n});\n","/* eslint-disable no-underscore-dangle */\nexport const resolver = (options) => ({\n Query: {\n getTimesheets: (root, args, { timesheetService, userContext }) => {\n options.logger.trace('(Query.getTimeSheets) args %j', args);\n if (!args.withTotalHours) return timesheetService.getTimesheets(userContext.orgId);\n return timesheetService.getTimesheetsWithTotalHours(userContext.orgId);\n },\n getDurationTimesheets: (root, args, { timesheetService, userContext }) => {\n options.logger.trace('(Query.getDurationTimesheets) args %j', args);\n return timesheetService.getDurationTimesheets(userContext.orgId, args.start, args.end);\n },\n },\n\n Mutation: {\n createTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.createTimesheet) args %j', args);\n return timesheetService.createTimesheet(user._id || user.sub, userContext.orgId, args.request);\n },\n updateTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimesheet) args %j', args);\n return timesheetService.updateTimesheet(user._id || user.sub, userContext.orgId, args.sheetId, args.request, {\n ...userContext,\n username: user.name,\n });\n },\n removeTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.removeTimesheet) args %j', args);\n return timesheetService.removeTimesheet(user._id || user.sub, userContext.orgId, args.sheetId);\n },\n updateTimesheetStatus: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimesheetStatus) args %j', args);\n return timesheetService.updateTimesheetStatus(userContext.orgId, args.sheetId, args.state);\n },\n },\n});\n","export default \"type Tag {\\n id: ID!\\n name: String\\n}\\n\\nenum StartYearWeekType {\\n FIRST_FOURDAY_WEEK\\n FIRST_FULL_WEEK\\n FIRST_DAY_WEEK\\n}\\n\\nextend type Query {\\n getTags: [Tag]\\n getSettings: Settings\\n}\\n\";","import timeRecordSchema from './timerecord-schema.graphql';\nimport timesheetSchema from './timesheet-schema.graphql';\nimport timeTrackerSchema from './timetracker-schema.graphql';\nimport commonSchema from './common-schema.graphql';\n\nconst schema = [timeRecordSchema, timesheetSchema, timeTrackerSchema, commonSchema].join('\\n');\n\nexport { schema };\n","export default \"type TimeRecord {\\n id: ID\\n startTime: DateTime\\n endTime: DateTime\\n taskId: String\\n taskName: String\\n description: String\\n tags: [String]\\n isBillable: Boolean\\n projectId: String\\n clientId: String\\n userId: String\\n orgId: String\\n timesheetId: String\\n editable: Boolean\\n isPause: Boolean\\n isTimeout: Boolean\\n pauseStatus: [PauseStatus]\\n}\\n\\nenum PauseStatusDescription {\\n BY_USER\\n DUE_TO_INACTIVITY\\n}\\n\\ntype PauseStatus {\\n pausedTime: DateTime\\n restartTime: DateTime\\n status: PauseStatusDescription\\n}\\n\\ninput PauseStatus_Input {\\n pausedTime: DateTime\\n restartTime: DateTime\\n status: PauseStatusDescription\\n}\\n\\ninput TimeRecordRequest {\\n userId: String\\n startTime: DateTime\\n endTime: DateTime\\n taskName: String\\n description: String\\n tags: [String]\\n isBillable: Boolean\\n projectId: String\\n clientId: String\\n timesheetId: String\\n isPause: Boolean\\n isTimeout: Boolean\\n pauseStatus: [PauseStatus_Input]\\n}\\n\\n\\\"\\\"\\\"\\n Subscription event for timer\\n\\\"\\\"\\\"\\nenum TimeRecordPubSubEvents {\\n TimeRecordCreated\\n TimeRecordUpdated\\n TimeRecordStopped\\n TimeRecordDeleted\\n TimeRecordConfigurationUpdate\\n}\\n\\ntype SubscriptionTimeRecord {\\n mutation: TimeRecordPubSubEvents\\n timeRecord: TimeRecord\\n}\\n\\nextend type Query {\\n getTimeRecords(userId: String): [TimeRecord] @addAccountContext\\n getDurationTimeRecords(startTime: DateTime, endTime: DateTime, userId: String): [TimeRecord] @addAccountContext\\n getPlayingTimeRecord: TimeRecord @addAccountContext\\n}\\n\\nextend type Mutation {\\n createTimeRecord(request: TimeRecordRequest): String @addAccountContext\\n updateTimeRecord(recordId: String!, request: TimeRecordRequest): Boolean @addAccountContext\\n removeTimeRecord(recordId: String!): Boolean @addAccountContext\\n removeDurationTimeRecords(startTime: DateTime, endTime: DateTime, projectId: String): Boolean @addAccountContext\\n}\\n\\nextend type Subscription {\\n SubscribeToTimeTracker(orgName: String, userId: String): SubscriptionTimeRecord\\n}\\n\";","export default \"# scalar DateTime\\nenum TimesheetState {\\n OPEN\\n APPROVED_PENDING\\n APPROVED\\n APPROVED_FINALIZED # --- which means no going back\\n DENYED\\n SUBMITTED\\n DENYED_FINALIZED # --- which means no going back\\n}\\n\\ntype Timesheet {\\n id: ID\\n orgId: String\\n userId: String\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n timeRecordsId: [String]\\n}\\n\\ninput TimesheetCreateRequest {\\n userId: String\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n timeRecordsId: [String]\\n}\\n\\ntype TimesheetResponse {\\n id: ID\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n userId: String\\n orgId: String\\n timeRecordsId: [String]\\n totalDuration: Int\\n}\\n\\nextend type Query {\\n getTimesheets(userId: String, withTotalHours: Boolean): [TimesheetResponse] @addAccountContext\\n getDurationTimesheets(start: DateTime, end: DateTime): [TimesheetResponse] @addAccountContext\\n}\\n\\nextend type Mutation {\\n createTimesheet(request: TimesheetCreateRequest): Boolean @addAccountContext\\n updateTimesheet(sheetId: String, request: TimesheetCreateRequest): Boolean @addAccountContext\\n removeTimesheet(sheetId: String): Boolean @addAccountContext\\n updateTimesheetStatus(sheetId: String, state: TimesheetState): Boolean @addAccountContext\\n}\\n\";","export default \"type TimeTracker {\\n userId: String\\n orgId: String\\n timeRecords: [TimeRecord]\\n timesheets: [Timesheet]\\n}\\n\";","export * from './timesheet-service';\nexport * from './timerecord-service';\nexport * from './timerecord-proxy-service';\nexport * from './timesheet-proxy-service';\n","import { injectable, inject } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { ITimeRecord, ITimeRecordRequest, ITimeRecordCommands as TimeRecordCommands,\n IMoleculerTopics as MoleculerTopics } from '@admin-layout/timetracker-core';\nimport { ITimeRecordService } from '../interfaces';\n\n@injectable()\nexport class TimeRecordProxyService implements ITimeRecordService {\n private logger: Logger;\n\n private topic = MoleculerTopics.TimeRecord;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n public broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimeRecordProxyService' });\n }\n\n approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n return this.callAction(TimeRecordCommands.approveTimeRecords, { orgId, sheetId, timeRecordsId });\n }\n\n createTimeRecord(userId: string, orgId: string, request: ITimeRecordRequest): Promise<Partial<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.createTimeRecord, { userId, orgId, request });\n }\n\n disapproveTimeRecords(orgId: string, sheetId: string) {\n return this.callAction(TimeRecordCommands.disapproveTimeRecords, { orgId, sheetId });\n }\n\n getDurationTimeRecords(orgId: string, startTime: Date, endTime: Date, userId?: string): Promise<Array<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.getDurationTimeRecords, { orgId, startTime, endTime, userId });\n }\n\n getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n return this.callAction(TimeRecordCommands.getPlayingTimeRecord, { userId, orgId });\n }\n\n getTimeRecords(orgId: string, userId?: string): Promise<Array<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.getTimeRecords, { orgId, userId });\n }\n\n removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ): Promise<boolean> {\n return this.callAction(TimeRecordCommands.removeDurationTimeRecords, {\n userId,\n orgId,\n startTime,\n endTime,\n projectId,\n });\n }\n\n removeTimeRecord(userId: string, orgId: string, recordId: string): Promise<boolean> {\n return this.callAction(TimeRecordCommands.removeTimeRecord, { userId, orgId, recordId });\n }\n\n updateTimeRecord(userId: string, orgId: string, recordId: string, request: ITimeRecordRequest): Promise<boolean> {\n return this.callAction(TimeRecordCommands.updateTimeRecord, { userId, orgId, recordId, request });\n }\n\n private async callAction<T>(command: string, params?: any) {\n return this.broker.call<T, any>(`${this.topic}.${command}`, params);\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable import/no-extraneous-dependencies */\nimport { CdmLogger } from '@cdm-logger/core';\nimport { inject, injectable } from 'inversify';\nimport { ITimeRecord, ITimeRecordRequest, ITimeRecordPubSubEvents , ITimeRecordBroadcasterAction } from '@admin-layout/timetracker-core';\nimport { IMoleculerTopics } from '@admin-layout/activity-core';\nimport { PubSubEngine } from 'graphql-subscriptions';\nimport { ServiceBroker } from 'moleculer';\nimport { CommonType } from '@common-stack/core';\nimport { ITimeRecordRepository } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { ITimeRecordService } from '../interfaces/timerecord-service';\n\nconst moment = require('moment');\n\n@injectable()\nexport class TimeRecordService implements ITimeRecordService {\n private logger: CdmLogger.ILogger;\n\n constructor(\n @inject(TYPES.ITimeRecordRepository)\n protected timeRecordRepository: ITimeRecordRepository,\n\n // @inject(ServerTypes.IPreferenceEditorService)\n // private preferencesService: IPreferencesService,\n\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n\n @inject('PubSub')\n private pubsub: PubSubEngine,\n\n @inject('Logger')\n logger: CdmLogger.ILogger,\n ) {\n this.logger = logger;\n }\n\n public async getTimeRecords(orgId: string, userId: string): Promise<Array<ITimeRecord>> {\n return this.timeRecordRepository.getTimeRecords(orgId, userId);\n }\n\n public async getDurationTimeRecords(\n orgId: string,\n startTime: Date,\n endTime: Date,\n userId?: string,\n ): Promise<Array<ITimeRecord>> {\n const timeRecords = await this.timeRecordRepository.getTimeRecords(\n orgId, userId, startTime && moment(startTime).toDate(), endTime && moment(endTime).toDate()\n );\n return timeRecords.filter((r) => r.endTime !== null);\n }\n\n public async getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n return this.timeRecordRepository.getPlayingTimeRecord(userId, orgId);\n }\n\n public async createTimeRecord(userId: string, orgId: string, request: ITimeRecordRequest) {\n const data = await this.timeRecordRepository.createTimeRecord(userId, orgId, request);\n if (data) {\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordCreated,\n timeRecord: data,\n };\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordCreated, { SubscribeToTimeTracker: record });\n }\n return (data as any)._id;\n }\n\n public async updateTimeRecord(userId: string, orgId: string, recordId: string, request: ITimeRecordRequest) {\n const data = await this.timeRecordRepository.updateTimeRecord(userId, orgId, recordId, request);\n if (data) {\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordUpdated,\n timeRecord: data,\n };\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordUpdated, { SubscribeToTimeTracker: record });\n }\n return true;\n }\n\n public async removeTimeRecord(userId: string, orgId: string, recordId: string) {\n const data = await this.timeRecordRepository.removeTimeRecord(userId, orgId, recordId);\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordDeleted,\n timeRecord: data,\n };\n // remove record activities\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecord,\n { userId, orgId, recordId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n IMoleculerTopics.Activity,\n ],\n );\n\n //remove record id from timesheet\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet,\n { recordId, orgId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n ],\n );\n\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordDeleted, { SubscribeToTimeTracker: record });\n return true;\n }\n\n public async removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ) {\n const records: any = await this.timeRecordRepository.getTimeRecords(orgId, userId);\n if (records && records.length > 0) {\n const timeRecords = records.filter(\n (tr) => tr.startTime > moment(startTime) && tr.startTime < moment(endTime) && tr.projectId === projectId,\n );\n for (const record of timeRecords) {\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecord,\n { userId, orgId, recordId: record._id },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n IMoleculerTopics.Activity,\n ]\n );\n\n //remove record id from timesheet\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet,\n { recordId: record._id, orgId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n ],\n );\n }\n }\n return this.timeRecordRepository.removeDurationTimeRecords(userId, orgId, moment(startTime), moment(endTime), projectId);\n }\n\n public async approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n this.timeRecordRepository.approveTimeRecords(orgId, sheetId, timeRecordsId);\n }\n\n public async disapproveTimeRecords(orgId: string, sheetId: string) {\n this.timeRecordRepository.disapproveTimeRecords(orgId, sheetId);\n }\n}\n","import { injectable, inject } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n ITimesheetCommands as TimesheetCommands,\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCreateRequest,\n ITimesheet,\n ITimesheetState,\n} from '@admin-layout/timetracker-core';\nimport { ITimesheetService } from '../interfaces';\n\n@injectable()\nexport class TimesheetProxyService implements ITimesheetService {\n private logger: Logger;\n\n private topic = MoleculerTopics.Timesheet;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n public broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimesheetProxyService' });\n }\n\n createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest): Promise<boolean> {\n return this.callAction(TimesheetCommands.createTimesheet, { userId, orgId, request });\n }\n\n getDurationTimesheets(orgId: string, start: Date, end: Date): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getDurationTimesheets, { orgId, start, end });\n }\n\n getTimesheets(orgId: string): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getTimesheets, { orgId });\n }\n\n getTimesheetsWithTotalHours(orgId: string, userId?: string): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getTimesheetsWithTotalHours, { orgId, userId });\n }\n\n removeTimesheet(userId: string, orgId: string, sheetId: string): Promise<boolean> {\n return this.callAction(TimesheetCommands.removeTimesheet, { userId, orgId, sheetId });\n }\n\n removeTimeRecordIdFromTimesheet(recordId: string, orgId: string): Promise<boolean> {\n return this.callAction(TimesheetCommands.removeTimeRecordIdFromTimesheet, { recordId, orgId });\n }\n\n updateTimesheet(\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n ): Promise<boolean> {\n return this.callAction(TimesheetCommands.updateTimesheet, { userId, orgId, sheetId, request });\n }\n\n updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState): Promise<boolean> {\n return this.callAction(TimesheetCommands.updateTimesheetStatus, { orgId, sheetId, state });\n }\n\n private async callAction<T>(command: string, params?: any) {\n return this.broker.call<T, any>(`${this.topic}.${command}`, params);\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport * as ILogger from 'bunyan';\nimport { inject, injectable, tagged } from 'inversify';\nimport { ITimesheetState, ITimesheetCreateRequest, ITimeRecord } from '@admin-layout/timetracker-core';\nimport {\n ConfigurationTarget,\n generateOrgUri,\n IConfigFragmentName,\n ServerTypes,\n IPreferencesService,\n} from '@adminide-stack/core';\nimport { IMailServiceAction, IMailerServicesendArgs, IMoleculerServiceName } from '@container-stack/mailing-api';\nimport * as moment from 'moment';\nimport { ServiceBroker, CallingOptions } from 'moleculer';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { TYPES, EmailTemplateCodes } from '../constants';\nimport { config } from '../config';\nimport { ITimesheetService } from '../interfaces/timesheet-service';\nimport { ITimesheetRepository, ITimeRecordRepository } from '../interfaces';\n\n@injectable()\nexport class TimesheetService implements ITimesheetService {\n private logger: ILogger;\n\n constructor(\n @inject(TYPES.ITimesheetRepository)\n protected timesheetRepository: ITimesheetRepository,\n\n @inject(TYPES.ITimeRecordRepository)\n protected timeRecordRepository: ITimeRecordRepository,\n\n @inject(TYPES.ITimeRecordService)\n protected timeRecordService: ITimeRecordRepository,\n\n @inject(ServerTypes.IPreferenceEditorService)\n private preferencesService: IPreferencesService,\n\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n @inject('Logger')\n logger: ILogger,\n ) {\n this.logger = logger;\n }\n\n public async getTimesheets(orgId: string, userId?: string) {\n return this.timesheetRepository.getTimesheets(orgId, userId);\n }\n\n public async getTimesheetsWithTotalHours(orgId: string, userId?: string) {\n const timesheets = await this.timesheetRepository.getTimesheets(orgId, userId);\n const timeRecords: (ITimeRecord & { _id?: Object })[] = await this.timeRecordRepository.getTimeRecords(orgId, userId);\n return timesheets.map((timesheet) => {\n const sheetTotalDuration = timeRecords\n .filter(\n (tr) =>\n timesheet.timeRecordsId?.includes(tr._id.toString()),\n )\n .reduce(\n (duration, tr) =>\n duration + Math.floor((moment(tr.endTime).valueOf() - moment(tr.startTime).valueOf()) / 1000),\n 0,\n );\n return {\n id: timesheet.id,\n startDate: timesheet.startDate,\n endDate: timesheet.endDate,\n state: timesheet.state,\n userId: timesheet.userId,\n orgId,\n approvedBy: timesheet.approvedBy,\n approvedOn: timesheet.approvedOn,\n submittedOn: timesheet.submittedOn,\n updatedBy: timesheet.updatedBy,\n updatedOn: timesheet.updatedOn,\n timeRecordsId: timesheet.timeRecordsId,\n totalDuration: sheetTotalDuration,\n };\n });\n }\n\n public async getDurationTimesheets(orgId: string, start: Date, end: Date) {\n const timesheets = await this.timesheetRepository.getOrganizationTimesheets(orgId);\n return timesheets.filter(\n (sh) =>\n moment(start).format('YYYY-MM-DD') === moment(sh.startDate).format('YYYY-MM-DD') &&\n moment(end).format('YYYY-MM-DD') === moment(sh.endDate).format('YYYY-MM-DD'),\n );\n }\n\n public async createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest) {\n return this.timesheetRepository.createTimesheet(userId, orgId, request);\n }\n\n public async updateTimesheet(\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n ) {\n try {\n await this.timesheetRepository.updateTimesheet(orgId, sheetId, request);\n if (request.state === ITimesheetState.APPROVED) {\n // approve time records from startDate to endDate\n this.timeRecordService.approveTimeRecords(orgId, sheetId, request.timeRecordsId);\n } else if (request.state === ITimesheetState.DENYED) {\n // approve time records from startDate to endDate\n this.timeRecordService.disapproveTimeRecords(orgId, sheetId);\n }\n const resourceUri = generateOrgUri(orgId, IConfigFragmentName.settings);\n const { settings } = (await this.preferencesService.viewerSettings({\n target: ConfigurationTarget.ORGANIZATION_RESOURCE,\n settingsResource: resourceUri,\n })) as any;\n if (\n request.state === ITimesheetState.APPROVED &&\n settings.timetracker.notifications.approvalNotifications &&\n settings.timetracker.notifications.enableTimetrackerNotifications\n ) {\n const mailTopic = 'Timesheet approved';\n const mailTo = userContext.emailId;\n const mailFrom = config.MAIL_SEND_DEFAULT_EMAIL;\n const templateId = EmailTemplateCodes.TIMESHEET_APPROVAL;\n const templateVars = {\n name: userContext.username,\n startDate: moment(request.startDate).format('YYYY-MM-DD'),\n endDate: moment(request.endDate).format('YYYY-MM-DD'),\n timesheet_url: `${config.CLIENT_URL}/${orgId}/time-tracker/timeapproval`,\n contact_url: `${config.CLIENT_URL}`,\n };\n this.sendMail(mailTopic, mailTo, mailFrom, templateId, templateVars);\n }\n if (\n request.state === ITimesheetState.SUBMITTED &&\n settings.timetracker.notifications.submitNotifications &&\n settings.timetracker.notifications.enableTimetrackerNotifications\n ) {\n const mailTopic = 'Timsheet submitted';\n const mailTo = userContext.emailId;\n const mailFrom = config.MAIL_SEND_DEFAULT_EMAIL;\n const templateId = EmailTemplateCodes.SUBMIT_TIME;\n const templateVars = {\n name: userContext.username,\n startDate: moment(request.startDate).format('YYYY-MM-DD'),\n endDate: moment(request.endDate).format('YYYY-MM-DD'),\n timesheet_url: `${config.CLIENT_URL}/${orgId}/time-tracker/timeapproval`,\n contact_url: `${config.CLIENT_URL}`,\n };\n this.sendMail(mailTopic, mailTo, mailFrom, templateId, templateVars);\n\n return true;\n }\n } catch (e) {\n throw new Error(e.message);\n }\n }\n\n public async updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState) {\n try {\n const timesheet = await this.timesheetRepository.updateTimesheetStatus(orgId, sheetId, state);\n console.log('updateTimesheetStatus.timesheet =>', timesheet);\n if (state === ITimesheetState.APPROVED) {\n // approve time records from startDate to endDate\n console.log('APPROVED');\n }\n\n return true;\n } catch (e) {\n throw new Error(e.message);\n }\n }\n\n public async removeTimesheet(userId: string, orgId: string, sheetId: string) {\n return this.timesheetRepository.removeTimesheet(userId, orgId, sheetId);\n }\n\n private sendMail(topic, to, from, templateId, templateVars) {\n return this.callAction<void, IMailerServicesendArgs>(\n IMailServiceAction.send,\n {\n request: {\n topic,\n to,\n templateId,\n from,\n variables: templateVars,\n },\n },\n IMoleculerServiceName.MailService,\n );\n }\n\n public async removeTimeRecordIdFromTimesheet(recordId: string, orgId: string): Promise<boolean> {\n return await this.timesheetRepository.removeTimeRecordIdFromTimesheet(recordId, orgId);\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","import { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimeRecord } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeRecordModel extends ITimeRecord, Document {\n id?: any;\n}\n\nenum PauseStatusDescription {\n BY_USER = 'BY_USER',\n DUE_TO_INACTIVITY = 'DUE_TO_INACTIVITY'\n}\n\nconst PauseStatusSchema = new Schema({\n pausedTime: { type: Date },\n restartTime: { type: Date },\n status: { type: PauseStatusDescription },\n});\n\n// ===> TimeRecord\nconst TimeRecordSchema = new Schema({\n orgId: { type: String, index: true },\n userId: { type: String, index: true },\n startTime: { type: Date, index: true },\n endTime: { type: Date, default: null, index: true },\n taskName: { type: String },\n description: { type: String },\n taskId: { type: String }, // ----> task\n tags: { type: [String] },\n isBillable: { type: Boolean },\n projectId: { type: String }, // ----> project\n timesheetId: { type: String, index: true }, // ----> timesheet\n isPause: { type: Boolean, default: false },\n isTimeout: { type: Boolean, default: false },\n pauseStatus: { type: [PauseStatusSchema] }\n});\n\nTimeRecordSchema.index({ endTime: 1, startTime: 1, userId: 1 } as any);\n\nTimeRecordSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeRecordSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeRecordSchema.set('toObject', { virtuals: true });\n\nexport type TimeRecordsModelType = Model<ITimeRecordModel>;\n\nexport const TimeRecordsModelFunc: (db: Connection) => TimeRecordsModelType = (db) =>\n db.model<ITimeRecordModel>('timerecords', TimeRecordSchema);\n","import { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimesheet } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeSheetModel extends ITimesheet, Document {\n id?: any;\n}\n\nenum TimesheetState {\n OPEN,\n APPROVED_PENDING,\n APPROVED,\n APPROVED_FINALIZED,\n DENYED,\n SUBMITTED,\n DENYED_FINALIZED,\n}\n\n// ===> Timesheet\nconst TimesheetSchema = new Schema({\n orgId: { type: String, index: true },\n userId: { type: String, index: true },\n startDate: { type: Date },\n endDate: { type: Date },\n state: { type: TimesheetState },\n submittedOn: { type: Date },\n approvedOn: { type: Date },\n approvedBy: { type: String },\n updatedBy: { type: String },\n updatedOn: { type: Date },\n timeRecordsId: { type: [String] },\n});\n\nTimesheetSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimesheetSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimesheetSchema.set('toObject', { virtuals: true });\n\nexport type TimesheetsModelType = Model<ITimeSheetModel>;\n\nexport const TimesheetsModelFunc: (db: Connection) => TimesheetsModelType = (db) =>\n db.model<ITimeSheetModel>('timesheets', TimesheetSchema);\n","/* eslint-disable no-underscore-dangle */\nimport { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimeTracker, ITimeRecord, ITimesheet } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeRecordModel extends ITimeRecord, Document {\n id?: any;\n}\nexport interface ITimeSheetModel extends ITimesheet, Document {\n id?: any;\n}\nexport interface ITimeTrackerModel extends ITimeTracker, Document {\n id: any;\n timeRecords: ITimeRecordModel[];\n timesheets: ITimeSheetModel[];\n}\n\nenum TimesheetState {\n OPEN,\n APPROVED_PENDING,\n APPROVED,\n APPROVED_FINALIZED,\n DENYED,\n SUBMITTED,\n DENYED_FINALIZED,\n}\n\nconst TimeActivitySchema = new Schema({\n count: { type: Number },\n isPaused: { type: Boolean },\n isTimeout: { type: Boolean },\n startTime: { type: Number },\n endTime: { type: Number },\n});\n\nconst PauseStatusSchema = new Schema({\n pausedTime: { type: Date },\n restartTime: { type: Date },\n});\n\n// ===> TimeRecord\nconst TimeRecordSchema = new Schema({\n userId: { type: String, index: true },\n startTime: { type: Date },\n endTime: { type: Date, default: null },\n taskName: { type: String },\n description: { type: String },\n taskId: { type: String }, // ----> task\n tags: { type: [String] },\n isBillable: { type: Boolean },\n projectId: { type: String }, // ----> project\n timesheetId: { type: String }, // ----> timesheet\n activities: [TimeActivitySchema],\n isPause: { type: Boolean, default: false },\n isTimeout: { type: Boolean, default: false },\n pauseStatus: { type: [PauseStatusSchema] }\n});\n\nTimeRecordSchema.index({ endTime: 1, startTime: 1, userId: 1 } as any);\n\n// ===> Timesheet\nconst TimesheetSchema = new Schema({\n userId: { type: String, index: true },\n startDate: { type: Date },\n endDate: { type: Date },\n state: { type: TimesheetState },\n submittedOn: { type: Date },\n approvedOn: { type: Date },\n approvedBy: { type: String },\n updatedBy: { type: String },\n updatedOn: { type: Date },\n timeRecordsId: { type: [String] },\n});\n\nconst TimeTrackerSchema = new Schema({\n orgId: { type: String, index: true },\n timeRecords: [TimeRecordSchema],\n timesheets: [TimesheetSchema],\n});\n\nTimeRecordSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeRecordSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeTrackerSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeTrackerSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeTrackerSchema.set('toObject', { virtuals: true });\n\nexport type TimeTrackerModelType = Model<ITimeTrackerModel>;\n\nexport const TimeTrackerModelFunc: (db: Connection) => TimeTrackerModelType = (db) =>\n db.model<ITimeTrackerModel>('timetracker', TimeTrackerSchema);\n","export * from './timerecord-repository';\nexport * from './timesheet-repository';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-param-reassign */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable no-underscore-dangle */\nimport * as Logger from 'bunyan';\nimport { injectable, inject } from 'inversify';\nimport * as mongoose from 'mongoose';\nimport { ITimeRecordRequest, ITimeRecord } from '@admin-layout/timetracker-core';\nimport { ITimeRecordRepository } from '../../interfaces';\nimport { TimeRecordsModelFunc, TimeRecordsModelType, ITimeRecordModel } from '../models/timerecords-model';\nimport * as _ from 'lodash';\n\n@injectable()\nexport class TimeRecordRepository implements ITimeRecordRepository {\n private timeRecordsModel: TimeRecordsModelType;\n\n private logger: Logger;\n\n constructor(\n @inject('MongoDBConnection')\n db: mongoose.Connection,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimeRecordRepository' });\n this.timeRecordsModel = TimeRecordsModelFunc(db);\n }\n\n public async getTimeRecords(\n orgId: string, userId?: string | RegExp, from?: Date, until?: Date\n ): Promise<Array<ITimeRecord>> {\n if (!userId) {\n userId = /.*/;\n }\n let match: any = {\n 'userId': userId,\n };\n if (from) {\n match = { ...match, 'startTime': { $gte: from } };\n }\n if (until) {\n match = { ...match, 'endTime': { $lte: until } };\n }\n\n const result = await this.timeRecordsModel.aggregate([\n {\n $match: {\n orgId,\n },\n },\n {\n $match: {\n ...match,\n },\n },\n ]);\n if (result.length === 0) {\n return [];\n }\n return result;\n }\n\n public async getOrganizationTimeRecords(orgId: string): Promise<ITimeRecordModel[]> {\n const trackDoc = await this.timeRecordsModel.find({ orgId });\n if (trackDoc) {\n return trackDoc;\n }\n return [];\n }\n\n public async getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n const trackDoc = await this.timeRecordsModel.find({ orgId });\n if (trackDoc) {\n let res;\n if (trackDoc) res = trackDoc.find((tr) => tr.userId === userId && tr.endTime === null);\n return res;\n }\n return null;\n }\n\n public async createTimeRecord(\n userId: string,\n orgId: string,\n request: ITimeRecordRequest,\n ): Promise<Partial<ITimeRecord>> {\n try {\n const response = await this.timeRecordsModel.create({ ...request, orgId, userId });\n return response.toObject() as ITimeRecordModel;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimeRecord(\n userId: string,\n orgId: string,\n recordId: string,\n request: ITimeRecordRequest,\n ): Promise<Partial<ITimeRecordModel>> {\n try {\n if (recordId === null || recordId === undefined) throw new Error('TimeRecord id not specified!');\n const response = await this.timeRecordsModel.findOneAndUpdate(\n { orgId, _id: recordId },\n {\n $set: {\n ...request,\n },\n },\n {\n new: true,\n },\n );\n return response?.toObject() as ITimeRecordModel;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimeRecord(userId: string, orgId: string, recordId: string) {\n try {\n const result = await this.timeRecordsModel.remove({ userId, orgId, _id: recordId });\n if (result.n !== 1) {\n throw new Error('TimeRecord is not modified');\n }\n return { userId, orgId, _id: recordId };\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ) {\n try {\n const trackerDoc = await this.timeRecordsModel.find({ orgId });\n if (trackerDoc && trackerDoc.length > 0) {\n const timeRecords = trackerDoc.filter(\n (tr) => tr.startTime > startTime && tr.startTime < endTime && tr.projectId === projectId,\n );\n for (const record of timeRecords) {\n await this.timeRecordsModel.remove({ _id: record._id });\n }\n return true;\n }\n return false;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n try {\n for (const id of timeRecordsId) {\n const res = await this.timeRecordsModel.updateOne(\n { orgId, _id: id },\n { $set: { 'timesheetId': sheetId } }\n );\n }\n } catch (e) {\n this.logger.debug('approveTimeRecords =>', e.message);\n throw new Error(e.message);\n }\n }\n\n public async disapproveTimeRecords(orgId: string, sheetId: string) {\n try {\n const res = await this.timeRecordsModel.updateMany(\n {\n orgId,\n timesheetId: sheetId\n },\n { $set: { 'timesheetId': null } },\n {\n multi: true,\n },\n );\n } catch (e) {\n this.logger.debug('disapproveTimeRecords =>', e.message);\n throw new Error(e.message);\n }\n }\n}\n","import * as Logger from 'bunyan';\nimport { injectable, inject } from 'inversify';\nimport * as mongoose from 'mongoose';\nimport { ITimesheetCreateRequest, ITimesheetState } from '@admin-layout/timetracker-core';\nimport * as _ from 'lodash';\nimport { CommonType } from '@common-stack/core';\nimport { ServiceBroker } from 'moleculer';\nimport { TimesheetsModelFunc, TimesheetsModelType, ITimeSheetModel } from '../models/timesheets-model';\nimport { ITimesheetRepository } from '../../interfaces';\n\n@injectable()\nexport class TimesheetRepository implements ITimesheetRepository {\n private timesheetsModel: TimesheetsModelType;\n\n private logger: Logger;\n\n constructor(\n @inject('MongoDBConnection')\n db: mongoose.Connection,\n @inject('Logger')\n logger: Logger,\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n ) {\n this.logger = logger.child({ className: 'TimesheetRepository' });\n this.timesheetsModel = TimesheetsModelFunc(db);\n }\n\n public async getOrganizationTimesheets(orgId: string): Promise<ITimeSheetModel[]> {\n const trackDoc = await this.timesheetsModel.find({ orgId });\n if (trackDoc && trackDoc) {\n return trackDoc;\n }\n return [];\n }\n\n public async getTimesheets(orgId: string, userId?: string): Promise<ITimeSheetModel[]> {\n const timesheets = await this.getOrganizationTimesheets(orgId);\n return timesheets.filter((sheet) => !userId || sheet.userId === userId);\n }\n\n public async createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest): Promise<boolean> {\n try {\n const response = await this.timesheetsModel.create({ orgId, ...request });\n return true;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimesheet(orgId: string, sheetId: string, request: ITimesheetCreateRequest) {\n try {\n const response = await this.timesheetsModel.update(\n { orgId, _id: sheetId },\n { $set: { ...request } },\n );\n return response;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState) {\n try {\n const response = await this.timesheetsModel.update(\n {\n orgId,\n _id: sheetId,\n },\n {\n $set: {\n 'status': state,\n },\n },\n );\n return response;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimesheet(userId: string, orgId: string, sheetId: string): Promise<boolean> {\n try {\n await this.timesheetsModel.remove({ orgId, _id: sheetId });\n return true;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimeRecordIdFromTimesheet(recordId: string, orgId: string) {\n const res = await this.timesheetsModel.updateMany(\n { orgId, timeRecordsId: recordId },\n { $pullAll: { timeRecordsId: [recordId] } }\n );\n return true;\n }\n}\n","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@vscode-alt/monaco-editor/esm/vs/nls\");","module.exports = require(\"@workbench-stack/core\");","module.exports = require(\"envalid\");","module.exports = require(\"graphql-subscriptions\");","module.exports = require(\"inversify\");","module.exports = require(\"moleculer\");","module.exports = require(\"moment\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/config/config.ts","webpack:///./src/config/index.ts","webpack:///./src/constants/constants.ts","webpack:///./src/constants/index.ts","webpack:///./src/containers/containers.ts","webpack:///./src/containers/index.ts","webpack:///./src/index.ts","webpack:///./src/initialization/index.ts","webpack:///./src/initialization/service-initialization.ts","webpack:///./src/migration/approval_notification.ejs","webpack:///./src/migration/index.ts","webpack:///./src/migration/mail-template.ts","webpack:///./src/migration/submit_notification.ejs","webpack:///./src/module.ts","webpack:///./src/plugins/index.ts","webpack:///./src/plugins/timerecord-moleculer-service.ts","webpack:///./src/plugins/timesheet-moleculer-service.ts","webpack:///./src/preferences/index.ts","webpack:///./src/preferences/permissions/index.ts","webpack:///./src/preferences/permissions/timing-permissions-contribution.ts","webpack:///./src/preferences/permissions/timing-roles-permission-overwrite.ts","webpack:///./src/preferences/settings/general-settings.ts","webpack:///./src/preferences/settings/index.ts","webpack:///./src/preferences/settings/payment-settings.ts","webpack:///./src/resolvers/index.ts","webpack:///./src/resolvers/timerecord-resolver.ts","webpack:///./src/resolvers/timesheet-resolver.ts","webpack:///./src/schema/common-schema.graphql","webpack:///./src/schema/index.ts","webpack:///./src/schema/timerecord-schema.graphql","webpack:///./src/schema/timesheet-schema.graphql","webpack:///./src/schema/timetracker-schema.graphql","webpack:///./src/services/index.ts","webpack:///./src/services/timerecord-proxy-service.ts","webpack:///./src/services/timerecord-service.ts","webpack:///./src/services/timesheet-proxy-service.ts","webpack:///./src/services/timesheet-service.ts","webpack:///./src/store/models/timerecords-model.ts","webpack:///./src/store/models/timesheets-model.ts","webpack:///./src/store/models/timetracker-model.ts","webpack:///./src/store/repository/index.ts","webpack:///./src/store/repository/timerecord-repository.ts","webpack:///./src/store/repository/timesheet-repository.ts","webpack:///external \"@adminide-stack/core\"","webpack:///external \"@common-stack/core\"","webpack:///external \"@common-stack/server-core\"","webpack:///external \"@vscode-alt/monaco-editor/esm/vs/nls\"","webpack:///external \"@workbench-stack/core\"","webpack:///external \"envalid\"","webpack:///external \"graphql-subscriptions\"","webpack:///external \"inversify\"","webpack:///external \"moleculer\"","webpack:///external \"moment\"","webpack:///external \"mongoose\""],"names":[],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/index.ts\");\n","/* eslint-disable import/no-extraneous-dependencies */\nimport * as envalid from 'envalid';\n\nconst { str, num } = envalid;\n\nexport const config = envalid.cleanEnv(process.env, {\n MAIL_SEND_DEFAULT_EMAIL: str(),\n CLIENT_URL: str(),\n});\n","export * from './config';\n","export const DEFAULT_USER = '123';\nexport const DEFAULT_ORG = '123';\nexport const TYPES = {\n ITimeTrackerService: Symbol('ITimeTrackerService'),\n ITimeRecordService: Symbol('ITimeRecordService'),\n ITimesheetService: Symbol('ITimesheetService'),\n ITimeTrackerRepository: Symbol('ITimeTrackerRepository'),\n ITimeRecordRepository: Symbol('ITimeRecordRepository'),\n ITimesheetRepository: Symbol('ITimesheetRepository'),\n ITaskRepository: Symbol('ITaskRepository'),\n ITaskService: Symbol('ITaskService'),\n};\n\nexport const EmailTemplateCodes = {\n TIMESHEET_APPROVAL: 'TIMESHEET_APPROVAL_EMAIL_TEMPLATE',\n ENABLE_TIMETRACKER: 'ENABLE_TIMETRACKER_EMAIL_TEMPLATE',\n SUBMIT_TIME: 'SUBMIT_TIME_EMAIL_TEMPLATE',\n TIMETRACKING_STOP: 'TIMETRACKING_STOP_TEMPLATE',\n};\n\nexport enum IPreDefineAccountPermissions {\n // others\n viewOthersTimeTracker = 'organization.timetracker.others.view',\n createOthersTimeTracker = 'organization.timetracker.others.create',\n editOthersTimeTracker = 'organization.timetracker.others.edit',\n deleteOthersTimeTracker = 'organization.timetracker.others.delete',\n manageOthersTimeTracker = 'organization.timetracker.others.manage',\n\n // self\n viewSelfTimeTracker = 'organization.timetracker.self.view',\n createSelfTimeTracker = 'organization.timetracker.self.create',\n editSelfTimeTracker = 'organization.timetracker.self.edit',\n deleteSelfTimeTracker = 'organization.timetracker.self.delete',\n manageSelfTimeTracker = 'organization.timetracker.self.manage',\n}\n","export * from './constants';\n","import { ContainerModule, interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { TYPES } from '../constants';\nimport { TimeRecordProxyService, TimesheetProxyService, TimeRecordService, TimesheetService } from '../services';\nimport { TimeRecordRepository, TimesheetRepository } from '../store/repository';\nimport { TimesheetApprovalMailTemplate, TimesheetSubmitMailTemplate } from '../migration';\n\nexport const timeTrackerStoreModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordRepository).to(TimeRecordRepository).inSingletonScope();\n bind(TYPES.ITimesheetRepository).to(TimesheetRepository).inSingletonScope();\n });\nexport const timeTrackerMailModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind('MongodbMigration').to(TimesheetApprovalMailTemplate).whenTargetNamed(TimesheetApprovalMailTemplate.name);\n bind('MongodbMigration').to(TimesheetSubmitMailTemplate).whenTargetNamed(TimesheetSubmitMailTemplate.name);\n });\n\nexport const timeTrackerModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordService).to(TimeRecordService).inSingletonScope();\n bind(TYPES.ITimesheetService).to(TimesheetService).inSingletonScope();\n });\n\nexport const timeTrackerProxyModule: (settings: any) => ContainerModule = (setting) =>\n new ContainerModule((bind: interfaces.Bind) => {\n bind(TYPES.ITimeRecordService).to(TimeRecordProxyService).inSingletonScope();\n bind(TYPES.ITimesheetService).to(TimesheetProxyService).inSingletonScope();\n });\n","export * from './containers';\n","import { Feature } from '@common-stack/server-core';\nimport TimeTracker from './module';\n\nexport * from './constants';\nexport * from './store/repository';\nexport * from './store/models/timetracker-model';\nexport * from './containers';\n\nexport default new Feature(TimeTracker);\n","export * from './service-initialization';\n","/* eslint-disable import/no-extraneous-dependencies */\nimport { IRegistryExtensions as RegistryExtensions, IConfigurationRegistry, IRegistry } from '@adminide-stack/core';\nimport * as ILogger from 'bunyan';\nimport { TYPES as serverTypes, Schemas } from '@workbench-stack/core';\nimport { CommonType } from '@common-stack/core';\nimport { interfaces } from 'inversify';\nimport { TimeTrackerContribution } from '../preferences';\n\nexport const mainLoadConfigurationPre = async (_, container: interfaces.Container) => {\n const logger = container.get<ILogger>(CommonType.LOGGER);\n logger.info('PRESTART START: -- load TimeTrackerContribution to registry');\n\n const registry = container.get<IRegistry>(serverTypes.IRegistry);\n const configurationRegistry = registry.as<IConfigurationRegistry>(RegistryExtensions.Configuration);\n configurationRegistry.registerConfiguration(TimeTrackerContribution);\n logger.info('PRESTART ENDS: -- load TimeTrackerContribution to registry');\n};\n","export default \"<html>\\n <head>\\n\\n </head>\\n\\n <body>\\n <h1> Timesheet has approved! </h1>\\n <p> Dear <%= name %>! </p>\\n <p> Your timesheet from <bold> <%= startDate %> </bold> to <bold> <%= endDate %> </bold> has been approved! </p>\\n You can see timesheet details <a href=\\\"<%= timesheet_url %>\\\" __target=\\\"blank\\\"> here </a>\\n\\n <br /> <br />\\n <p> If you have any problem, please <a href=\\\"<%= contact_url %>\\\"> Contact us </a></p>\\n </body>\\n</html>\";","export * from './mail-template'","/* eslint-disable max-classes-per-file */\nimport * as Logger from 'bunyan';\nimport { injectable, inject, tagged } from 'inversify';\nimport { IDatabaseMigration } from '@adminide-stack/core';\nimport { IMoleculerServiceName, IMailServiceAction, IMailerServicesendArgs } from '@container-stack/mailing-api';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { CallingOptions, ServiceBroker } from 'moleculer';\nimport { EmailTemplateCodes } from '../constants';\nimport { config } from '../config';\n\nconst TimeApprovalTemplate = require('./approval_notification.ejs');\nconst TimeSubmitTemplate = require('./submit_notification.ejs');\n\n@injectable()\nexport class TimesheetApprovalMailTemplate implements IDatabaseMigration {\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n ) { }\n\n get id() {\n return 'EmailTemplateCodes_05012021';\n }\n\n public async up(): Promise<void> {\n const requestData = {\n engine: 'ejs',\n code: EmailTemplateCodes.TIMESHEET_APPROVAL,\n description: 'Timesheet approved',\n html: TimeApprovalTemplate.default,\n text: 'Timesheet approved',\n name: 'Timesheet approval notification',\n topic: 'Timesheet approved.',\n };\n\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n\n@injectable()\nexport class TimesheetSubmitMailTemplate implements IDatabaseMigration {\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n protected broker: ServiceBroker,\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n ) { }\n\n get id() {\n return 'TimesheetSubmitMailTemplate_05012021';\n }\n\n public async up(): Promise<void> {\n const requestData = {\n engine: 'ejs',\n code: EmailTemplateCodes.SUBMIT_TIME,\n description: 'Timesheet submitted',\n html: TimeSubmitTemplate.default,\n text: 'Timesheet submitted',\n name: 'Timesheet submit notification',\n topic: 'Timesheet submitted.',\n };\n if (config.isDev) {\n await this.broker.waitForServices('MailService');\n }\n\n return this.callAction(\n IMailServiceAction.saveTemplate,\n { request: requestData },\n IMoleculerServiceName.MailService,\n );\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","export default \"<html>\\n <head>\\n\\n </head>\\n\\n <body>\\n <h1> Timesheet has submitted! </h1>\\n <p> Dear <%= name %>! </p>\\n <p> Your timesheet from <bold> <%= startDate %> </bold> to <bold> <%= endDate %> </bold> has been submitted! </p>\\n You can see timesheet details <a href=\\\"<%= timesheet_url %>\\\" __target=\\\"blank\\\"> here </a>\\n\\n <br /> <br />\\n <p> If you have any problem, please <a href=\\\"<%= contact_url %>\\\"> Contact us </a></p>\\n </body>\\n</html>\";","import { Feature } from '@common-stack/server-core';\nimport { interfaces } from 'inversify';\nimport { TaggedType } from '@common-stack/core';\nimport { schema } from './schema';\nimport { timeTrackerModule, timeTrackerProxyModule, timeTrackerMailModule, timeTrackerStoreModule } from './containers';\nimport { resolvers } from './resolvers';\nimport { TYPES } from './constants';\nimport { mainLoadConfigurationPre } from './initialization';\nimport { TimeTrackerRolesContribution, TimeTrackerRolesPermissionOverwrite } from './preferences';\nimport { TimeRecordMoleculerService, TimesheetMoleculerService } from './plugins';\n\nconst createServiceFunc = (container: interfaces.Container) => ({\n timeRecordService: container.get(TYPES.ITimeRecordService),\n timesheetService: container.get(TYPES.ITimesheetService),\n});\n\nexport default new Feature({\n schema,\n createResolversFunc: resolvers,\n createContainerFunc: [timeTrackerProxyModule, timeTrackerMailModule],\n createHemeraContainerFunc: [timeTrackerModule, timeTrackerStoreModule],\n createServiceFunc,\n addBrokerClientServiceClass: [TimeRecordMoleculerService, TimesheetMoleculerService],\n preStartFunc: [mainLoadConfigurationPre],\n addPermissions: {\n createPermissions: [TimeTrackerRolesContribution],\n },\n rolesUpdate: {\n overwriteRolesPermissions: TimeTrackerRolesPermissionOverwrite,\n },\n});\n","export * from './timesheet-moleculer-service';\nexport * from './timerecord-moleculer-service';\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ITimeRecordRequest, IMoleculerTopics as MoleculerTopics, ITimeRecordCommands as TimeRecordCommands,\n} from '@admin-layout/timetracker-core';\nimport { ITimeRecordService } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport class TimeRecordMoleculerService extends Service {\n private timerecordService: ITimeRecordService;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container}) {\n super(broker);\n const topic = MoleculerTopics.TimeRecord;\n this.timerecordService = container.get<ITimeRecordService>(TYPES.ITimeRecordService);\n this.parseServiceSchema({\n name: topic,\n actions: {\n [TimeRecordCommands.getTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, userId?: string }>) => {\n return await this.timerecordService.getTimeRecords(ctx.params.orgId, ctx.params.userId);\n }\n },\n [TimeRecordCommands.getDurationTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, startTime: Date, endTime: Date, userId?: string }>) => {\n return await this.timerecordService.getDurationTimeRecords(\n ctx.params.orgId, ctx.params.startTime, ctx.params.endTime, ctx.params.userId\n );\n }\n },\n [TimeRecordCommands.getPlayingTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string }>) => {\n return await this.timerecordService.getPlayingTimeRecord(ctx.params.userId, ctx.params.orgId);\n }\n },\n [TimeRecordCommands.createTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, request: ITimeRecordRequest }>) => {\n return await this.timerecordService.createTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.request\n );\n }\n },\n [TimeRecordCommands.updateTimeRecord]: {\n handler: async (ctx: Context<{\n userId: string, orgId: string, recordId: string, request: ITimeRecordRequest,\n }>) => {\n return await this.timerecordService.updateTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.recordId, ctx.params.request\n );\n }\n },\n [TimeRecordCommands.removeTimeRecord]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, recordId: string }>) => {\n return await this.timerecordService.removeTimeRecord(\n ctx.params.userId, ctx.params.orgId, ctx.params.recordId\n );\n }\n },\n [TimeRecordCommands.removeDurationTimeRecords]: {\n handler: async (ctx: Context<{\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n }>) => {\n return await this.timerecordService.removeDurationTimeRecords(\n ctx.params.userId, ctx.params.orgId, ctx.params.startTime, ctx.params.endTime, ctx.params.projectId\n );\n }\n },\n [TimeRecordCommands.approveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string, timeRecordsId: string[] }>) => {\n return await this.timerecordService.approveTimeRecords(\n ctx.params.orgId, ctx.params.sheetId, ctx.params.timeRecordsId\n );\n }\n },\n [TimeRecordCommands.disapproveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string }>) => {\n return await this.timerecordService.disapproveTimeRecords(ctx.params.orgId, ctx.params.sheetId);\n }\n },\n },\n });\n }\n}\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport {\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCommands as TimesheetCommands,\n ITimesheetCreateRequest, ITimesheetState,\n ITimeRecordBroadcasterAction\n} from '@admin-layout/timetracker-core';\nimport { ClientTypes } from '@common-stack/core';\nimport { ITimesheetService } from '../interfaces';\nimport { TYPES } from '../constants';\n\nexport class TimesheetMoleculerService extends Service {\n private timesheetService: ITimesheetService;\n\n private container: Container;\n\n constructor(broker: ServiceBroker, { container, ...settings }: { container: Container}) {\n super(broker);\n this.container = container;\n\n const topic = MoleculerTopics.Timesheet;\n this.container.bind(ClientTypes.ApolloClient).toConstantValue(this.apolloClient);\n\n this.timesheetService = this.container.get<ITimesheetService>(TYPES.ITimesheetService)\n this.parseServiceSchema({\n name: topic,\n events: {\n [ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet]: {\n handler: async (ctx: Context<{ recordId: string, orgId: string }>) => {\n return await this.timesheetService.removeTimeRecordIdFromTimesheet(ctx.params.recordId, ctx.params.orgId);\n }\n }\n },\n actions: {\n [TimesheetCommands.getTimesheets]: {\n handler: async (ctx: Context<{ orgId: string }>) => {\n return await this.timesheetService.getTimesheets(ctx.params.orgId);\n }\n },\n [TimesheetCommands.getTimesheetsWithTotalHours]: {\n handler: async (ctx: Context<{ orgId: string, userId?: string }>) => {\n return await this.timesheetService.getTimesheetsWithTotalHours(ctx.params.orgId, ctx.params.userId);\n }\n },\n [TimesheetCommands.getDurationTimesheets]: {\n handler: async (ctx: Context<{ orgId: string, start: Date, end: Date }>) => {\n return await this.timesheetService.getDurationTimesheets(\n ctx.params.orgId, ctx.params.start, ctx.params.end\n );\n }\n },\n [TimesheetCommands.createTimesheet]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, request: ITimesheetCreateRequest }>) => {\n return await this.timesheetService.createTimesheet(\n ctx.params.userId, ctx.params.orgId, ctx.params.request\n );\n }\n },\n [TimesheetCommands.updateTimesheet]: {\n handler: async (ctx: Context<{\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n }>) => {\n return await this.timesheetService.updateTimesheet(\n ctx.params.userId, ctx.params.orgId, ctx.params.sheetId, ctx.params.request, ctx.params.userContext\n );\n }\n },\n [TimesheetCommands.removeTimesheet]: {\n handler: async (ctx: Context<{ userId: string, orgId: string, sheetId: string }>) => {\n return await this.timesheetService.removeTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.sheetId);\n }\n },\n [TimesheetCommands.updateTimesheetStatus]: {\n handler: async (ctx: Context<{ orgId: string, sheetId: string, state: ITimesheetState }>) => {\n return await this.timesheetService.updateTimesheetStatus(\n ctx.params.orgId, ctx.params.sheetId, ctx.params.state\n );\n }\n },\n },\n });\n }\n}\n","export * from './settings';\nexport * from './permissions';\n","export * from './timing-permissions-contribution';\nexport * from './timing-roles-permission-overwrite';\n","import { ConfigurationScope, IPermissionType } from '@adminide-stack/core';\nimport * as nls from '@vscode-alt/monaco-editor/esm/vs/nls';\nimport { IRoles } from '@common-stack/server-core';\nimport { IPreDefineAccountPermissions } from '../../constants';\n\nconst extraParams = {\n type: 'string',\n enum: [IPermissionType.Allow, IPermissionType.Deny, IPermissionType.NotSet],\n default: IPermissionType.NotSet,\n scope: ConfigurationScope.WINDOW,\n};\nexport const TimeTrackerRolesContribution: IRoles<ConfigurationScope> = {\n // others\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.viewOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to view Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.viewOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to view Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.viewOthersTimeTracker,\n 'View an Time Tracker, Time Reports and Timesheet of others.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.createOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.createOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to create Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.createOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to create Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.createOthersTimeTracker,\n 'Create Time Tracker, Reports and Timesheet of other members.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.editOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.editOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to edit Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.editOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to edit Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.editOthersTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of other members',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.manageOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to manage Time Tracker, Reports and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.manageOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to manage Time Tracker, Reports and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.manageOthersTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of other members',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.deleteOthersTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to delete Time Tracker and Timesheet of other members.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.deleteOthersTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to delete Time Tracker and Timesheet of other members.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.deleteOthersTimeTracker,\n 'Delete Time Tracker and Timesheet of other members.',\n ),\n ...extraParams,\n },\n // self\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.viewSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to view Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.viewSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to view Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.viewSelfTimeTracker,\n 'View an Time Tracker, Time Reports and Timesheet of self',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.createSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.createSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to create Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.createSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to create Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.createSelfTimeTracker,\n 'Create Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.editSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.editSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to edit Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.editSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to edit Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.editSelfTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.manageSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to manage Time Tracker, Reports and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.manageSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to manage Time Tracker, Reports and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.manageSelfTimeTracker,\n 'Manage Time Tracker, Reports and Timesheet of self.',\n ),\n ...extraParams,\n },\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: {\n enumDescriptions: [\n nls.localize(\n `${IPreDefineAccountPermissions.deleteSelfTimeTracker}.${IPermissionType.Allow}`,\n 'Has ability to delete Time Tracker and Timesheet of self.',\n ),\n nls.localize(\n `${IPreDefineAccountPermissions.deleteSelfTimeTracker}.${IPermissionType.Deny}`,\n 'No ability to delete Time Tracker and Timesheet of self.',\n ),\n ],\n description: nls.localize(\n IPreDefineAccountPermissions.deleteSelfTimeTracker,\n 'Delete Time Tracker and Timesheet of self.',\n ),\n ...extraParams,\n },\n};\n","import { IPermissionType, IApplicationRoles } from '@adminide-stack/core';\nimport { IPreDefineAccountPermissions } from '../../constants';\n\nexport const TimeTrackerRolesPermissionOverwrite = {\n [IApplicationRoles.OWNER]: {\n // self\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Allow,\n\n // others\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.ADMIN]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.ORGANIZATION_MANAGER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Allow,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.PROJECT_ADMIN]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Allow,\n },\n [IApplicationRoles.MEMBER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.PROJECT_VIEWER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.USER]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Allow,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n [IApplicationRoles.GUEST]: {\n [IPreDefineAccountPermissions.viewSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteSelfTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageSelfTimeTracker]: IPermissionType.Deny,\n\n [IPreDefineAccountPermissions.viewOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.createOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.editOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.deleteOthersTimeTracker]: IPermissionType.Deny,\n [IPreDefineAccountPermissions.manageOthersTimeTracker]: IPermissionType.Deny,\n },\n};\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n// const localize = (id, defaultMessage) => defineMessages({\n// id,\n// defaultMessage,\n\n// });\nconst enum TimeFormat {\n ROUNDED_0_00_12 = 'h.mm A',\n ROUNDED_0_00_24 = 'H.mm',\n PRECISE_00_00_00_12 = 'hh:mm:ss A',\n PRECISE_00_00_00_24 = 'HH:mm:ss',\n ROUNDED_UP_00_00_12 = 'hh:mm A',\n ROUNDED_UP_00_00_24 = 'HH:mm',\n}\n\nconst enum GroupProjectsBy {\n CLIENT = 'Client',\n CATEGORY = 'Category',\n CUSTOM = 'Custom',\n}\nconst enum DateFormat {\n USFORMAT = 'MM-DD-YYYY',\n UKFORMAT = 'DD-MM-YYYY',\n ISOFORMAT = 'YYYY-MM-DD',\n}\n\nexport const enum WeekDay {\n SUN = 'Sunday',\n MON = 'Monday',\n TUE = 'Tuesday',\n WED = 'Wednesday',\n THU = 'Thursday',\n FRI = 'Friday',\n SAT = 'Saturday',\n}\n\nconst enum FristWeekOfTheYear {\n FIRST_DAY = 'Week containing first day of the year',\n FIRST_FULL_7DAY = 'First full seven-day week in January',\n FIRST_4_DAY = 'First four-day week in January',\n}\n\nconst enum TimeRoundingUpToValue {\n IN_MINUTES_15 = 15 * 60,\n IN_MINUTES_1 = 1 * 60,\n IN_MINUTES_5 = 5 * 60,\n IN_MINUTES_6 = 6 * 60,\n IN_MINUTES_10 = 10 * 60,\n IN_MINUTES_12 = 12 * 60,\n IN_MINUTES_30 = 30 * 60,\n IN_HOUR_1 = 1 * 60 * 60,\n IN_HOUR_4 = 4 * 60 * 60,\n}\n\nconst enum TimeRoundedType {\n ROUND_UP_TO = 'Round up to',\n ROUND_TO_NEAREST = 'Round to nearest',\n ROUND_DOWN_TO = 'Roudn down to',\n}\nexport const TimeTrackerProperties: { [path: string]: IConfigurationPropertySchema } = {\n // notifications\n 'timetracker.notifications.enableTimetrackerNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.timeTrackingNotification',\n 'Allow timetracker emails to be send',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n\n 'timetracker.notifications.timeTrackingNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.timeTrackingNotification',\n 'An email will be send when tracking is stopped by the system due to lack of user response',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.notifications.approvalNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.approvalNotifications',\n 'An email will be sent to me when my timesheet is approved',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.notifications.submitNotifications': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.notifications.submitNotifications',\n 'An email will be sent to me when team member submits time (Approval Managers only)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n\n // Time Tracking\n 'timetracker.activity.autoStop': {\n type: 'number',\n default: 24,\n description: localize(\n 'timetracker.activity.autoStop',\n 'Tracking will stop once maximum tack length has been exceeded',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.activity.waitingTime': {\n type: 'number',\n default: 120,\n description: localize(\n 'timetracker.activity.waitingTime',\n 'Enable activity check on the time tracking to ask if you are still tracking after the choosen idle time (in seconds)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.activity.maxTimeInADay': {\n type: 'number',\n default: 120,\n description: localize(\n 'timetracker.activity.maxTimeInADay',\n 'Enable activity check on the time tracking upto choosen max time in a day(in seconds). It can change upto 1440',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.timerecord.automaticLock': {\n type: 'string',\n default: null,\n description: localize(\n 'accountNotificationPrimaryEmail',\n 'Prevent regular users from editing their past time or adding new entries to past dates',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.billable': {\n type: 'boolean',\n default: true,\n description: localize(\n 'timetracker.project.billable',\n 'When you create a project, make it billable so its time entries are set as billable by default.',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.daysAllowedToWork': {\n type: ['string'],\n default: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI],\n enum: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI, WeekDay.SAT, WeekDay.SUN],\n description: localize('timetracker.project.recurringDailyLimit', 'Select working day'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.firstDayOfTheWeek': {\n type: 'string',\n enum: [WeekDay.MON, WeekDay.TUE, WeekDay.WED, WeekDay.THU, WeekDay.FRI, WeekDay.SAT, WeekDay.SUN],\n default: WeekDay.MON,\n description: localize('timetracker.project.firstDayOfTheWeek', 'First day of the week'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.firstWeekOfTheyear': {\n type: 'string',\n enum: [FristWeekOfTheYear.FIRST_4_DAY, FristWeekOfTheYear.FIRST_FULL_7DAY, FristWeekOfTheYear.FIRST_DAY],\n default: FristWeekOfTheYear.FIRST_4_DAY,\n enumDescriptions: [\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_4_DAY',\n 'The week regarded to be the first week of the year is that which contains at least 4 days of the new year.',\n ),\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_FULL_7DAY',\n 'The week regarded as the first week of the year is that which contains 7 full days in the new year.',\n ),\n localize(\n 'timetracker.project.firstWeekOfTheyear.FIRST_DAY',\n 'The week regarded as the first week of the years is that which contains at least one-day of the new year.',\n ),\n ],\n description: localize(\n 'timetracker.project.firstWeekOfTheyear',\n 'You can set how you start or view the first calendar week of the year. This will be visible on Timetracker pages like \"Reports\" or \"Calender View\".',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeFormat': {\n type: 'string',\n enum: [\n TimeFormat.ROUNDED_0_00_12,\n TimeFormat.ROUNDED_0_00_24,\n TimeFormat.PRECISE_00_00_00_12,\n TimeFormat.PRECISE_00_00_00_24,\n TimeFormat.ROUNDED_UP_00_00_12,\n TimeFormat.ROUNDED_UP_00_00_24,\n ],\n default: TimeFormat.PRECISE_00_00_00_12,\n enumDescriptions: [\n localize('timetracker.project.timeFormat.ROUNDED_0_00_12', '\"0.00 AM/PM\" (12 hours rounded)'),\n localize('timetracker.project.timeFormat.ROUNDED_0_00_24', '\"0.00\" (24 hours rounded)'),\n localize(\n 'timetracker.project.timeFormat.PRECISE_00_00_00_12',\n '\"00:00:00 AM/PM\" (precise 12 hours format)',\n ),\n localize('timetracker.project.timeFormat.PRECISE_00_00_00_24', '\"13:00:00\" (precise 24 hours format)'),\n localize('timetracker.project.timeFormat.ROUNDED_UP_00_00_12', '\"00:00 AM/PM\" (rounded up)'),\n localize('timetracker.project.timeFormat.ROUNDED_UP_00_00_24', '\"13:00\" (rounded up)'),\n ],\n description: localize(\n 'timetracker.project.timeFormat',\n 'Select the format in which you want your entry represented',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.dateFormat': {\n type: 'string',\n enum: [DateFormat.USFORMAT, DateFormat.UKFORMAT, DateFormat.ISOFORMAT],\n default: DateFormat.USFORMAT,\n enumDescriptions: [\n localize('timetracker.project.dateFormat.USFORMAT', '\"MM-DD-YYYY\" (US standard)'),\n localize('timetracker.project.dateFormat.UKFORMAT', '\"DD-MM-YYYY\" (UK standard)'),\n localize('timetracker.project.dateFormat.ISOFORMAT', '\"YYYY-MM-DD\" (ISO FORMAT)'),\n ],\n description: localize(\n 'timetracker.project.dateFormat',\n 'Select the format in which you want your entry represented',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.roundedToNearest': {\n type: 'string',\n enum: [\n TimeRoundingUpToValue.IN_MINUTES_1,\n TimeRoundingUpToValue.IN_MINUTES_5,\n TimeRoundingUpToValue.IN_MINUTES_6,\n TimeRoundingUpToValue.IN_MINUTES_10,\n TimeRoundingUpToValue.IN_MINUTES_12,\n TimeRoundingUpToValue.IN_MINUTES_15,\n TimeRoundingUpToValue.IN_MINUTES_30,\n TimeRoundingUpToValue.IN_HOUR_1,\n TimeRoundingUpToValue.IN_HOUR_4,\n ],\n default: TimeRoundingUpToValue.IN_MINUTES_15,\n enumDescriptions: [\n localize('TimeRoundingUpToValue.IN_MINUTES_1', '1 minute'),\n localize('TimeRoundingUpToValue.IN_MINUTES_5', '5 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_6', '6 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_10', '10 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_12', '12 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_15', '15 minutes'),\n localize('TimeRoundingUpToValue.IN_MINUTES_30', '30 minutes'),\n localize('TimeRoundingUpToValue.IN_HOUR_1', '1 hour'),\n localize('TimeRoundingUpToValue.IN_HOUR_4', '4 hours'),\n ],\n description: localize('timetracker.project.roundedToNearest', 'Round to nearest selected minute/hour'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.roundedType': {\n type: 'string',\n enum: [TimeRoundedType.ROUND_UP_TO, TimeRoundedType.ROUND_TO_NEAREST, TimeRoundedType.ROUND_DOWN_TO],\n default: TimeRoundedType.ROUND_TO_NEAREST,\n enumDescriptions: [\n localize(\n 'timetracker.project.roundedType.ROUND_UP_TO',\n 'e.g. if you set the interval to 30min, a 26min entry will show up in report as 30min',\n ),\n localize(\n 'timetracker.project.roundedType.ROUND_TO_NEAREST',\n 'e.g. if you set theinterval to 30min, a 14min entry will up as 0min and 26min entry as 30min',\n ),\n localize(\n 'timetracker.project.roundedType.ROUND_DOWN_TO',\n 'e.g. if you set the interval to 30min, a 26min entry will show up in reports as 0min',\n ),\n ],\n description: localize('timetracker.project.roundedType', 'Select the time rounding type'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.report.timeRoundingInReports': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.report.timeRoundingInReports',\n 'Round time in reports up, down, or to nearest X minutes',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n // 'timetracker.project.favorites': {\n // type: 'boolean',\n // default: true,\n // description: localize(\n // 'timetracker.project.favorites',\n // 'Let people mark their most used projects as favorite so they appear at the top of their project list when tracking time.',\n // ),\n // scope: ConfigurationScope.RESOURCE,\n // },\n 'timetracker.project.groupingLabel': {\n type: 'string',\n default: GroupProjectsBy.CLIENT,\n enum: [GroupProjectsBy.CLIENT, GroupProjectsBy.CATEGORY, GroupProjectsBy.CUSTOM],\n description: localize(\n 'timetracker.project.groupingLabel',\n 'Group Project by clients or departments, you can change the lable to somethign else',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.pickerSpecialFilter': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.pickerSpecialFilter',\n 'Quickly find the right task in project picker by using the task@project syntax.',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.timerecord.screenshotsEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.timerecord.screenshotsEnabled',\n 'Generate screenshots every 5 minutes while the timer is running (desktop app only)',\n ),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.taskBillableEnabled': {\n type: 'boolean',\n default: false,\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n scope: ConfigurationScope.WINDOW,\n },\n 'timetracker.project.taskRateEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.taskRateEnabled',\n 'Have a different rate depending on the task on a project, plus choose whether tasks are billable by default.',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeApprovalEnabled': {\n type: 'boolean',\n default: false,\n description: localize(\n 'timetracker.project.timeApprovalEnabled',\n 'Your team can submit their weekly timehseets for review, which you can approve or reject',\n ),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.timeTrackingMode': {\n type: 'string',\n default: 'DEFAULT',\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n scope: ConfigurationScope.RESOURCE,\n },\n 'timetracker.project.trackTimeDownToSecond': {\n type: 'boolean',\n description: localize('SubscribeToBillingNotifications', 'Subscribe to all billing changes'),\n default: true,\n scope: ConfigurationScope.WINDOW,\n },\n};\n","import { IConfigurationNode } from '@adminide-stack/core';\nimport { IConfigurationContributionNames } from '@admin-layout/timetracker-core';\nimport { TimeTrackerProperties } from './general-settings';\nimport { TrackerPaymentProperties } from './payment-settings';\n\nexport const TimeTrackerContribution: IConfigurationNode = {\n id: IConfigurationContributionNames.timeTracker,\n type: 'object',\n properties: { ...TimeTrackerProperties, ...TrackerPaymentProperties },\n};\n","import { ConfigurationScope, IConfigurationPropertySchema } from '@adminide-stack/core';\nimport { localize } from '@vscode-alt/monaco-editor/esm/vs/nls';\n\nconst enum PayPeriod {\n NONE = 'None',\n WEEKLY = 'Weekly',\n TWICE_PER_MONTH = 'Twice per month',\n BI_WEEKLY = 'Bi-weekly',\n MONTHLY = 'Monthly',\n}\n\nconst enum PayRate {\n HOURLY = 'Hourly',\n FIXED = 'Fixed',\n}\n\nconst enum ProcessPayment {\n MANUALLY = 'Manually',\n AUTOMATICALLY = 'Automatically',\n}\n\nexport const TrackerPaymentProperties: { [path: string]: IConfigurationPropertySchema } = {\n 'timetracker.user.payment.processPayments': {\n type: 'string',\n default: ProcessPayment.MANUALLY,\n enum: [ProcessPayment.MANUALLY, ProcessPayment.AUTOMATICALLY],\n enumDescriptions: [\n localize(\n 'timetracker.payment.processPayments.manually',\n 'When set manually, time need to be updated manually.',\n ),\n localize(\n 'timetracker.payment.processPayments.automatically',\n \"When set automatically, time is marked as 'paid' in our system and if you have payroll enabled, the payment will be send.\",\n ),\n ],\n description: localize(\n 'timetracker.payment.processPayments',\n 'Choose whether you want to manually send payments or have them automatically processed.',\n ),\n scope: ConfigurationScope.WINDOW,\n overridable: true,\n },\n 'timetracker.user.payment.sendPaymentAfter': {\n type: 'number',\n default: 0,\n description: localize(\n 'timetracker.payment.sendPaymentAfter',\n 'Number of days after pay period ends, you would like to send payments for timesheets. ',\n ),\n scope: ConfigurationScope.WINDOW,\n overridable: true,\n },\n\n 'timetracker.user.payment.payPeriod': {\n type: 'string',\n enum: [PayPeriod.NONE, PayPeriod.WEEKLY, PayPeriod.TWICE_PER_MONTH, PayPeriod.BI_WEEKLY, PayPeriod.MONTHLY],\n default: PayPeriod.NONE,\n description: localize('timetracker.payment.payPeriod', 'Pay Period'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.payType': {\n type: 'string',\n enum: [PayRate.HOURLY, PayRate.FIXED],\n default: PayRate.HOURLY,\n description: localize('timetracker.payment.payType', 'Pay type'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.billRate': {\n type: 'number',\n default: 0.0,\n description: localize('timetracker.payment.billRate', 'Billing Rate'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.payRate': {\n type: 'number',\n default: 0.0,\n description: localize('timetracker.payment.payRate', 'Paying Rate'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.payment.requireTimesheetApproval': {\n type: 'boolean',\n default: false,\n description: localize('timetracker.payment.requireTimesheetApproval', 'Whether it requires Timesheet Approval'),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n // User limits\n 'timetracker.user.recurringWeeklyLimit': {\n type: 'number',\n default: null,\n description: localize(\n 'timetracker.payment.recurringWeeklyLimit',\n 'Limits how much time can be tracked each week',\n ),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n 'timetracker.user.recurringDailyLimit': {\n type: 'number',\n default: null,\n description: localize(\n 'timetracker.payment.recurringDailyLimit',\n 'Limits how much time can be tracked each day',\n ),\n scope: ConfigurationScope.RESOURCE,\n overridable: true,\n },\n};\n","import { resolver as timerecordResolver } from './timerecord-resolver';\nimport { resolver as timesheetResolver } from './timesheet-resolver';\n\nexport const resolvers = [timerecordResolver, timesheetResolver];\n","/* eslint-disable import/no-extraneous-dependencies */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable no-underscore-dangle */\nimport * as _ from 'lodash';\nimport { withFilter } from 'graphql-subscriptions';\nimport { ITimeRecordPubSubEvents } from '@admin-layout/timetracker-core';\n\nexport const resolver = (options) => ({\n TimeRecord: {\n id: (root) => root.id || root._id,\n },\n Query: {\n getTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getTimeRecords) args %j', args);\n return timeRecordService.getTimeRecords(userContext.orgId, args.userId);\n },\n getDurationTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getDurationTimeRecords) args %j', args);\n return timeRecordService.getDurationTimeRecords(userContext.orgId, args.startTime, args.endTime, args.userId);\n },\n getPlayingTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Query.getPlayingTimeRecord) args %j', args);\n return timeRecordService.getPlayingTimeRecord(user._id || user.sub, userContext.orgId);\n },\n },\n Mutation: {\n createTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.createTimeRecord) args %j', args);\n let { userId } = args.request;\n if (userId === undefined) userId = user._id || user.sub;\n return timeRecordService.createTimeRecord(userId, userContext.orgId, args.request);\n },\n updateTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimeRecord) args %j', args);\n let { userId } = args.request;\n if (userId === undefined) userId = user._id || user.sub;\n return timeRecordService.updateTimeRecord(userId, userContext.orgId, args.recordId, args.request);\n },\n removeTimeRecord: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.removeTimeRecord) args %j', args);\n const userId = user._id || user.sub;\n return timeRecordService.removeTimeRecord(userId, userContext.orgId, args.recordId);\n },\n removeDurationTimeRecords: (root, args, { timeRecordService, user, userContext }) => {\n options.logger.trace('(Mutation.removeDurationTimeRecords) args %j', args);\n const userId = user._id || user.sub;\n return timeRecordService.removeDurationTimeRecords(\n userId,\n userContext.orgId,\n args.startTime,\n args.endTime,\n args.projectId,\n );\n },\n },\n Subscription: {\n SubscribeToTimeTracker: {\n subscribe: withFilter(\n () =>\n options.pubsub.asyncIterator([\n ITimeRecordPubSubEvents.TimeRecordCreated,\n ITimeRecordPubSubEvents.TimeRecordUpdated,\n ITimeRecordPubSubEvents.TimeRecordDeleted,\n ]),\n async (payload, variables, context: {}) =>\n payload.SubscribeToTimeTracker.orgName === variables.orgName &&\n payload.SubscribeToTimeTracker.userId === variables.userId,\n ),\n },\n },\n});\n","/* eslint-disable no-underscore-dangle */\nexport const resolver = (options) => ({\n Query: {\n getTimesheets: (root, args, { timesheetService, userContext }) => {\n options.logger.trace('(Query.getTimeSheets) args %j', args);\n if (!args.withTotalHours) return timesheetService.getTimesheets(userContext.orgId);\n return timesheetService.getTimesheetsWithTotalHours(userContext.orgId);\n },\n getDurationTimesheets: (root, args, { timesheetService, userContext }) => {\n options.logger.trace('(Query.getDurationTimesheets) args %j', args);\n return timesheetService.getDurationTimesheets(userContext.orgId, args.start, args.end);\n },\n },\n\n Mutation: {\n createTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.createTimesheet) args %j', args);\n return timesheetService.createTimesheet(user._id || user.sub, userContext.orgId, args.request);\n },\n updateTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimesheet) args %j', args);\n return timesheetService.updateTimesheet(user._id || user.sub, userContext.orgId, args.sheetId, args.request, {\n ...userContext,\n username: user.name,\n });\n },\n removeTimesheet: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.removeTimesheet) args %j', args);\n return timesheetService.removeTimesheet(user._id || user.sub, userContext.orgId, args.sheetId);\n },\n updateTimesheetStatus: (root, args, { timesheetService, user, userContext }) => {\n options.logger.trace('(Mutation.updateTimesheetStatus) args %j', args);\n return timesheetService.updateTimesheetStatus(userContext.orgId, args.sheetId, args.state);\n },\n },\n});\n","export default \"type Tag {\\n id: ID!\\n name: String\\n}\\n\\nenum StartYearWeekType {\\n FIRST_FOURDAY_WEEK\\n FIRST_FULL_WEEK\\n FIRST_DAY_WEEK\\n}\\n\\nextend type Query {\\n getTags: [Tag]\\n getSettings: Settings\\n}\\n\";","import timeRecordSchema from './timerecord-schema.graphql';\nimport timesheetSchema from './timesheet-schema.graphql';\nimport timeTrackerSchema from './timetracker-schema.graphql';\nimport commonSchema from './common-schema.graphql';\n\nconst schema = [timeRecordSchema, timesheetSchema, timeTrackerSchema, commonSchema].join('\\n');\n\nexport { schema };\n","export default \"type TimeRecord {\\n id: ID\\n startTime: DateTime\\n endTime: DateTime\\n taskId: String\\n taskName: String\\n description: String\\n tags: [String]\\n isBillable: Boolean\\n projectId: String\\n clientId: String\\n userId: String\\n orgId: String\\n timesheetId: String\\n editable: Boolean\\n isPause: Boolean\\n isTimeout: Boolean\\n pauseStatus: [PauseStatus]\\n}\\n\\nenum PauseStatusDescription {\\n BY_USER\\n DUE_TO_INACTIVITY\\n}\\n\\ntype PauseStatus {\\n pausedTime: DateTime\\n restartTime: DateTime\\n status: PauseStatusDescription\\n}\\n\\ninput PauseStatus_Input {\\n pausedTime: DateTime\\n restartTime: DateTime\\n status: PauseStatusDescription\\n}\\n\\ninput TimeRecordRequest {\\n userId: String\\n startTime: DateTime\\n endTime: DateTime\\n taskName: String\\n description: String\\n tags: [String]\\n isBillable: Boolean\\n projectId: String\\n clientId: String\\n timesheetId: String\\n isPause: Boolean\\n isTimeout: Boolean\\n pauseStatus: [PauseStatus_Input]\\n}\\n\\n\\\"\\\"\\\"\\n Subscription event for timer\\n\\\"\\\"\\\"\\nenum TimeRecordPubSubEvents {\\n TimeRecordCreated\\n TimeRecordUpdated\\n TimeRecordStopped\\n TimeRecordDeleted\\n TimeRecordConfigurationUpdate\\n}\\n\\ntype SubscriptionTimeRecord {\\n mutation: TimeRecordPubSubEvents\\n timeRecord: TimeRecord\\n}\\n\\nextend type Query {\\n getTimeRecords(userId: String): [TimeRecord] @addAccountContext\\n getDurationTimeRecords(startTime: DateTime, endTime: DateTime, userId: String): [TimeRecord] @addAccountContext\\n getPlayingTimeRecord: TimeRecord @addAccountContext\\n}\\n\\nextend type Mutation {\\n createTimeRecord(request: TimeRecordRequest): String @addAccountContext\\n updateTimeRecord(recordId: String!, request: TimeRecordRequest): Boolean @addAccountContext\\n removeTimeRecord(recordId: String!): Boolean @addAccountContext\\n removeDurationTimeRecords(startTime: DateTime, endTime: DateTime, projectId: String): Boolean @addAccountContext\\n}\\n\\nextend type Subscription {\\n SubscribeToTimeTracker(orgName: String, userId: String): SubscriptionTimeRecord\\n}\\n\";","export default \"# scalar DateTime\\nenum TimesheetState {\\n OPEN\\n APPROVED_PENDING\\n APPROVED\\n APPROVED_FINALIZED # --- which means no going back\\n DENYED\\n SUBMITTED\\n DENYED_FINALIZED # --- which means no going back\\n}\\n\\ntype Timesheet {\\n id: ID\\n orgId: String\\n userId: String\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n timeRecordsId: [String]\\n}\\n\\ninput TimesheetCreateRequest {\\n userId: String\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n timeRecordsId: [String]\\n}\\n\\ntype TimesheetResponse {\\n id: ID\\n startDate: DateTime\\n endDate: DateTime\\n state: TimesheetState\\n submittedOn: DateTime\\n approvedOn: DateTime\\n approvedBy: String\\n updatedBy: String # ---> userId\\n updatedOn: DateTime\\n userId: String\\n orgId: String\\n timeRecordsId: [String]\\n totalDuration: Int\\n}\\n\\nextend type Query {\\n getTimesheets(userId: String, withTotalHours: Boolean): [TimesheetResponse] @addAccountContext\\n getDurationTimesheets(start: DateTime, end: DateTime): [TimesheetResponse] @addAccountContext\\n}\\n\\nextend type Mutation {\\n createTimesheet(request: TimesheetCreateRequest): Boolean @addAccountContext\\n updateTimesheet(sheetId: String, request: TimesheetCreateRequest): Boolean @addAccountContext\\n removeTimesheet(sheetId: String): Boolean @addAccountContext\\n updateTimesheetStatus(sheetId: String, state: TimesheetState): Boolean @addAccountContext\\n}\\n\";","export default \"type TimeTracker {\\n userId: String\\n orgId: String\\n timeRecords: [TimeRecord]\\n timesheets: [Timesheet]\\n}\\n\";","export * from './timesheet-service';\nexport * from './timerecord-service';\nexport * from './timerecord-proxy-service';\nexport * from './timesheet-proxy-service';\n","import { injectable, inject } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport { ITimeRecord, ITimeRecordRequest, ITimeRecordCommands as TimeRecordCommands,\n IMoleculerTopics as MoleculerTopics } from '@admin-layout/timetracker-core';\nimport { ITimeRecordService } from '../interfaces';\n\n@injectable()\nexport class TimeRecordProxyService implements ITimeRecordService {\n private logger: Logger;\n\n private topic = MoleculerTopics.TimeRecord;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n public broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimeRecordProxyService' });\n }\n\n approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n return this.callAction(TimeRecordCommands.approveTimeRecords, { orgId, sheetId, timeRecordsId });\n }\n\n createTimeRecord(userId: string, orgId: string, request: ITimeRecordRequest): Promise<Partial<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.createTimeRecord, { userId, orgId, request });\n }\n\n disapproveTimeRecords(orgId: string, sheetId: string) {\n return this.callAction(TimeRecordCommands.disapproveTimeRecords, { orgId, sheetId });\n }\n\n getDurationTimeRecords(orgId: string, startTime: Date, endTime: Date, userId?: string): Promise<Array<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.getDurationTimeRecords, { orgId, startTime, endTime, userId });\n }\n\n getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n return this.callAction(TimeRecordCommands.getPlayingTimeRecord, { userId, orgId });\n }\n\n getTimeRecords(orgId: string, userId?: string): Promise<Array<ITimeRecord>> {\n return this.callAction(TimeRecordCommands.getTimeRecords, { orgId, userId });\n }\n\n removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ): Promise<boolean> {\n return this.callAction(TimeRecordCommands.removeDurationTimeRecords, {\n userId,\n orgId,\n startTime,\n endTime,\n projectId,\n });\n }\n\n removeTimeRecord(userId: string, orgId: string, recordId: string): Promise<boolean> {\n return this.callAction(TimeRecordCommands.removeTimeRecord, { userId, orgId, recordId });\n }\n\n updateTimeRecord(userId: string, orgId: string, recordId: string, request: ITimeRecordRequest): Promise<boolean> {\n return this.callAction(TimeRecordCommands.updateTimeRecord, { userId, orgId, recordId, request });\n }\n\n private async callAction<T>(command: string, params?: any) {\n return this.broker.call<T, any>(`${this.topic}.${command}`, params);\n }\n}\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable no-underscore-dangle */\n/* eslint-disable import/no-extraneous-dependencies */\nimport { CdmLogger } from '@cdm-logger/core';\nimport { inject, injectable } from 'inversify';\nimport { ITimeRecord, ITimeRecordRequest, ITimeRecordPubSubEvents , ITimeRecordBroadcasterAction } from '@admin-layout/timetracker-core';\nimport { IMoleculerTopics } from '@admin-layout/activity-core';\nimport { PubSubEngine } from 'graphql-subscriptions';\nimport { ServiceBroker } from 'moleculer';\nimport { CommonType } from '@common-stack/core';\nimport { ITimeRecordRepository } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { ITimeRecordService } from '../interfaces/timerecord-service';\n\nconst moment = require('moment');\n\n@injectable()\nexport class TimeRecordService implements ITimeRecordService {\n private logger: CdmLogger.ILogger;\n\n constructor(\n @inject(TYPES.ITimeRecordRepository)\n protected timeRecordRepository: ITimeRecordRepository,\n\n // @inject(ServerTypes.IPreferenceEditorService)\n // private preferencesService: IPreferencesService,\n\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n\n @inject('PubSub')\n private pubsub: PubSubEngine,\n\n @inject('Logger')\n logger: CdmLogger.ILogger,\n ) {\n this.logger = logger;\n }\n\n public async getTimeRecords(orgId: string, userId: string): Promise<Array<ITimeRecord>> {\n return this.timeRecordRepository.getTimeRecords(orgId, userId);\n }\n\n public async getDurationTimeRecords(\n orgId: string,\n startTime: Date,\n endTime: Date,\n userId?: string,\n ): Promise<Array<ITimeRecord>> {\n const timeRecords = await this.timeRecordRepository.getTimeRecords(\n orgId, userId, startTime && moment(startTime).toDate(), endTime && moment(endTime).toDate()\n );\n return timeRecords.filter((r) => r.endTime !== null);\n }\n\n public async getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n return this.timeRecordRepository.getPlayingTimeRecord(userId, orgId);\n }\n\n public async createTimeRecord(userId: string, orgId: string, request: ITimeRecordRequest) {\n const data = await this.timeRecordRepository.createTimeRecord(userId, orgId, request);\n if (data) {\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordCreated,\n timeRecord: data,\n };\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordCreated, { SubscribeToTimeTracker: record });\n }\n return (data as any)._id;\n }\n\n public async updateTimeRecord(userId: string, orgId: string, recordId: string, request: ITimeRecordRequest) {\n const data = await this.timeRecordRepository.updateTimeRecord(userId, orgId, recordId, request);\n if (data) {\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordUpdated,\n timeRecord: data,\n };\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordUpdated, { SubscribeToTimeTracker: record });\n }\n return true;\n }\n\n public async removeTimeRecord(userId: string, orgId: string, recordId: string) {\n const data = await this.timeRecordRepository.removeTimeRecord(userId, orgId, recordId);\n const record = {\n orgName: data.orgId,\n userId: data.userId,\n mutation: ITimeRecordPubSubEvents.TimeRecordDeleted,\n timeRecord: data,\n };\n // remove record activities\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecord,\n { userId, orgId, recordId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n IMoleculerTopics.Activity,\n ],\n );\n\n //remove record id from timesheet\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet,\n { recordId, orgId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n ],\n );\n\n this.pubsub.publish(ITimeRecordPubSubEvents.TimeRecordDeleted, { SubscribeToTimeTracker: record });\n return true;\n }\n\n public async removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ) {\n const records: any = await this.timeRecordRepository.getTimeRecords(orgId, userId);\n if (records && records.length > 0) {\n const timeRecords = records.filter(\n (tr) => tr.startTime > moment(startTime) && tr.startTime < moment(endTime) && tr.projectId === projectId,\n );\n for (const record of timeRecords) {\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecord,\n { userId, orgId, recordId: record._id },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n IMoleculerTopics.Activity,\n ]\n );\n\n //remove record id from timesheet\n await this.broker.broadcast(\n ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet,\n { recordId: record._id, orgId },\n [\n IMoleculerTopics.TimeRecord,\n IMoleculerTopics.Timesheet,\n ],\n );\n }\n }\n return this.timeRecordRepository.removeDurationTimeRecords(userId, orgId, moment(startTime), moment(endTime), projectId);\n }\n\n public async approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n this.timeRecordRepository.approveTimeRecords(orgId, sheetId, timeRecordsId);\n }\n\n public async disapproveTimeRecords(orgId: string, sheetId: string) {\n this.timeRecordRepository.disapproveTimeRecords(orgId, sheetId);\n }\n}\n","import { injectable, inject } from 'inversify';\nimport { ServiceBroker } from 'moleculer';\nimport * as Logger from 'bunyan';\nimport { CommonType } from '@common-stack/core';\nimport {\n ITimesheetCommands as TimesheetCommands,\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCreateRequest,\n ITimesheet,\n ITimesheetState,\n} from '@admin-layout/timetracker-core';\nimport { ITimesheetService } from '../interfaces';\n\n@injectable()\nexport class TimesheetProxyService implements ITimesheetService {\n private logger: Logger;\n\n private topic = MoleculerTopics.Timesheet;\n\n constructor(\n @inject(CommonType.MOLECULER_BROKER)\n public broker: ServiceBroker,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimesheetProxyService' });\n }\n\n createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest): Promise<boolean> {\n return this.callAction(TimesheetCommands.createTimesheet, { userId, orgId, request });\n }\n\n getDurationTimesheets(orgId: string, start: Date, end: Date): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getDurationTimesheets, { orgId, start, end });\n }\n\n getTimesheets(orgId: string): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getTimesheets, { orgId });\n }\n\n getTimesheetsWithTotalHours(orgId: string, userId?: string): Promise<Array<ITimesheet>> {\n return this.callAction(TimesheetCommands.getTimesheetsWithTotalHours, { orgId, userId });\n }\n\n removeTimesheet(userId: string, orgId: string, sheetId: string): Promise<boolean> {\n return this.callAction(TimesheetCommands.removeTimesheet, { userId, orgId, sheetId });\n }\n\n removeTimeRecordIdFromTimesheet(recordId: string, orgId: string): Promise<boolean> {\n return this.callAction(TimesheetCommands.removeTimeRecordIdFromTimesheet, { recordId, orgId });\n }\n\n updateTimesheet(\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n ): Promise<boolean> {\n return this.callAction(TimesheetCommands.updateTimesheet, { userId, orgId, sheetId, request });\n }\n\n updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState): Promise<boolean> {\n return this.callAction(TimesheetCommands.updateTimesheetStatus, { orgId, sheetId, state });\n }\n\n private async callAction<T>(command: string, params?: any) {\n return this.broker.call<T, any>(`${this.topic}.${command}`, params);\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport * as ILogger from 'bunyan';\nimport { inject, injectable, tagged } from 'inversify';\nimport { ITimesheetState, ITimesheetCreateRequest, ITimeRecord } from '@admin-layout/timetracker-core';\nimport {\n ConfigurationTarget,\n generateOrgUri,\n IConfigFragmentName,\n ServerTypes,\n IPreferencesService,\n} from '@adminide-stack/core';\nimport { IMailServiceAction, IMailerServicesendArgs, IMoleculerServiceName } from '@container-stack/mailing-api';\nimport * as moment from 'moment';\nimport { ServiceBroker, CallingOptions } from 'moleculer';\nimport { CommonType, TaggedType } from '@common-stack/core';\nimport { TYPES, EmailTemplateCodes } from '../constants';\nimport { config } from '../config';\nimport { ITimesheetService } from '../interfaces/timesheet-service';\nimport { ITimesheetRepository, ITimeRecordRepository } from '../interfaces';\n\n@injectable()\nexport class TimesheetService implements ITimesheetService {\n private logger: ILogger;\n\n constructor(\n @inject(TYPES.ITimesheetRepository)\n protected timesheetRepository: ITimesheetRepository,\n\n @inject(TYPES.ITimeRecordRepository)\n protected timeRecordRepository: ITimeRecordRepository,\n\n @inject(TYPES.ITimeRecordService)\n protected timeRecordService: ITimeRecordRepository,\n\n @inject(ServerTypes.IPreferenceEditorService)\n private preferencesService: IPreferencesService,\n\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n\n @inject('Settings')\n @tagged(TaggedType.MICROSERVICE, true)\n private settings: any,\n @inject('Logger')\n logger: ILogger,\n ) {\n this.logger = logger;\n }\n\n public async getTimesheets(orgId: string, userId?: string) {\n return this.timesheetRepository.getTimesheets(orgId, userId);\n }\n\n public async getTimesheetsWithTotalHours(orgId: string, userId?: string) {\n const timesheets = await this.timesheetRepository.getTimesheets(orgId, userId);\n const timeRecords: (ITimeRecord & { _id?: Object })[] = await this.timeRecordRepository.getTimeRecords(orgId, userId);\n return timesheets.map((timesheet) => {\n const sheetTotalDuration = timeRecords\n .filter(\n (tr) =>\n timesheet.timeRecordsId?.includes(tr._id.toString()),\n )\n .reduce(\n (duration, tr) =>\n duration + Math.floor((moment(tr.endTime).valueOf() - moment(tr.startTime).valueOf()) / 1000),\n 0,\n );\n return {\n id: timesheet.id,\n startDate: timesheet.startDate,\n endDate: timesheet.endDate,\n state: timesheet.state,\n userId: timesheet.userId,\n orgId,\n approvedBy: timesheet.approvedBy,\n approvedOn: timesheet.approvedOn,\n submittedOn: timesheet.submittedOn,\n updatedBy: timesheet.updatedBy,\n updatedOn: timesheet.updatedOn,\n timeRecordsId: timesheet.timeRecordsId,\n totalDuration: sheetTotalDuration,\n };\n });\n }\n\n public async getDurationTimesheets(orgId: string, start: Date, end: Date) {\n const timesheets = await this.timesheetRepository.getOrganizationTimesheets(orgId);\n return timesheets.filter(\n (sh) =>\n moment(start).format('YYYY-MM-DD') === moment(sh.startDate).format('YYYY-MM-DD') &&\n moment(end).format('YYYY-MM-DD') === moment(sh.endDate).format('YYYY-MM-DD'),\n );\n }\n\n public async createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest) {\n return this.timesheetRepository.createTimesheet(userId, orgId, request);\n }\n\n public async updateTimesheet(\n userId: string,\n orgId: string,\n sheetId: string,\n request: ITimesheetCreateRequest,\n userContext?: any,\n ) {\n try {\n await this.timesheetRepository.updateTimesheet(orgId, sheetId, request);\n if (request.state === ITimesheetState.APPROVED) {\n // approve time records from startDate to endDate\n this.timeRecordService.approveTimeRecords(orgId, sheetId, request.timeRecordsId);\n } else if (request.state === ITimesheetState.DENYED) {\n // approve time records from startDate to endDate\n this.timeRecordService.disapproveTimeRecords(orgId, sheetId);\n }\n const resourceUri = generateOrgUri(orgId, IConfigFragmentName.settings);\n const { settings } = (await this.preferencesService.viewerSettings({\n target: ConfigurationTarget.ORGANIZATION_RESOURCE,\n settingsResource: resourceUri,\n })) as any;\n if (\n request.state === ITimesheetState.APPROVED &&\n settings.timetracker.notifications.approvalNotifications &&\n settings.timetracker.notifications.enableTimetrackerNotifications\n ) {\n const mailTopic = 'Timesheet approved';\n const mailTo = userContext.emailId;\n const mailFrom = config.MAIL_SEND_DEFAULT_EMAIL;\n const templateId = EmailTemplateCodes.TIMESHEET_APPROVAL;\n const templateVars = {\n name: userContext.username,\n startDate: moment(request.startDate).format('YYYY-MM-DD'),\n endDate: moment(request.endDate).format('YYYY-MM-DD'),\n timesheet_url: `${config.CLIENT_URL}/${orgId}/time-tracker/timeapproval`,\n contact_url: `${config.CLIENT_URL}`,\n };\n this.sendMail(mailTopic, mailTo, mailFrom, templateId, templateVars);\n }\n if (\n request.state === ITimesheetState.SUBMITTED &&\n settings.timetracker.notifications.submitNotifications &&\n settings.timetracker.notifications.enableTimetrackerNotifications\n ) {\n const mailTopic = 'Timesheet submitted';\n const mailTo = userContext.emailId;\n const mailFrom = config.MAIL_SEND_DEFAULT_EMAIL;\n const templateId = EmailTemplateCodes.SUBMIT_TIME;\n const templateVars = {\n name: userContext.username,\n startDate: moment(request.startDate).format('YYYY-MM-DD'),\n endDate: moment(request.endDate).format('YYYY-MM-DD'),\n timesheet_url: `${config.CLIENT_URL}/${orgId}/time-tracker/timeapproval`,\n contact_url: `${config.CLIENT_URL}`,\n };\n this.sendMail(mailTopic, mailTo, mailFrom, templateId, templateVars);\n\n return true;\n }\n } catch (e) {\n throw new Error(e.message);\n }\n }\n\n public async updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState) {\n try {\n const timesheet = await this.timesheetRepository.updateTimesheetStatus(orgId, sheetId, state);\n console.log('updateTimesheetStatus.timesheet =>', timesheet);\n if (state === ITimesheetState.APPROVED) {\n // approve time records from startDate to endDate\n console.log('APPROVED');\n }\n\n return true;\n } catch (e) {\n throw new Error(e.message);\n }\n }\n\n public async removeTimesheet(userId: string, orgId: string, sheetId: string) {\n return this.timesheetRepository.removeTimesheet(userId, orgId, sheetId);\n }\n\n private sendMail(topic, to, from, templateId, templateVars) {\n return this.callAction<void, IMailerServicesendArgs>(\n IMailServiceAction.send,\n {\n request: {\n topic,\n to,\n templateId,\n from,\n variables: templateVars,\n },\n },\n IMoleculerServiceName.MailService,\n );\n }\n\n public async removeTimeRecordIdFromTimesheet(recordId: string, orgId: string): Promise<boolean> {\n return await this.timesheetRepository.removeTimeRecordIdFromTimesheet(recordId, orgId);\n }\n\n private async callAction<T, P = any>(command: string, params?: P, topic?: string, opts?: CallingOptions) {\n return this.broker.call<T, P>(`${topic}.${command}@${this.settings.adminApiNamespace}`, params, opts);\n }\n}\n","import { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimeRecord } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeRecordModel extends ITimeRecord, Document {\n id?: any;\n}\n\nenum PauseStatusDescription {\n BY_USER = 'BY_USER',\n DUE_TO_INACTIVITY = 'DUE_TO_INACTIVITY'\n}\n\nconst PauseStatusSchema = new Schema({\n pausedTime: { type: Date },\n restartTime: { type: Date },\n status: { type: PauseStatusDescription },\n});\n\n// ===> TimeRecord\nconst TimeRecordSchema = new Schema({\n orgId: { type: String, index: true },\n userId: { type: String, index: true },\n startTime: { type: Date, index: true },\n endTime: { type: Date, default: null, index: true },\n taskName: { type: String },\n description: { type: String },\n taskId: { type: String }, // ----> task\n tags: { type: [String] },\n isBillable: { type: Boolean },\n projectId: { type: String }, // ----> project\n timesheetId: { type: String, index: true }, // ----> timesheet\n isPause: { type: Boolean, default: false },\n isTimeout: { type: Boolean, default: false },\n pauseStatus: { type: [PauseStatusSchema] }\n});\n\nTimeRecordSchema.index({ endTime: 1, startTime: 1, userId: 1 } as any);\n\nTimeRecordSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeRecordSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeRecordSchema.set('toObject', { virtuals: true });\n\nexport type TimeRecordsModelType = Model<ITimeRecordModel>;\n\nexport const TimeRecordsModelFunc: (db: Connection) => TimeRecordsModelType = (db) =>\n db.model<ITimeRecordModel>('timerecords', TimeRecordSchema);\n","import { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimesheet } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeSheetModel extends ITimesheet, Document {\n id?: any;\n}\n\nenum TimesheetState {\n OPEN,\n APPROVED_PENDING,\n APPROVED,\n APPROVED_FINALIZED,\n DENYED,\n SUBMITTED,\n DENYED_FINALIZED,\n}\n\n// ===> Timesheet\nconst TimesheetSchema = new Schema({\n orgId: { type: String, index: true },\n userId: { type: String, index: true },\n startDate: { type: Date },\n endDate: { type: Date },\n state: { type: TimesheetState },\n submittedOn: { type: Date },\n approvedOn: { type: Date },\n approvedBy: { type: String },\n updatedBy: { type: String },\n updatedOn: { type: Date },\n timeRecordsId: { type: [String] },\n});\n\nTimesheetSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimesheetSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimesheetSchema.set('toObject', { virtuals: true });\n\nexport type TimesheetsModelType = Model<ITimeSheetModel>;\n\nexport const TimesheetsModelFunc: (db: Connection) => TimesheetsModelType = (db) =>\n db.model<ITimeSheetModel>('timesheets', TimesheetSchema);\n","/* eslint-disable no-underscore-dangle */\nimport { Schema, Model, Document, Connection } from 'mongoose';\nimport { ITimeTracker, ITimeRecord, ITimesheet } from '@admin-layout/timetracker-core';\n\nexport declare type Maybe<T> = T | null;\n\nexport interface ITimeRecordModel extends ITimeRecord, Document {\n id?: any;\n}\nexport interface ITimeSheetModel extends ITimesheet, Document {\n id?: any;\n}\nexport interface ITimeTrackerModel extends ITimeTracker, Document {\n id: any;\n timeRecords: ITimeRecordModel[];\n timesheets: ITimeSheetModel[];\n}\n\nenum TimesheetState {\n OPEN,\n APPROVED_PENDING,\n APPROVED,\n APPROVED_FINALIZED,\n DENYED,\n SUBMITTED,\n DENYED_FINALIZED,\n}\n\nconst TimeActivitySchema = new Schema({\n count: { type: Number },\n isPaused: { type: Boolean },\n isTimeout: { type: Boolean },\n startTime: { type: Number },\n endTime: { type: Number },\n});\n\nconst PauseStatusSchema = new Schema({\n pausedTime: { type: Date },\n restartTime: { type: Date },\n});\n\n// ===> TimeRecord\nconst TimeRecordSchema = new Schema({\n userId: { type: String, index: true },\n startTime: { type: Date },\n endTime: { type: Date, default: null },\n taskName: { type: String },\n description: { type: String },\n taskId: { type: String }, // ----> task\n tags: { type: [String] },\n isBillable: { type: Boolean },\n projectId: { type: String }, // ----> project\n timesheetId: { type: String }, // ----> timesheet\n activities: [TimeActivitySchema],\n isPause: { type: Boolean, default: false },\n isTimeout: { type: Boolean, default: false },\n pauseStatus: { type: [PauseStatusSchema] }\n});\n\nTimeRecordSchema.index({ endTime: 1, startTime: 1, userId: 1 } as any);\n\n// ===> Timesheet\nconst TimesheetSchema = new Schema({\n userId: { type: String, index: true },\n startDate: { type: Date },\n endDate: { type: Date },\n state: { type: TimesheetState },\n submittedOn: { type: Date },\n approvedOn: { type: Date },\n approvedBy: { type: String },\n updatedBy: { type: String },\n updatedOn: { type: Date },\n timeRecordsId: { type: [String] },\n});\n\nconst TimeTrackerSchema = new Schema({\n orgId: { type: String, index: true },\n timeRecords: [TimeRecordSchema],\n timesheets: [TimesheetSchema],\n});\n\nTimeRecordSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeRecordSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeTrackerSchema.virtual('id').get(function () {\n return this._id.toHexString();\n});\n\nTimeTrackerSchema.set('toJSON', {\n virtuals: true,\n});\n\nTimeTrackerSchema.set('toObject', { virtuals: true });\n\nexport type TimeTrackerModelType = Model<ITimeTrackerModel>;\n\nexport const TimeTrackerModelFunc: (db: Connection) => TimeTrackerModelType = (db) =>\n db.model<ITimeTrackerModel>('timetracker', TimeTrackerSchema);\n","export * from './timerecord-repository';\nexport * from './timesheet-repository';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-param-reassign */\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n/* eslint-disable no-underscore-dangle */\nimport * as Logger from 'bunyan';\nimport { injectable, inject } from 'inversify';\nimport * as mongoose from 'mongoose';\nimport { ITimeRecordRequest, ITimeRecord } from '@admin-layout/timetracker-core';\nimport { ITimeRecordRepository } from '../../interfaces';\nimport { TimeRecordsModelFunc, TimeRecordsModelType, ITimeRecordModel } from '../models/timerecords-model';\nimport * as _ from 'lodash';\n\n@injectable()\nexport class TimeRecordRepository implements ITimeRecordRepository {\n private timeRecordsModel: TimeRecordsModelType;\n\n private logger: Logger;\n\n constructor(\n @inject('MongoDBConnection')\n db: mongoose.Connection,\n @inject('Logger')\n logger: Logger,\n ) {\n this.logger = logger.child({ className: 'TimeRecordRepository' });\n this.timeRecordsModel = TimeRecordsModelFunc(db);\n }\n\n public async getTimeRecords(\n orgId: string, userId?: string | RegExp, from?: Date, until?: Date\n ): Promise<Array<ITimeRecord>> {\n if (!userId) {\n userId = /.*/;\n }\n let match: any = {\n 'userId': userId,\n };\n if (from) {\n match = { ...match, 'startTime': { $gte: from } };\n }\n if (until) {\n match = { ...match, 'endTime': { $lte: until } };\n }\n\n const result = await this.timeRecordsModel.aggregate([\n {\n $match: {\n orgId,\n },\n },\n {\n $match: {\n ...match,\n },\n },\n ]);\n if (result.length === 0) {\n return [];\n }\n return result;\n }\n\n public async getOrganizationTimeRecords(orgId: string): Promise<ITimeRecordModel[]> {\n const trackDoc = await this.timeRecordsModel.find({ orgId });\n if (trackDoc) {\n return trackDoc;\n }\n return [];\n }\n\n public async getPlayingTimeRecord(userId: string, orgId: string): Promise<ITimeRecord> {\n const trackDoc = await this.timeRecordsModel.find({ orgId });\n if (trackDoc) {\n let res;\n if (trackDoc) res = trackDoc.find((tr) => tr.userId === userId && tr.endTime === null);\n return res;\n }\n return null;\n }\n\n public async createTimeRecord(\n userId: string,\n orgId: string,\n request: ITimeRecordRequest,\n ): Promise<Partial<ITimeRecord>> {\n try {\n const response = await this.timeRecordsModel.create({ ...request, orgId, userId });\n return response.toObject() as ITimeRecordModel;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimeRecord(\n userId: string,\n orgId: string,\n recordId: string,\n request: ITimeRecordRequest,\n ): Promise<Partial<ITimeRecordModel>> {\n try {\n if (recordId === null || recordId === undefined) throw new Error('TimeRecord id not specified!');\n const response = await this.timeRecordsModel.findOneAndUpdate(\n { orgId, _id: recordId },\n {\n $set: {\n ...request,\n },\n },\n {\n new: true,\n },\n );\n return response?.toObject() as ITimeRecordModel;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimeRecord(userId: string, orgId: string, recordId: string) {\n try {\n const result = await this.timeRecordsModel.remove({ userId, orgId, _id: recordId });\n if (result.n !== 1) {\n throw new Error('TimeRecord is not modified');\n }\n return { userId, orgId, _id: recordId };\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeDurationTimeRecords(\n userId: string,\n orgId: string,\n startTime: Date,\n endTime: Date,\n projectId: string,\n ) {\n try {\n const trackerDoc = await this.timeRecordsModel.find({ orgId });\n if (trackerDoc && trackerDoc.length > 0) {\n const timeRecords = trackerDoc.filter(\n (tr) => tr.startTime > startTime && tr.startTime < endTime && tr.projectId === projectId,\n );\n for (const record of timeRecords) {\n await this.timeRecordsModel.remove({ _id: record._id });\n }\n return true;\n }\n return false;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async approveTimeRecords(orgId: string, sheetId: string, timeRecordsId: string[]) {\n try {\n for (const id of timeRecordsId) {\n const res = await this.timeRecordsModel.updateOne(\n { orgId, _id: id },\n { $set: { 'timesheetId': sheetId } }\n );\n }\n } catch (e) {\n this.logger.debug('approveTimeRecords =>', e.message);\n throw new Error(e.message);\n }\n }\n\n public async disapproveTimeRecords(orgId: string, sheetId: string) {\n try {\n const res = await this.timeRecordsModel.updateMany(\n {\n orgId,\n timesheetId: sheetId\n },\n { $set: { 'timesheetId': null } },\n {\n multi: true,\n },\n );\n } catch (e) {\n this.logger.debug('disapproveTimeRecords =>', e.message);\n throw new Error(e.message);\n }\n }\n}\n","import * as Logger from 'bunyan';\nimport { injectable, inject } from 'inversify';\nimport * as mongoose from 'mongoose';\nimport { ITimesheetCreateRequest, ITimesheetState } from '@admin-layout/timetracker-core';\nimport * as _ from 'lodash';\nimport { CommonType } from '@common-stack/core';\nimport { ServiceBroker } from 'moleculer';\nimport { TimesheetsModelFunc, TimesheetsModelType, ITimeSheetModel } from '../models/timesheets-model';\nimport { ITimesheetRepository } from '../../interfaces';\n\n@injectable()\nexport class TimesheetRepository implements ITimesheetRepository {\n private timesheetsModel: TimesheetsModelType;\n\n private logger: Logger;\n\n constructor(\n @inject('MongoDBConnection')\n db: mongoose.Connection,\n @inject('Logger')\n logger: Logger,\n @inject(CommonType.MOLECULER_BROKER)\n private broker: ServiceBroker,\n ) {\n this.logger = logger.child({ className: 'TimesheetRepository' });\n this.timesheetsModel = TimesheetsModelFunc(db);\n }\n\n public async getOrganizationTimesheets(orgId: string): Promise<ITimeSheetModel[]> {\n const trackDoc = await this.timesheetsModel.find({ orgId });\n if (trackDoc && trackDoc) {\n return trackDoc;\n }\n return [];\n }\n\n public async getTimesheets(orgId: string, userId?: string): Promise<ITimeSheetModel[]> {\n const timesheets = await this.getOrganizationTimesheets(orgId);\n return timesheets.filter((sheet) => !userId || sheet.userId === userId);\n }\n\n public async createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest): Promise<boolean> {\n try {\n const response = await this.timesheetsModel.create({ orgId, ...request });\n return true;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimesheet(orgId: string, sheetId: string, request: ITimesheetCreateRequest) {\n try {\n const response = await this.timesheetsModel.update(\n { orgId, _id: sheetId },\n { $set: { ...request } },\n );\n return response;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState) {\n try {\n const response = await this.timesheetsModel.update(\n {\n orgId,\n _id: sheetId,\n },\n {\n $set: {\n 'status': state,\n },\n },\n );\n return response;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimesheet(userId: string, orgId: string, sheetId: string): Promise<boolean> {\n try {\n await this.timesheetsModel.remove({ orgId, _id: sheetId });\n return true;\n } catch (err) {\n throw new Error(err.message);\n }\n }\n\n public async removeTimeRecordIdFromTimesheet(recordId: string, orgId: string) {\n const res = await this.timesheetsModel.updateMany(\n { orgId, timeRecordsId: recordId },\n { $pullAll: { timeRecordsId: [recordId] } }\n );\n return true;\n }\n}\n","module.exports = require(\"@adminide-stack/core\");","module.exports = require(\"@common-stack/core\");","module.exports = require(\"@common-stack/server-core\");","module.exports = require(\"@vscode-alt/monaco-editor/esm/vs/nls\");","module.exports = require(\"@workbench-stack/core\");","module.exports = require(\"envalid\");","module.exports = require(\"graphql-subscriptions\");","module.exports = require(\"inversify\");","module.exports = require(\"moleculer\");","module.exports = require(\"moment\");","module.exports = require(\"mongoose\");"],"sourceRoot":""}
|
|
@@ -13,7 +13,7 @@ export declare class TimesheetService implements ITimesheetService {
|
|
|
13
13
|
private settings;
|
|
14
14
|
private logger;
|
|
15
15
|
constructor(timesheetRepository: ITimesheetRepository, timeRecordRepository: ITimeRecordRepository, timeRecordService: ITimeRecordRepository, preferencesService: IPreferencesService, broker: ServiceBroker, settings: any, logger: ILogger);
|
|
16
|
-
getTimesheets(orgId: string, userId?: string): Promise<import("
|
|
16
|
+
getTimesheets(orgId: string, userId?: string): Promise<import("@admin-layout/timetracker-core").ITimesheet[]>;
|
|
17
17
|
getTimesheetsWithTotalHours(orgId: string, userId?: string): Promise<{
|
|
18
18
|
id: string;
|
|
19
19
|
startDate: any;
|
|
@@ -29,7 +29,7 @@ export declare class TimesheetService implements ITimesheetService {
|
|
|
29
29
|
timeRecordsId: string[];
|
|
30
30
|
totalDuration: number;
|
|
31
31
|
}[]>;
|
|
32
|
-
getDurationTimesheets(orgId: string, start: Date, end: Date): Promise<import("
|
|
32
|
+
getDurationTimesheets(orgId: string, start: Date, end: Date): Promise<import("@admin-layout/timetracker-core").ITimesheet[]>;
|
|
33
33
|
createTimesheet(userId: string, orgId: string, request: ITimesheetCreateRequest): Promise<boolean>;
|
|
34
34
|
updateTimesheet(userId: string, orgId: string, sheetId: string, request: ITimesheetCreateRequest, userContext?: any): Promise<boolean>;
|
|
35
35
|
updateTimesheetStatus(orgId: string, sheetId: string, state: ITimesheetState): Promise<boolean>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@admin-layout/timetracker-module-server",
|
|
3
|
-
"version": "1.0.3-alpha.
|
|
3
|
+
"version": "1.0.3-alpha.78",
|
|
4
4
|
"description": "Sample core for higher packages to depend on",
|
|
5
5
|
"license": "ISC",
|
|
6
6
|
"author": "CDMBase LLC",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@admin-layout/timetracker-core": "1.0.3-alpha.
|
|
41
|
+
"@admin-layout/timetracker-core": "1.0.3-alpha.78",
|
|
42
42
|
"@container-stack/mailing-api": "^0.0.26-61",
|
|
43
43
|
"humanize-duration": "^3.24.0",
|
|
44
44
|
"moment": "^2.29.1"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"peerDependencies": {
|
|
47
47
|
"@adminide-stack/core": "*",
|
|
48
48
|
"@common-stack/core": "*",
|
|
49
|
-
"@common-stack/server-core": ">=0.1.
|
|
49
|
+
"@common-stack/server-core": ">=0.1.11",
|
|
50
50
|
"@vscode-alt/monaco-editor": "*",
|
|
51
51
|
"bunyan": "*",
|
|
52
52
|
"inversify": "*",
|
|
@@ -60,5 +60,5 @@
|
|
|
60
60
|
"typescript": {
|
|
61
61
|
"definition": "lib/index.d.ts"
|
|
62
62
|
},
|
|
63
|
-
"gitHead": "
|
|
63
|
+
"gitHead": "57bd10b6ebf422bcd1321f6712bac963bfc9c030"
|
|
64
64
|
}
|