@admin-layout/timetracker-module-server 1.0.3-alpha.81 → 1.0.3-alpha.84

Sign up to get free protection for your applications and to get access to all the features.
package/lib/index.js CHANGED
@@ -1970,6 +1970,7 @@ let TimesheetService = class TimesheetService {
1970
1970
  return this.timesheetRepository.createTimesheet(userId, orgId, request);
1971
1971
  }
1972
1972
  async updateTimesheet(userId, orgId, sheetId, request, userContext) {
1973
+ var _a, _b, _c, _d, _e, _f, _g, _h;
1973
1974
  try {
1974
1975
  await this.timesheetRepository.updateTimesheet(orgId, sheetId, request);
1975
1976
  if (request.state === "APPROVED" /* APPROVED */) {
@@ -1996,8 +1997,8 @@ let TimesheetService = class TimesheetService {
1996
1997
  }`
1997
1998
  }));
1998
1999
  if (request.state === "APPROVED" /* APPROVED */ &&
1999
- settings.timetracker.notifications.approvalNotifications &&
2000
- settings.timetracker.notifications.enableTimetrackerNotifications) {
2000
+ ((_b = (_a = settings.timetracker) === null || _a === void 0 ? void 0 : _a.notifications) === null || _b === void 0 ? void 0 : _b.approvalNotifications) &&
2001
+ ((_d = (_c = settings.timetracker) === null || _c === void 0 ? void 0 : _c.notifications) === null || _d === void 0 ? void 0 : _d.enableTimetrackerNotifications)) {
2001
2002
  const mailTopic = 'Timesheet approved';
2002
2003
  const mailTo = userContext.emailId;
2003
2004
  const mailFrom = config_1.config.MAIL_SEND_DEFAULT_EMAIL;
@@ -2012,8 +2013,8 @@ let TimesheetService = class TimesheetService {
2012
2013
  this.sendMail(mailTopic, mailTo, mailFrom, templateId, templateVars);
2013
2014
  }
2014
2015
  if (request.state === "SUBMITTED" /* SUBMITTED */ &&
2015
- settings.timetracker.notifications.submitNotifications &&
2016
- settings.timetracker.notifications.enableTimetrackerNotifications) {
2016
+ ((_f = (_e = settings.timetracker) === null || _e === void 0 ? void 0 : _e.notifications) === null || _f === void 0 ? void 0 : _f.submitNotifications) &&
2017
+ ((_h = (_g = settings.timetracker) === null || _g === void 0 ? void 0 : _g.notifications) === null || _h === void 0 ? void 0 : _h.enableTimetrackerNotifications)) {
2017
2018
  const mailTopic = 'Timesheet submitted';
2018
2019
  const mailTo = userContext.emailId;
2019
2020
  const mailFrom = config_1.config.MAIL_SEND_DEFAULT_EMAIL;
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 \"@adminide-stack/platform-server\"","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 GRAPHQL_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 {\n ITimeRecordRequest,\n IMoleculerTopics as MoleculerTopics,\n ITimeRecordCommands as TimeRecordCommands,\n} from '@admin-layout/timetracker-core';\nimport { ApolloClientMixin, getPreferenceSettingsInput } from '@adminide-stack/platform-server';\nimport { ITimeRecordService } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { config } from '../config';\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.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n [TimeRecordCommands.getTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; userId?: string }>) =>\n this.timerecordService.getTimeRecords(ctx.params.orgId, ctx.params.userId),\n },\n [TimeRecordCommands.getDurationTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; startTime: Date; endTime: Date; userId?: string }>) =>\n this.timerecordService.getDurationTimeRecords(\n ctx.params.orgId,\n ctx.params.startTime,\n ctx.params.endTime,\n ctx.params.userId,\n ),\n },\n [TimeRecordCommands.getPlayingTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string }>) =>\n this.timerecordService.getPlayingTimeRecord(ctx.params.userId, ctx.params.orgId),\n },\n [TimeRecordCommands.createTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; request: ITimeRecordRequest }>) =>\n this.timerecordService.createTimeRecord(ctx.params.userId, ctx.params.orgId, ctx.params.request),\n },\n [TimeRecordCommands.updateTimeRecord]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n recordId: string;\n request: ITimeRecordRequest;\n }>,\n ) =>\n this.timerecordService.updateTimeRecord(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.recordId,\n ctx.params.request,\n ),\n },\n [TimeRecordCommands.removeTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; recordId: string }>) =>\n this.timerecordService.removeTimeRecord(ctx.params.userId, ctx.params.orgId, ctx.params.recordId),\n },\n [TimeRecordCommands.removeDurationTimeRecords]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n startTime: Date;\n endTime: Date;\n projectId: string;\n }>,\n ) =>\n this.timerecordService.removeDurationTimeRecords(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.startTime,\n ctx.params.endTime,\n ctx.params.projectId,\n ),\n },\n [TimeRecordCommands.approveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string; timeRecordsId: string[] }>) =>\n this.timerecordService.approveTimeRecords(ctx.params.orgId, ctx.params.sheetId, ctx.params.timeRecordsId),\n },\n [TimeRecordCommands.disapproveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string }>) =>\n this.timerecordService.disapproveTimeRecords(ctx.params.orgId, ctx.params.sheetId),\n },\n },\n });\n }\n}\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin, getPreferenceSettingsInput } from '@adminide-stack/platform-server';\nimport {\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCommands as TimesheetCommands,\n ITimesheetCreateRequest,\n ITimesheetState,\n ITimeRecordBroadcasterAction,\n} from '@admin-layout/timetracker-core';\nimport { ClientTypes } from '@common-stack/core';\nimport { ITimesheetService } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { config } from '../config';\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\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n events: {\n [ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet]: {\n handler: async (ctx: Context<{ recordId: string; orgId: string }>) =>\n this.timesheetService.removeTimeRecordIdFromTimesheet(ctx.params.recordId, ctx.params.orgId),\n },\n },\n actions: {\n [TimesheetCommands.getTimesheets]: {\n handler: async (ctx: Context<{ orgId: string }>) => this.timesheetService.getTimesheets(ctx.params.orgId),\n },\n [TimesheetCommands.getTimesheetsWithTotalHours]: {\n handler: async (ctx: Context<{ orgId: string; userId?: string }>) =>\n this.timesheetService.getTimesheetsWithTotalHours(ctx.params.orgId, ctx.params.userId),\n },\n [TimesheetCommands.getDurationTimesheets]: {\n handler: async (ctx: Context<{ orgId: string; start: Date; end: Date }>) =>\n this.timesheetService.getDurationTimesheets(ctx.params.orgId, ctx.params.start, ctx.params.end),\n },\n [TimesheetCommands.createTimesheet]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; request: ITimesheetCreateRequest }>) =>\n this.timesheetService.createTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.request),\n },\n [TimesheetCommands.updateTimesheet]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n sheetId: string;\n request: ITimesheetCreateRequest;\n userContext?: any;\n }>,\n ) =>\n this.timesheetService.updateTimesheet(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.sheetId,\n ctx.params.request,\n ctx.params.userContext,\n ),\n },\n [TimesheetCommands.removeTimesheet]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; sheetId: string }>) =>\n this.timesheetService.removeTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.sheetId),\n },\n [TimesheetCommands.updateTimesheetStatus]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string; state: ITimesheetState }>) =>\n this.timesheetService.updateTimesheetStatus(ctx.params.orgId, ctx.params.sheetId, ctx.params.state),\n },\n },\n });\n this.container.bind(ClientTypes.ApolloClient).toConstantValue(this.apolloClient);\n this.timesheetService = this.container.get<ITimesheetService>(TYPES.ITimesheetService);\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,\n settingsResource: resourceUri,\n },{\n fragmentName: 'AccountBillingPreferences',\n fragmentDoc: `fragment AccountBillingPreferences on Preferences {\n account {\n notification {\n primaryEmail\n billing\n }\n }\n }`\n }\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(\"@adminide-stack/platform-server\");","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 \"@adminide-stack/platform-server\"","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 GRAPHQL_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 {\n ITimeRecordRequest,\n IMoleculerTopics as MoleculerTopics,\n ITimeRecordCommands as TimeRecordCommands,\n} from '@admin-layout/timetracker-core';\nimport { ApolloClientMixin, getPreferenceSettingsInput } from '@adminide-stack/platform-server';\nimport { ITimeRecordService } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { config } from '../config';\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.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n actions: {\n [TimeRecordCommands.getTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; userId?: string }>) =>\n this.timerecordService.getTimeRecords(ctx.params.orgId, ctx.params.userId),\n },\n [TimeRecordCommands.getDurationTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; startTime: Date; endTime: Date; userId?: string }>) =>\n this.timerecordService.getDurationTimeRecords(\n ctx.params.orgId,\n ctx.params.startTime,\n ctx.params.endTime,\n ctx.params.userId,\n ),\n },\n [TimeRecordCommands.getPlayingTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string }>) =>\n this.timerecordService.getPlayingTimeRecord(ctx.params.userId, ctx.params.orgId),\n },\n [TimeRecordCommands.createTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; request: ITimeRecordRequest }>) =>\n this.timerecordService.createTimeRecord(ctx.params.userId, ctx.params.orgId, ctx.params.request),\n },\n [TimeRecordCommands.updateTimeRecord]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n recordId: string;\n request: ITimeRecordRequest;\n }>,\n ) =>\n this.timerecordService.updateTimeRecord(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.recordId,\n ctx.params.request,\n ),\n },\n [TimeRecordCommands.removeTimeRecord]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; recordId: string }>) =>\n this.timerecordService.removeTimeRecord(ctx.params.userId, ctx.params.orgId, ctx.params.recordId),\n },\n [TimeRecordCommands.removeDurationTimeRecords]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n startTime: Date;\n endTime: Date;\n projectId: string;\n }>,\n ) =>\n this.timerecordService.removeDurationTimeRecords(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.startTime,\n ctx.params.endTime,\n ctx.params.projectId,\n ),\n },\n [TimeRecordCommands.approveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string; timeRecordsId: string[] }>) =>\n this.timerecordService.approveTimeRecords(ctx.params.orgId, ctx.params.sheetId, ctx.params.timeRecordsId),\n },\n [TimeRecordCommands.disapproveTimeRecords]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string }>) =>\n this.timerecordService.disapproveTimeRecords(ctx.params.orgId, ctx.params.sheetId),\n },\n },\n });\n }\n}\n","import { Context, Service, ServiceBroker } from 'moleculer';\nimport { Container } from 'inversify';\nimport { ApolloClientMixin, getPreferenceSettingsInput } from '@adminide-stack/platform-server';\nimport {\n IMoleculerTopics as MoleculerTopics,\n ITimesheetCommands as TimesheetCommands,\n ITimesheetCreateRequest,\n ITimesheetState,\n ITimeRecordBroadcasterAction,\n} from '@admin-layout/timetracker-core';\nimport { ClientTypes } from '@common-stack/core';\nimport { ITimesheetService } from '../interfaces';\nimport { TYPES } from '../constants';\nimport { config } from '../config';\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\n this.parseServiceSchema({\n name: topic,\n mixins: [ApolloClientMixin],\n settings: {\n apolloClient: {\n serverUri: config.GRAPHQL_URL,\n },\n },\n events: {\n [ITimeRecordBroadcasterAction.onRemoveTimeRecordIdFromTimesheet]: {\n handler: async (ctx: Context<{ recordId: string; orgId: string }>) =>\n this.timesheetService.removeTimeRecordIdFromTimesheet(ctx.params.recordId, ctx.params.orgId),\n },\n },\n actions: {\n [TimesheetCommands.getTimesheets]: {\n handler: async (ctx: Context<{ orgId: string }>) => this.timesheetService.getTimesheets(ctx.params.orgId),\n },\n [TimesheetCommands.getTimesheetsWithTotalHours]: {\n handler: async (ctx: Context<{ orgId: string; userId?: string }>) =>\n this.timesheetService.getTimesheetsWithTotalHours(ctx.params.orgId, ctx.params.userId),\n },\n [TimesheetCommands.getDurationTimesheets]: {\n handler: async (ctx: Context<{ orgId: string; start: Date; end: Date }>) =>\n this.timesheetService.getDurationTimesheets(ctx.params.orgId, ctx.params.start, ctx.params.end),\n },\n [TimesheetCommands.createTimesheet]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; request: ITimesheetCreateRequest }>) =>\n this.timesheetService.createTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.request),\n },\n [TimesheetCommands.updateTimesheet]: {\n handler: async (\n ctx: Context<{\n userId: string;\n orgId: string;\n sheetId: string;\n request: ITimesheetCreateRequest;\n userContext?: any;\n }>,\n ) =>\n this.timesheetService.updateTimesheet(\n ctx.params.userId,\n ctx.params.orgId,\n ctx.params.sheetId,\n ctx.params.request,\n ctx.params.userContext,\n ),\n },\n [TimesheetCommands.removeTimesheet]: {\n handler: async (ctx: Context<{ userId: string; orgId: string; sheetId: string }>) =>\n this.timesheetService.removeTimesheet(ctx.params.userId, ctx.params.orgId, ctx.params.sheetId),\n },\n [TimesheetCommands.updateTimesheetStatus]: {\n handler: async (ctx: Context<{ orgId: string; sheetId: string; state: ITimesheetState }>) =>\n this.timesheetService.updateTimesheetStatus(ctx.params.orgId, ctx.params.sheetId, ctx.params.state),\n },\n },\n });\n this.container.bind(ClientTypes.ApolloClient).toConstantValue(this.apolloClient);\n this.timesheetService = this.container.get<ITimesheetService>(TYPES.ITimesheetService);\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,\n settingsResource: resourceUri,\n },{\n fragmentName: 'AccountBillingPreferences',\n fragmentDoc: `fragment AccountBillingPreferences on Preferences {\n account {\n notification {\n primaryEmail\n billing\n }\n }\n }`\n }\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(\"@adminide-stack/platform-server\");","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":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@admin-layout/timetracker-module-server",
3
- "version": "1.0.3-alpha.81",
3
+ "version": "1.0.3-alpha.84",
4
4
  "description": "Sample core for higher packages to depend on",
5
5
  "license": "ISC",
6
6
  "author": "CDMBase LLC",
@@ -61,5 +61,5 @@
61
61
  "typescript": {
62
62
  "definition": "lib/index.d.ts"
63
63
  },
64
- "gitHead": "2b92540429feec9f4cfbdaaefeb142e2d0c9b257"
64
+ "gitHead": "6bdd5c66f3419c25f4cc4e6d324b26d69f3b380f"
65
65
  }