herum-shared 0.1.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/README.md +63 -0
  2. package/animations/index.d.ts +5 -0
  3. package/assets/feed/exercise/exerciseAchivment.svg +11 -0
  4. package/assets/feed/icons/active/audio.svg +5 -0
  5. package/assets/feed/icons/active/collection.svg +15 -0
  6. package/assets/feed/icons/active/exercise.svg +13 -0
  7. package/assets/feed/icons/active/generic-file.svg +8 -0
  8. package/assets/feed/icons/active/image.svg +11 -0
  9. package/assets/feed/icons/active/link.svg +6 -0
  10. package/assets/feed/icons/active/pdf.svg +14 -0
  11. package/assets/feed/icons/active/presentation.svg +11 -0
  12. package/assets/feed/icons/active/quiz.svg +17 -0
  13. package/assets/feed/icons/active/story.svg +7 -0
  14. package/assets/feed/icons/active/video.svg +11 -0
  15. package/assets/feed/icons/comment.svg +12 -0
  16. package/assets/feed/icons/error/audio.svg +5 -0
  17. package/assets/feed/icons/error/collection.svg +15 -0
  18. package/assets/feed/icons/error/exercise.svg +13 -0
  19. package/assets/feed/icons/error/generic-file.svg +8 -0
  20. package/assets/feed/icons/error/image.svg +11 -0
  21. package/assets/feed/icons/error/pdf.svg +14 -0
  22. package/assets/feed/icons/error/presentation.svg +11 -0
  23. package/assets/feed/icons/error/quiz.svg +17 -0
  24. package/assets/feed/icons/error/story.svg +7 -0
  25. package/assets/feed/icons/error/video.svg +11 -0
  26. package/assets/feed/icons/eye.svg +13 -0
  27. package/assets/feed/icons/garbage-secondary.svg +14 -0
  28. package/assets/feed/icons/garbage.svg +14 -0
  29. package/assets/feed/icons/green-x.svg +165 -0
  30. package/assets/feed/icons/hamburger.svg +2 -0
  31. package/assets/feed/icons/inactive/audio.svg +5 -0
  32. package/assets/feed/icons/inactive/exercise.svg +17 -0
  33. package/assets/feed/icons/inactive/link.svg +6 -0
  34. package/assets/feed/icons/inactive/pdf.svg +19 -0
  35. package/assets/feed/icons/inactive/presentation.svg +13 -0
  36. package/assets/feed/icons/inactive/quiz.svg +25 -0
  37. package/assets/feed/icons/inactive/story.svg +7 -0
  38. package/assets/feed/icons/inactive/video.svg +13 -0
  39. package/assets/feed/icons/status/Group 856.svg +11 -0
  40. package/assets/feed/icons/status/almostDone.svg +11 -0
  41. package/assets/feed/icons/status/done.svg +11 -0
  42. package/assets/feed/icons/status/inProgress.svg +13 -0
  43. package/assets/feed/icons/white-chevron.svg +3 -0
  44. package/assets/feed/icons/wide-mode.png +0 -0
  45. package/assets/feed/icons/wide-mode.svg +7 -0
  46. package/assets/feed/icons/wide-mode2.svg +8 -0
  47. package/assets/files-icons/.image.svg +11 -0
  48. package/assets/files-icons/.mp4.png +0 -0
  49. package/assets/files-icons/.mp4.svg +12 -0
  50. package/assets/files-icons/.pdf.png +0 -0
  51. package/assets/files-icons/.pdf.svg +16 -0
  52. package/assets/files-icons/.pptx.png +0 -0
  53. package/assets/files-icons/.pptx.svg +12 -0
  54. package/assets/files-icons/.video.svg +12 -0
  55. package/assets/files-icons/default-file.png +0 -0
  56. package/assets/files-icons/generic-file.svg +8 -0
  57. package/assets/files-icons/story.png +0 -0
  58. package/assets/files-icons/story.svg +3 -0
  59. package/assets/files-icons/upload-file.svg +4 -0
  60. package/assets/general/calendar.svg +12 -0
  61. package/assets/general/chevron.svg +3 -0
  62. package/assets/general/clock.svg +4 -0
  63. package/assets/general/closed-chevron.png +0 -0
  64. package/assets/general/college-calendar.svg +12 -0
  65. package/assets/general/comment-icon.svg +12 -0
  66. package/assets/general/dialogX.png +0 -0
  67. package/assets/general/errorOwl.png +0 -0
  68. package/assets/general/green-x.svg +4 -0
  69. package/assets/general/grey-chevron.svg +3 -0
  70. package/assets/general/keyboardLink.svg +15 -0
  71. package/assets/general/logo.png +0 -0
  72. package/assets/general/noCollectionsMessage.svg +59 -0
  73. package/assets/general/open-chevron.png +0 -0
  74. package/assets/general/owl-logo.svg +98 -0
  75. package/assets/general/secondary-x.svg +3 -0
  76. package/assets/general/user.svg +15 -0
  77. package/assets/general/white-chevron.svg +3 -0
  78. package/assets/quiz/greenHeaderArrow.svg +12 -0
  79. package/assets/quiz/greyHeaderArrow.svg +12 -0
  80. package/assets/quiz/happyOwl.svg +126 -0
  81. package/assets/quiz/sadOwl.svg +94 -0
  82. package/assets/quiz/skip.svg +5 -0
  83. package/assets/shared/atoms/inputs/herum-inputs.component.scss +56 -0
  84. package/assets/shared/atoms/selects/herum-selects.component.scss +141 -0
  85. package/assets/shared/atoms/uploadingStatuses/error.svg +8 -0
  86. package/assets/shared/atoms/uploadingStatuses/information.svg +6 -0
  87. package/assets/shared/atoms/uploadingStatuses/success.svg +9 -0
  88. package/assets/shared/audio-images/gray-pause.svg +4 -0
  89. package/assets/shared/audio-images/gray-play.svg +3 -0
  90. package/assets/shared/audio-images/next15.svg +7 -0
  91. package/assets/shared/audio-images/pause.svg +4 -0
  92. package/assets/shared/audio-images/play.svg +3 -0
  93. package/assets/shared/audio-images/previous15.svg +7 -0
  94. package/assets/shared/background/cubes.png +0 -0
  95. package/assets/shared/background/cubes.svg +1900 -0
  96. package/assets/shared/icons/V.svg +3 -0
  97. package/assets/shared/icons/X.svg +3 -0
  98. package/assets/shared/icons/active-clipboard.svg +7 -0
  99. package/assets/shared/icons/active-drag.svg +44 -0
  100. package/assets/shared/icons/active-upload.svg +3 -0
  101. package/assets/shared/icons/add.svg +3 -0
  102. package/assets/shared/icons/attachUsers.png +0 -0
  103. package/assets/shared/icons/big-no-result-owl.png +0 -0
  104. package/assets/shared/icons/bigV.svg +3 -0
  105. package/assets/shared/icons/celeb-owl.png +0 -0
  106. package/assets/shared/icons/clock.svg +3 -0
  107. package/assets/shared/icons/drag.svg +44 -0
  108. package/assets/shared/icons/edit.svg +3 -0
  109. package/assets/shared/icons/editCollection.png +0 -0
  110. package/assets/shared/icons/femaleAvatar.svg +80 -0
  111. package/assets/shared/icons/inactive-clipboard.svg +7 -0
  112. package/assets/shared/icons/input/X.png +0 -0
  113. package/assets/shared/icons/input/X.svg +3 -0
  114. package/assets/shared/icons/input/drag.svg +6 -0
  115. package/assets/shared/icons/input/green-search.png +0 -0
  116. package/assets/shared/icons/input/grey-search.png +0 -0
  117. package/assets/shared/icons/input/search.svg +4 -0
  118. package/assets/shared/icons/maleAvatar.svg +55 -0
  119. package/assets/shared/icons/no-result-owl.png +0 -0
  120. package/assets/shared/icons/resources.svg +6 -0
  121. package/assets/shared/icons/secondary-x.svg +3 -0
  122. package/assets/shared/icons/settings.png +0 -0
  123. package/assets/shared/icons/stepper/white-v.svg +3 -0
  124. package/assets/shared/icons/table/edit.svg +3 -0
  125. package/assets/shared/icons/target.png +0 -0
  126. package/assets/shared/icons/upload.png +0 -0
  127. package/assets/shared/icons/upload.svg +7 -0
  128. package/assets/shared/icons/user.svg +8 -0
  129. package/assets/shared/icons/video/Play.PNG +0 -0
  130. package/assets/shared/icons/video/back10.PNG +0 -0
  131. package/assets/shared/icons/video/back10.svg +7 -0
  132. package/assets/shared/icons/video/download.PNG +0 -0
  133. package/assets/shared/icons/video/download.svg +4 -0
  134. package/assets/shared/icons/video/fullScreen.PNG +0 -0
  135. package/assets/shared/icons/video/fullScreen.svg +7 -0
  136. package/assets/shared/icons/video/minimize.png +0 -0
  137. package/assets/shared/icons/video/mute.png +0 -0
  138. package/assets/shared/icons/video/mute.svg +7 -0
  139. package/assets/shared/icons/video/next10.PNG +0 -0
  140. package/assets/shared/icons/video/next10.svg +7 -0
  141. package/assets/shared/icons/video/pause.PNG +0 -0
  142. package/assets/shared/icons/video/pause.svg +5 -0
  143. package/assets/shared/icons/video/pictureInPicture.png +0 -0
  144. package/assets/shared/icons/video/pictureInPicture.svg +5 -0
  145. package/assets/shared/icons/video/pictureInPictureOff.svg +7 -0
  146. package/assets/shared/icons/video/play.svg +4 -0
  147. package/assets/shared/icons/video/primary-play.png +0 -0
  148. package/assets/shared/icons/video/primaryPlay.svg +22 -0
  149. package/assets/shared/icons/video/sound.svg +8 -0
  150. package/assets/shared/icons/video/speaker.PNG +0 -0
  151. package/assets/shared/trackChanges/edit.svg +11 -0
  152. package/assets/shared/trackChanges/message-plus.svg +14 -0
  153. package/assets/shared/trackChanges/show-comments.svg +5 -0
  154. package/assets/shared/trackChanges/text-reference.svg +3 -0
  155. package/assets/shared/trackChanges/trash.svg +9 -0
  156. package/atoms/index.d.ts +836 -0
  157. package/constants/index.d.ts +795 -0
  158. package/decorators/index.d.ts +3 -0
  159. package/dialogs/index.d.ts +41 -0
  160. package/directives/index.d.ts +55 -0
  161. package/environment/index.d.ts +129 -0
  162. package/errors/index.d.ts +26 -0
  163. package/fesm2022/herum-shared-animations.mjs +41 -0
  164. package/fesm2022/herum-shared-animations.mjs.map +1 -0
  165. package/fesm2022/herum-shared-atoms.mjs +2919 -0
  166. package/fesm2022/herum-shared-atoms.mjs.map +1 -0
  167. package/fesm2022/herum-shared-constants.mjs +711 -0
  168. package/fesm2022/herum-shared-constants.mjs.map +1 -0
  169. package/fesm2022/herum-shared-decorators.mjs +12 -0
  170. package/fesm2022/herum-shared-decorators.mjs.map +1 -0
  171. package/fesm2022/herum-shared-dialogs.mjs +113 -0
  172. package/fesm2022/herum-shared-dialogs.mjs.map +1 -0
  173. package/fesm2022/herum-shared-directives.mjs +226 -0
  174. package/fesm2022/herum-shared-directives.mjs.map +1 -0
  175. package/fesm2022/herum-shared-environment.mjs +10 -0
  176. package/fesm2022/herum-shared-environment.mjs.map +1 -0
  177. package/fesm2022/herum-shared-errors.mjs +71 -0
  178. package/fesm2022/herum-shared-errors.mjs.map +1 -0
  179. package/fesm2022/herum-shared-fetched-message.mjs +118 -0
  180. package/fesm2022/herum-shared-fetched-message.mjs.map +1 -0
  181. package/fesm2022/herum-shared-herum-types.mjs +106 -0
  182. package/fesm2022/herum-shared-herum-types.mjs.map +1 -0
  183. package/fesm2022/herum-shared-molecules.mjs +1530 -0
  184. package/fesm2022/herum-shared-molecules.mjs.map +1 -0
  185. package/fesm2022/herum-shared-mongo-molecules.mjs +269 -0
  186. package/fesm2022/herum-shared-mongo-molecules.mjs.map +1 -0
  187. package/fesm2022/herum-shared-mongo-services.mjs +441 -0
  188. package/fesm2022/herum-shared-mongo-services.mjs.map +1 -0
  189. package/fesm2022/herum-shared-mongo.mjs +729 -0
  190. package/fesm2022/herum-shared-mongo.mjs.map +1 -0
  191. package/fesm2022/herum-shared-objectsExample.mjs +190 -0
  192. package/fesm2022/herum-shared-objectsExample.mjs.map +1 -0
  193. package/fesm2022/herum-shared-pipes.mjs +406 -0
  194. package/fesm2022/herum-shared-pipes.mjs.map +1 -0
  195. package/fesm2022/herum-shared-services.mjs +1107 -0
  196. package/fesm2022/herum-shared-services.mjs.map +1 -0
  197. package/fesm2022/herum-shared-static-services.mjs +140 -0
  198. package/fesm2022/herum-shared-static-services.mjs.map +1 -0
  199. package/fesm2022/herum-shared-table.mjs +837 -0
  200. package/fesm2022/herum-shared-table.mjs.map +1 -0
  201. package/fesm2022/herum-shared-testsObjects.mjs +5722 -0
  202. package/fesm2022/herum-shared-testsObjects.mjs.map +1 -0
  203. package/fesm2022/herum-shared-tokens.mjs +13 -0
  204. package/fesm2022/herum-shared-tokens.mjs.map +1 -0
  205. package/fesm2022/herum-shared-utils.mjs +380 -0
  206. package/fesm2022/herum-shared-utils.mjs.map +1 -0
  207. package/fesm2022/herum-shared-validators.mjs +76 -0
  208. package/fesm2022/herum-shared-validators.mjs.map +1 -0
  209. package/fesm2022/herum-shared.mjs +11709 -0
  210. package/fesm2022/herum-shared.mjs.map +1 -0
  211. package/fetched-message/index.d.ts +49 -0
  212. package/herum-types/index.d.ts +198 -0
  213. package/index.d.ts +2946 -0
  214. package/molecules/index.d.ts +458 -0
  215. package/mongo/index.d.ts +175 -0
  216. package/mongo/molecules/index.d.ts +76 -0
  217. package/mongo/services/index.d.ts +98 -0
  218. package/objectsExample/index.d.ts +11 -0
  219. package/package.json +128 -0
  220. package/pipes/index.d.ts +93 -0
  221. package/services/index.d.ts +266 -0
  222. package/static-services/index.d.ts +25 -0
  223. package/styles/_mixin.scss +86 -0
  224. package/styles/collection-wizard-layout.component.scss +70 -0
  225. package/styles/dialogs.scss +49 -0
  226. package/styles/forms.scss +18 -0
  227. package/styles/overView.scss +115 -0
  228. package/styles/variables/_colors.college.scss +65 -0
  229. package/styles/variables/_colors.scss +161 -0
  230. package/styles/variables/_sizes.scss +73 -0
  231. package/styles/wizard-steps-layout.scss +21 -0
  232. package/table/index.d.ts +233 -0
  233. package/testsObjects/index.d.ts +91 -0
  234. package/tokens/index.d.ts +8 -0
  235. package/utils/index.d.ts +92 -0
  236. package/validators/index.d.ts +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herum-shared-services.mjs","sources":["../../../projects/herum-shared/services/graph-ql.service.ts","../../../projects/herum-shared/services/auth.service.ts","../../../projects/herum-shared/services/common-graphql-requests.service.ts","../../../projects/herum-shared/services/db-actions-inner-id-manager.service.ts","../../../projects/herum-shared/services/db-action-requests.service.ts","../../../projects/herum-shared/services/global-keyboard-listener.service.ts","../../../projects/herum-shared/services/key-press.service.ts","../../../projects/herum-shared/services/loader-manager.service.ts","../../../projects/herum-shared/services/micro-resources.service.ts","../../../projects/herum-shared/services/resource-data-builder.service.ts","../../../projects/herum-shared/services/system-styling.service.ts","../../../projects/herum-shared/services/track-text-changes.service.ts","../../../projects/herum-shared/services/herum-shared-services.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map, shareReplay } from 'rxjs/operators';\r\nimport { GQLVariable, GraphQLFilter, GraphQlOffsetPaging, GraphQLOrder, GraphQlQuery, GraphQlResult } from 'herum-shared/herum-types';\r\n\r\nimport { regexExpressions } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\nexport const NestedConditionSigniture = \"filters\";\r\n\r\nconst defaultPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage, startCursor, endCursor }\";\r\nconst offsetPagingDataFormat = \"pageInfo { hasNextPage, hasPreviousPage }\";\r\n\r\nconst DefaultQueryName = \"DefaultQueryName\"\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GraphQLService {\r\n\r\n constructor(private httpClient: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n executeQuery(gqlQuery: GraphQlQuery, isListQuery: boolean = true, isOffsetPagination: boolean = false): Observable<any> {\r\n let variablesObjectForBody: Record<string, string>;\r\n let variablesStringForQuerySignature: string;\r\n\r\n if (gqlQuery.variables) {\r\n variablesObjectForBody = this.generateVariablesObjectForBody(gqlQuery.variables);\r\n variablesStringForQuerySignature = this.generateVariablesStringForQuerySigniture(gqlQuery.variables, gqlQuery.queryName);\r\n }\r\n\r\n const query = this.generateQuery(\r\n gqlQuery.resolverName,\r\n gqlQuery.formatExample,\r\n gqlQuery.filters,\r\n gqlQuery.paging?.first,\r\n gqlQuery.paging?.after,\r\n gqlQuery.offsetPaging,\r\n gqlQuery.variables?.length > 0 ? variablesStringForQuerySignature : '',\r\n gqlQuery.order,\r\n gqlQuery.conditionPaths,\r\n gqlQuery.orderPaths,\r\n gqlQuery.offsetPagingPaths,\r\n isListQuery,\r\n isOffsetPagination\r\n ).replace(regexExpressions.curlyBraces, '');\r\n\r\n return this.httpClient.post<GraphQlResult>(\r\n this.environmentConfig?.graphQLConfiguration?.serverBasePath,\r\n { query: query, variables: variablesObjectForBody }, { headers: gqlQuery.headers })\r\n .pipe(shareReplay(1), map(res => {\r\n return res.data ? res.data[gqlQuery.resolverName] : null\r\n }));\r\n }\r\n\r\n getFreeTextCondition(freeText: string, orConditionKeys: string[]) {\r\n let filters = {\r\n and: []\r\n }\r\n\r\n freeText.split(\" \").forEach(substring => {\r\n let orIteration = []\r\n orConditionKeys.forEach(orConditionKey => {\r\n orIteration.push({\r\n [orConditionKey]: { contains: substring }\r\n })\r\n })\r\n\r\n filters.and.push({ or: orIteration });\r\n })\r\n\r\n return filters;\r\n }\r\n\r\n generateFilterStringDynamically(ids: string[], key: string, type: ('String' | 'Number')) {\r\n let filters = [];\r\n let variables: GQLVariable[] = [];\r\n\r\n ids.forEach((id, index) => {\r\n let newFilter = {}\r\n newFilter[key] = {\r\n eq: '$' + key + index\r\n };\r\n filters.push(newFilter);\r\n variables.push({\r\n name: key + index,\r\n value: id,\r\n type\r\n });\r\n });\r\n return { filters, variables };\r\n }\r\n\r\n convertToResolverNameFormat(mongoCollectionName: string) {\r\n return mongoCollectionName.charAt(0).toLowerCase() + mongoCollectionName.slice(1);\r\n }\r\n generateQuery(resolverName: string, formatExample: any, condition?: GraphQLFilter, first?: number, after?: string, offsetPaging?: GraphQlOffsetPaging, variablesStringForQuerySigniture?: string, order?: GraphQLOrder, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?: { [path: string]: GraphQlOffsetPaging }, isListQuery?: boolean, isOffsetPagination?: boolean) {\r\n const conditionString = this.generateConditionString(condition);\r\n const returnFormat = this.getKeysString(formatExample, conditionPaths, orderPaths, offsetPagingPaths);\r\n\r\n let orderString = order ? `order:${this.generateOrderString(order)},` : '';\r\n\r\n let pagingString = '';\r\n\r\n if (isListQuery) {\r\n pagingString = isOffsetPagination\r\n ? (offsetPaging?.skip > -1 || offsetPaging?.take > -1 ? this.generateOffsetPagingString(offsetPaging) : '')\r\n : (first || after ? this.generatePagingString(first, after) : '');\r\n }\r\n\r\n if (after) pagingString += ','\r\n\r\n const resolverParameters = (orderString + pagingString + conditionString) == '' ? '' : '(' + orderString + pagingString + conditionString + ')';\r\n\r\n if (pagingString != '') pagingString += ',';\r\n\r\n const elementsName = isOffsetPagination ? 'items' : 'nodes';\r\n\r\n const query = `query ${variablesStringForQuerySigniture ? variablesStringForQuerySigniture : ''} { \r\n ${resolverName + resolverParameters} { ${isListQuery ? (isOffsetPagination ? offsetPagingDataFormat : defaultPagingDataFormat) + `,totalCount , ${elementsName} {` : ''} ${returnFormat} } ${isListQuery ? '}' : ''} }`\r\n return query;\r\n }\r\n\r\n private generateConditionString(condition?: GraphQLFilter, isRecursiveCall: boolean = false): string {\r\n let conditionString = \"\";\r\n\r\n if (!condition || (!condition.and || condition.and?.length == 0) && (!condition.or || condition.or?.length == 0))\r\n return conditionString;\r\n\r\n if (condition) {\r\n conditionString = isRecursiveCall ? \"\" : \"where: {\";\r\n if (condition?.and) {\r\n let andString = \"\"\r\n\r\n condition.and.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n andString += `{${this.generateConditionString(filter, true)}},` :\r\n andString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n andString = andString.slice(0, -1);\r\n conditionString += `and: [${andString}]`;\r\n conditionString += condition.or ? ',' : '';\r\n }\r\n\r\n if (condition?.or) {\r\n let orString = \"\"\r\n\r\n condition.or.forEach(filter => orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`)\r\n condition.or.forEach(filter => {\r\n (Object.keys(filter)[0] == 'or' || Object.keys(filter)[0] == 'and') ?\r\n orString += `{${this.generateConditionString(filter, true)}},` :\r\n orString += `{${this.getKeysString(filter, null, null, null, null, true)}},`\r\n })\r\n\r\n orString = orString.slice(0, -1);\r\n conditionString += `or: [${orString} ]`;\r\n }\r\n\r\n conditionString += isRecursiveCall ? \"\" : \"}\";\r\n }\r\n\r\n return conditionString;\r\n }\r\n\r\n private generatePagingString(first?: number, after?: string) {\r\n let result = ''\r\n\r\n result += first ? `first:${first},` : '';\r\n result += after ? ` after:\"${after}\"` : '';\r\n\r\n return result;\r\n }\r\n\r\n private generateOffsetPagingString(offsetPaging: GraphQlOffsetPaging) {\r\n const { skip, take } = offsetPaging;\r\n\r\n let result = ''\r\n\r\n result += skip > -1 ? `skip:${skip},` : '';\r\n result += take > -1 ? ` take:${take}, ` : '';\r\n\r\n return result;\r\n }\r\n private getKeysString(obj, conditionPaths?: { [path: string]: GraphQLFilter }, orderPaths?: { [path: string]: GraphQLOrder }, offsetPagingPaths?, parentKey = null, isConditionString = false): string {\r\n let result = '';\r\n\r\n for (const key in obj) {\r\n result += `${key}`;\r\n\r\n if (((conditionPaths && conditionPaths[key]) || (orderPaths && orderPaths[key])) && !isConditionString) {\r\n result += '(';\r\n if (conditionPaths && conditionPaths[key]) result += this.generateConditionString(conditionPaths[key])\r\n if (orderPaths && orderPaths[key]) result += this.getKeysString(orderPaths[key], null, null, null, null, true)\r\n if (offsetPagingPaths && offsetPagingPaths[key]) result += (offsetPagingPaths[key].skip > -1 || offsetPagingPaths[key].take > -1) ? `,${this.generateOffsetPagingString(offsetPagingPaths[key])}` : ''\r\n result += `)`;\r\n }\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '{items';\r\n\r\n if (obj[key]?.length > 0 && !isConditionString && obj[key] !== null && typeof obj[key] !== 'string') {\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key][0], conditionPaths, orderPaths, key, isConditionString)} }`;\r\n }\r\n\r\n else if (typeof obj[key] === 'object' && obj[key] !== null && typeof obj[key] !== 'string')\r\n result += isConditionString ? `: { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, key, isConditionString)} }` :\r\n ` { ${this.getKeysString(obj[key], conditionPaths, orderPaths, offsetPagingPaths, parentKey + '.' + key, isConditionString)} }`;\r\n\r\n else if (typeof obj[key] === 'string' && obj[key] !== null && isConditionString)\r\n result += (obj[key][0] == '$' || obj[key].includes('ASC') || obj[key].includes('DESC')) ? `: ${obj[key]}` : `: \"${obj[key]}\"`;\r\n\r\n else if (typeof obj[key] === 'number' && obj[key] !== null && isConditionString)\r\n result += `: ${JSON.stringify(obj[key])}`;\r\n\r\n else if (typeof obj[key] === 'boolean' && obj[key] !== null && isConditionString)\r\n result += `: ${obj[key]}`;\r\n\r\n if (offsetPagingPaths && offsetPagingPaths[key])\r\n result += '}';\r\n\r\n result += ', ';\r\n }\r\n\r\n return result.slice(0, -2);\r\n }\r\n\r\n private generateVariablesObjectForBody(variables: GQLVariable[]) {\r\n return variables.reduce((acc, obj) => {\r\n acc[obj.name] = obj.value;\r\n return acc;\r\n }, {} as Record<string, string>);\r\n }\r\n\r\n private generateVariablesStringForQuerySigniture(variables: GQLVariable[], queryName: string) {\r\n if (!queryName) queryName = DefaultQueryName;\r\n\r\n let result = (queryName ? queryName : DefaultQueryName) + '(';\r\n\r\n variables.forEach(variable => {\r\n result += \"$\" + variable.name + \":\" + variable.type + \",\";\r\n })\r\n result = result.slice(0, -1) + \")\";\r\n\r\n return result;\r\n }\r\n\r\n generateOrderString<T extends {}>(order: T) {\r\n let orderString = '{';\r\n\r\n Object.keys(order).forEach((key, index, keys) => {\r\n orderString += typeof order[key] === 'object' ?\r\n `${key}:${this.generateOrderString(order[key])}` :\r\n `${key}:${order[key]}`;\r\n\r\n if (index < keys.length - 1)\r\n orderString += ',';\r\n }\r\n );\r\n\r\n return orderString + '}';\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { SignUpFormData, SignInFormData } from 'herum-shared/herum-types'\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { StorageService } from 'herum-shared/static-services';\r\nimport { Router } from '@angular/router';\r\nimport { selfIsTeacherExample } from 'herum-shared/objectsExample';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { AuthenticationResponse, BackendLoginFormat } from 'herum-shared/herum-types';\r\nimport { SecurityQuestion } from 'herum-shared/herum-types';\r\nimport { toHash } from 'herum-shared/utils';\r\n\r\nconst AuthStorageKey = 'AUTH_SESSION_ID';\r\nconst headers = new HttpHeaders({ 'Content-Type': 'application/json' })\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n sessionId$: BehaviorSubject<string> = new BehaviorSubject('');\r\n isTeacher$: Subject<boolean> = new Subject();\r\n\r\n constructor(private http: HttpClient, private router: Router,\r\n private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n let sessionId = StorageService.getItem(AuthStorageKey);\r\n\r\n if (!sessionId)\r\n return;\r\n\r\n this.sessionId$.next(sessionId);\r\n }\r\n\r\n tryLogin(signInFormData: SignInFormData): Observable<AuthenticationResponse> {\r\n const personalId = signInFormData.personalId;\r\n\r\n let loginFormat: BackendLoginFormat = {\r\n identifier: personalId,\r\n hash: toHash(this.generateStringForAuthenticationHash(personalId, signInFormData.militaryId))\r\n };\r\n\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.tryLogin, loginFormat)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)))\r\n }\r\n\r\n getUserIdentificationQuestions(personalId: string) {\r\n return this.http.get(this.environmentConfig?.environment?.siteServerPath + `/Authentication/SecurityQuestions/${personalId}`);\r\n }\r\n\r\n signUp(signUpData: SignUpFormData): Observable<AuthenticationResponse> {\r\n return this.http.post<AuthenticationResponse>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.signUp, signUpData)\r\n .pipe(map((authenticationResponse) => this.handleNewSessionId(authenticationResponse)));\r\n }\r\n\r\n logout() {\r\n this.clearSession()\r\n this.router.navigate(['/login']);\r\n }\r\n\r\n clearSession() {\r\n StorageService.deleteAll();\r\n this.sessionId$.next('');\r\n }\r\n\r\n isValidSessionId(sessionId: string): Observable<boolean> {\r\n let jSessionId = JSON.stringify(sessionId ?? '');\r\n return this.http.post<boolean>(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.authenticationPaths?.isValidSessionId, jSessionId, { headers: headers });\r\n }\r\n\r\n isTeacher(): Observable<boolean> {\r\n let userQuery = {\r\n resolverName: 'self',\r\n formatExample: selfIsTeacherExample,\r\n conditionPaths: { collegeStudyingLessons: { and: [{ lesson: { isDeleted: { eq: false } } }] } }\r\n };\r\n\r\n return this.gql.executeQuery(userQuery, false).pipe(map(user => {\r\n const isTeacher = !(!user.collegeTeacherAssignments || user.collegeTeacherAssignments.length == 0) ||\r\n !(!user.collegeTeachingLessons || user.collegeTeachingLessons.length == 0) ||\r\n !(!user.collegeCheckingLessons || user.collegeCheckingLessons.length == 0) || user.isAdmin == true;\r\n\r\n this.isTeacher$.next(isTeacher);\r\n return isTeacher;\r\n }))\r\n }\r\n\r\n setIdentificationQuestions(password: string, questions: { question: string, answer: string }[]) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/UpdateLoginData', {\r\n password,\r\n securityQuestions: questions.map(question => ({ ...question, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n resetPassword(securityQuestions: SecurityQuestion[], personalId: string, newPassword: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/ResetPassword', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) })),\r\n newPassword: newPassword\r\n })\r\n }\r\n\r\n securityCheck(securityQuestions: SecurityQuestion[], personalId: string) {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + '/Authentication/SecurityCheck', {\r\n personalId: personalId,\r\n answers: securityQuestions.map(question => ({ questionId: question._id, answer: toHash(question.answer) }))\r\n })\r\n }\r\n\r\n handleNewSessionId(authenticationResponse: AuthenticationResponse): AuthenticationResponse {\r\n if (authenticationResponse.sessionId?.length > 0)\r\n this.updateSessionId(authenticationResponse.sessionId);\r\n\r\n return authenticationResponse;\r\n }\r\n\r\n private updateSessionId(newValue: string) {\r\n this.sessionId$.next(newValue);\r\n StorageService.setItem(AuthStorageKey, newValue);\r\n }\r\n\r\n private generateStringForAuthenticationHash(personalId: string, militaryId: string) {\r\n return personalId + militaryId;\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { permissionsTemplatesExample, closedListExample } from 'herum-shared/objectsExample';\r\nimport { User } from 'herum-shared/herum-types';\r\nimport { GraphQLService } from './graph-ql.service';\r\nimport { generalKeys } from 'herum-shared/constants';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { Group } from 'herum-shared/herum-types';\r\nimport { GraphQlQuery } from 'herum-shared/herum-types';\r\nimport { ClosedList } from 'herum-shared/herum-types';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CommonGraphqlRequestsService {\r\n\r\n constructor(private gql: GraphQLService, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getGroupsByIds(ids: string[], formatExample: Group): Observable<Group[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(ids, 'id', 'String');\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Groups),\r\n formatExample: formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n }\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlGroups => gqlGroups?.nodes));\r\n }\r\n\r\n getClosedLists(names?: string[]): Observable<ClosedList[] | ClosedList> {\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.ClosedLists),\r\n formatExample: closedListExample,\r\n filters: { and: [{ isDeleted: { eq: false } }] },\r\n variables: []\r\n };\r\n\r\n names?.forEach((name, i) => {\r\n if (query.filters.or)\r\n query.filters.or.push({\r\n name: {\r\n eq: '$name' + i\r\n },\r\n });\r\n else\r\n query.filters.or = [{\r\n name: {\r\n eq: '$name' + i\r\n },\r\n }];\r\n\r\n query.variables.push({\r\n name: 'name' + i,\r\n value: name,\r\n type: 'String'\r\n });\r\n });\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResult => gqlResult.nodes));\r\n }\r\n\r\n getUsersByIds(usersIds: string[], formatExample: User): Observable<User[]> {\r\n let filterQuery = this.gql.generateFilterStringDynamically(usersIds, generalKeys.id, 'String');\r\n\r\n let query: GraphQlQuery = {\r\n resolverName: this.gql.convertToResolverNameFormat(this.environmentConfig?.mongoUpdates?.Collections?.Users),\r\n formatExample,\r\n filters: {\r\n or: filterQuery.filters\r\n },\r\n variables: filterQuery.variables\r\n };\r\n\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse?.nodes));\r\n }\r\n\r\n getPermissionsTemplates() {\r\n let query: GraphQlQuery = {\r\n resolverName: 'permissionsTemplates',\r\n formatExample: permissionsTemplatesExample,\r\n }\r\n return this.gql.executeQuery(query).pipe(map(gqlResponse => gqlResponse.nodes))\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { generalKeys } from 'herum-shared/constants';\r\n\r\nexport const innerUniqListItemKey = '_id';\r\nexport const emptyValueFlagForCreationUniqListItem = 'null';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionsInnerIdManagerService {\r\n\r\n determineIfInnerIdIsNeeded(value: any[]) {\r\n if (!Array.isArray(value))\r\n return;\r\n\r\n if (value[0][innerUniqListItemKey])\r\n value[0].id = value[0][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ? null : value[0][innerUniqListItemKey];\r\n }\r\n\r\n deleteInnerIdFieldIfExist(itemToAttach: { [key: string]: any }, itemValue: { [key: string]: any }) {\r\n if (itemValue.hasOwnProperty(innerUniqListItemKey)) {\r\n itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id] =\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey] == emptyValueFlagForCreationUniqListItem ?\r\n null :\r\n itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][innerUniqListItemKey];\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { switchMap } from 'rxjs/operators';\r\nimport { ModelInfo } from 'herum-shared/herum-types';\r\nimport { Observable } from 'rxjs';\r\nimport { generalKeys, uploadsManagerKeys, assignmentMetadata, skipToastHeader } from 'herum-shared/constants';\r\nimport { DbActionsInnerIdManagerService } from './db-actions-inner-id-manager.service';\r\nimport { DbActionResponse } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { buildPath, setHeaders } from 'herum-shared/utils';\r\nimport { remainJustWantedValueInDictionary } from 'herum-shared/utils';\r\n\r\nconst ATTACH: string = \"Attach\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DbActionRequestsService {\r\n\r\n constructor(private http: HttpClient, private dbActionsInnerIdManagerService: DbActionsInnerIdManagerService,\r\n @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig\r\n ) { }\r\n\r\n getFileRequest(request: any, file: File): FormData {\r\n const formData: FormData = new FormData();\r\n formData.append(generalKeys.newFileRequest, JSON.stringify(request));\r\n formData.append(generalKeys.file, file);\r\n return formData;\r\n }\r\n\r\n addOrUpdateAndAttachBulkWithFile(mongoCollectionName: string, fields: { [key: string]: any }, file: File, ids: string[], uploadsManagerTitle?: string, skipToast?: boolean) {\r\n let headers: HttpHeaders = this.setAddOrUpdateAndAttachBulkWithFileHeaders([uploadsManagerTitle, skipToast]);\r\n\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n if (fields.files)\r\n delete fields.files;\r\n\r\n const splittedFields = this.splitFieldByType(fields, modelInfo);\r\n const request = {\r\n DbBasicActionRequest: {\r\n data: splittedFields.keysToUpdate,\r\n ids\r\n },\r\n DbAttachmentActionRequests: this.getFormattedAttachments(ids, splittedFields.keysToAttach, splittedFields.keysToAttachInDifferentModel, modelInfo)\r\n };\r\n\r\n return this.http.put(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.AddOrUpdate,\r\n this.environmentConfig?.mongoUpdates?.Submethods?.AndAttach,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk,\r\n this.environmentConfig?.mongoUpdates?.Options?.SetFile]),\r\n this.getFileRequest(request, file), { responseType: 'text', reportProgress: !!file, headers });\r\n }))\r\n }\r\n\r\n setAddOrUpdateAndAttachBulkWithFileHeaders(headerToSet: any[]) {\r\n let headers: HttpHeaders = null;\r\n const [uploadsManagerTitle, skipToast] = headerToSet;\r\n\r\n if (uploadsManagerTitle)\r\n headers = setHeaders(new HttpHeaders(), [{ key: uploadsManagerKeys.uploadsManagerTitleHeader, value: uploadsManagerTitle }], true);\r\n\r\n if (skipToast)\r\n headers = skipToastHeader;\r\n\r\n return headers;\r\n }\r\n\r\n AndAttachBulk(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[], method: 'create' | 'addOrUpdate', attachmentsToUpdate?: { [key: string]: any }): Observable<DbActionResponse> {\r\n if (ids.every(id => !id))\r\n ids = undefined;\r\n\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n const splittedFields = this.splitFieldByType(fields, modelInfo);\r\n\r\n const request = {\r\n DbBasicActionRequest: {\r\n data: Object.assign(splittedFields.keysToUpdate, attachmentsToUpdate),\r\n ids\r\n },\r\n DbAttachmentActionRequests: this.getFormattedAttachments(ids, splittedFields.keysToAttach, splittedFields.keysToAttachInDifferentModel, modelInfo)\r\n };\r\n\r\n if (method == 'create') delete request.DbBasicActionRequest.ids;\r\n\r\n return this.http.request<DbActionResponse>(\r\n method == 'create' ? 'post' : 'put',\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n method == 'addOrUpdate' ? this.environmentConfig?.mongoUpdates?.Methods?.AddOrUpdate : this.environmentConfig?.mongoUpdates?.Methods?.Create,\r\n this.environmentConfig?.mongoUpdates?.Submethods?.AndAttach,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk]),\r\n { body: request });\r\n }))\r\n }\r\n\r\n basicBulk(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[], requestType: string, skipToast?: boolean) {\r\n return this.getMongoCollectionModelInfo(mongoCollectionName).pipe(switchMap((modelInfo: { [key: string]: ModelInfo }) => {\r\n const updatedFields = remainJustWantedValueInDictionary(generalKeys.id, fields);\r\n const splitedFields = this.splitFieldByType(fields, modelInfo);\r\n\r\n const requests = Object.entries(updatedFields).map(([field, value]) => {\r\n const fieldModelInfo: ModelInfo = splitedFields.keysToAttachInDifferentModel[field];\r\n\r\n return fieldModelInfo?.sourceField ?\r\n this.buildMirrorSourceCollectionRequestsData(value as { id: string }[], fieldModelInfo.sourceField, fieldModelInfo.innerPreviewModelName, ids[0], requestType, fieldModelInfo.attachedToType)\r\n : this.buildSourceCollectionRequestsData(ids, { [field]: value }, requestType, mongoCollectionName);\r\n }\r\n );\r\n\r\n let headers: HttpHeaders = null;\r\n if (skipToast)\r\n headers = skipToastHeader;\r\n\r\n return this.http.post(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.Basic,\r\n this.environmentConfig?.mongoUpdates?.Options?.Bulk,\r\n ]),\r\n { requests }, { headers });\r\n }));\r\n }\r\n\r\n private buildSourceCollectionRequestsData(mongoSourceCollectionIds: string[], data: { [key: string]: any }, requestType: string, mongoSourceCollectionName: string) {\r\n return {\r\n ids: mongoSourceCollectionIds,\r\n data,\r\n requestType,\r\n actOnType: mongoSourceCollectionName\r\n };\r\n }\r\n\r\n private buildMirrorSourceCollectionRequestsData(fieldValue: { id: string }[], sourceField: string, innerPreviewModelName: string, mongoSourceCollectionId: string, requestType: string, attachedToType: string) {\r\n return {\r\n ids: this.arrayOfIdObjectsToIdsArray(fieldValue),\r\n data: this.buildBasicBulkObjectData(sourceField, innerPreviewModelName, mongoSourceCollectionId),\r\n requestType,\r\n actOnType: attachedToType\r\n };\r\n }\r\n\r\n private arrayOfIdObjectsToIdsArray(array: { id: string }[]) {\r\n return array.map(object => object.id);\r\n }\r\n\r\n private buildBasicBulkObjectData(sourceField: string, innerPreviewModelName: string, mongoSourceCollectionId: string) {\r\n const value = innerPreviewModelName ? { [innerPreviewModelName]: { id: mongoSourceCollectionId } } : { id: mongoSourceCollectionId };\r\n\r\n return { [sourceField]: [value] };\r\n }\r\n\r\n deleteMongoDocument(mongoCollectionName: string, ids: string[]) {\r\n return this.http.post(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.Delete,\r\n ]),\r\n ids);\r\n }\r\n\r\n deletePreviewItemsFromList(mongoCollectionName: string, fields: { [key: string]: any }, ids: string[]) {\r\n const request = {\r\n ids,\r\n data: fields\r\n };\r\n\r\n return this.http.put(\r\n buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.ListItemDeletion]),\r\n request);\r\n }\r\n\r\n getFormattedAttachments(ids: string[], objectsToAttach: { [key: string]: any }, keysToAttachInDifferentModel: { [key: string]: any }, modelInfo: { [key: string]: ModelInfo }) {\r\n let result = [];\r\n\r\n Object.keys(objectsToAttach).forEach(keyToAttach => {\r\n let attachments = {};\r\n\r\n if (Array.isArray(objectsToAttach[keyToAttach]))\r\n objectsToAttach[keyToAttach].forEach((itemToAttach: { [key: string]: any }) => {\r\n const itemKey: string = Object.keys(itemToAttach)[0];\r\n const itemValue: { [key: string]: any } = itemToAttach[itemKey];\r\n\r\n this.dbActionsInnerIdManagerService.deleteInnerIdFieldIfExist(itemToAttach, itemValue);\r\n\r\n if (itemValue.hasOwnProperty(generalKeys.id) && itemValue[generalKeys.id] !== null)\r\n delete itemToAttach[Object.keys(itemToAttach)[0]][generalKeys.id];\r\n\r\n Object.assign(attachments, itemToAttach);\r\n });\r\n else\r\n attachments[objectsToAttach[keyToAttach]] = {};\r\n\r\n objectsToAttach[keyToAttach].forEach((objectToAttach: { [key: string]: any }, index: number) => {\r\n if (objectsToAttach[keyToAttach] && Object.keys(objectsToAttach[keyToAttach][index]) && attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]])\r\n Object.keys(attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]]).forEach(keyOfObjectToAttachData => {\r\n if (modelInfo[keyToAttach].innerPreviewModelName == keyOfObjectToAttachData || !modelInfo[keyToAttach].innerProperties.hasOwnProperty(keyOfObjectToAttachData))\r\n delete attachments[Object.keys(objectsToAttach[keyToAttach][index])[0]][keyOfObjectToAttachData];\r\n })\r\n })\r\n\r\n result.push({\r\n field: keyToAttach.charAt(0).toUpperCase() + keyToAttach.slice(1),\r\n attachments,\r\n ids\r\n });\r\n });\r\n\r\n Object.keys(keysToAttachInDifferentModel).forEach(field => {\r\n const extensionValue = Object.values(DbActionsInconsistencyMap[field].extension)[0];\r\n const updatedExtensionInfo = { [ids[0]]: extensionValue };\r\n\r\n let request = {\r\n field: keysToAttachInDifferentModel[field].sourceField,\r\n attachments: updatedExtensionInfo,\r\n ids: keysToAttachInDifferentModel[field].values.map(value => value.id),\r\n attachedToType: keysToAttachInDifferentModel[field].attachedToType\r\n }\r\n\r\n result.push(request);\r\n })\r\n\r\n return result;\r\n }\r\n\r\n splitFieldByType(fields: { [key: string]: any }, modelInfo: { [key: string]: ModelInfo }): { keysToAttach: { [key: string]: any }, keysToUpdate: { [key: string]: any }, keysToAttachInDifferentModel: { [key: string]: any } } {\r\n return Object.entries(fields).reduce((acc, [key, value]) => {\r\n if (modelInfo[key] && (modelInfo[key].attachedToType == null || modelInfo[key].sourceField == null || modelInfo[key].sourceField == undefined)) {\r\n const group = modelInfo[key].propertyUpdateType === ATTACH ? 'keysToAttach' : 'keysToUpdate';\r\n if (value !== null && value !== undefined && (!Array.isArray(value) || value.length > 0)) {\r\n acc[group] = {\r\n ...acc[group], [key]: modelInfo[key].propertyUpdateType === ATTACH ?\r\n value?.map(value => {\r\n return { [value.id + '']: value }\r\n }) :\r\n value\r\n };\r\n\r\n this.dbActionsInnerIdManagerService.determineIfInnerIdIsNeeded(value);\r\n }\r\n }\r\n else {\r\n if (modelInfo[DbActionsInconsistencyMap[key]?.backendNaming])\r\n acc.keysToAttachInDifferentModel = {\r\n ...acc.keysToAttachInDifferentModel, [key]: {\r\n attachedToType: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.attachedToType,\r\n sourceField: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.sourceField,\r\n innerPreviewModelName: modelInfo[DbActionsInconsistencyMap[key].backendNaming]?.innerPreviewModelName,\r\n values: fields[key]\r\n }\r\n }\r\n else\r\n acc.keysToAttachInDifferentModel = {\r\n ...acc.keysToAttachInDifferentModel, [key]: {\r\n attachedToType: modelInfo[key]?.attachedToType,\r\n sourceField: modelInfo[key]?.sourceField,\r\n innerPreviewModelName: modelInfo[key]?.innerPreviewModelName,\r\n values: fields[key]\r\n }\r\n }\r\n }\r\n\r\n return acc;\r\n }, { keysToAttach: {}, keysToUpdate: {}, keysToAttachInDifferentModel: {} });\r\n }\r\n\r\n getMongoCollectionModelInfo(mongoCollectionName: string): Observable<{ [key: string]: ModelInfo }> {\r\n return this.http.get<{ [key: string]: ModelInfo }>(buildPath([\r\n this.environmentConfig?.environment?.siteServerPath,\r\n mongoCollectionName,\r\n this.environmentConfig?.mongoUpdates?.Methods?.ModelInfo]));\r\n }\r\n}\r\n\r\nconst DbActionsInconsistencyMap = {\r\n groups: {\r\n backendNaming: \"members\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n }\r\n },\r\n },\r\n groupsPermissions: {\r\n backendNaming: \"permittedGroups\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"permission\": {\r\n \"update\": true\r\n }\r\n }\r\n },\r\n },\r\n groupsViewPermissions: {\r\n backendNaming: \"permittedGroups\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"permission\": {\r\n \"update\": false\r\n }\r\n }\r\n }\r\n },\r\n assignments: {\r\n backendNaming: \"assignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null,\r\n assignmentMetadata\r\n }\r\n }\r\n },\r\n \"collegeTeacherAssignments\": {\r\n backendNaming: \"collegeTeacherAssignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null\r\n }\r\n }\r\n },\r\n \"collegeStudentAssignments\": {\r\n backendNaming: \"collegeStudentAssignments\",\r\n extension: {\r\n \"NEW_VALUE\": {\r\n \"id\": null\r\n }\r\n }\r\n }\r\n};","import { Inject, Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { GlobalKeyboardEvent } from 'herum-shared/herum-types';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlobalKeyboardListenerService {\r\n\r\n globalKeyboardEvents$: Subject<GlobalKeyboardEvent> = new Subject<GlobalKeyboardEvent>();\r\n connection: WebSocket;\r\n\r\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) {\r\n this.initGlobalSocket();\r\n }\r\n\r\n initGlobalSocket() {\r\n if (this.connection) return;\r\n\r\n this.connection = new WebSocket(this.environmentConfig?.environment?.keyboardEventsLocalSocketPath);\r\n this.connection.onmessage = (webSocketMessage) => {\r\n const event: GlobalKeyboardEvent = JSON.parse(webSocketMessage.data);\r\n if (event.state == 'UP')\r\n this.globalKeyboardEvents$.next(event)\r\n }\r\n }\r\n\r\n get globalKeysToChromeKeysNames() {\r\n return {\r\n 'NUMPAD 0': 'Insert',\r\n 'NUMPAD 1': 'End',\r\n 'NUMPAD 2': 'ArrowDown',\r\n 'NUMPAD 3': 'PageDown',\r\n 'NUMPAD 4': 'ArrowLeft',\r\n 'NUMPAD 5': 'Clear',\r\n 'NUMPAD 6': 'ArrowRight',\r\n 'NUMPAD 7': 'Home',\r\n 'NUMPAD 8': '',\r\n 'NUMPAD 9': 'PageUp',\r\n }\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { attributes } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class KeyPressService {\r\n\r\n shouldPreventMacroKeyPress(event: KeyboardEvent, macroKeysPress: number[]) {\r\n const eventTarget = event.target as HTMLInputElement;\r\n const targetMacroKeys = eventTarget.getAttribute(attributes.preventMacroKeysPressEvent)?.split(\",\").map(Number);\r\n const targetHasPreventMacroKeyPress = targetMacroKeys?.some(targetMacroKey => macroKeysPress.includes(targetMacroKey));\r\n\r\n return targetHasPreventMacroKeyPress || eventTarget.hasAttribute(attributes.contenteditable);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LoaderManagerService {\r\n\r\n loadersIds: string[] = [];\r\n loadingDescription: string = '';\r\n\r\n addLoader(loaderId: string, description?: string) {\r\n this.loadersIds.push(loaderId);\r\n this.loadingDescription = description;\r\n }\r\n\r\n changeDescription(description: string) {\r\n this.loadingDescription = description;\r\n }\r\n\r\n clear() {\r\n this.loadersIds = [];\r\n this.loadingDescription = '';\r\n }\r\n\r\n removeLoaderId(loaderIdToRemove: string) {\r\n let indexToRemove = this.loadersIds.findIndex(loaderId => loaderId == loaderIdToRemove);\r\n\r\n if (indexToRemove != -1)\r\n this.loadersIds.splice(indexToRemove, 1);\r\n }\r\n\r\n get isFullScreenLoading() {\r\n return this.loadersIds.length > 0\r\n };\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport {\r\n Lesson, LessonResourceSubscription, LessonStudentSubscription,\r\n BackendMicroResourceAuthorization, MicroResourceAuthorizationBase\r\n} from 'herum-shared/herum-types';\r\nimport { MicroResourceAuthorizationType, MicroResourceFrontData, Question, Resource } from 'herum-shared/herum-types';\r\nimport { defaultAuthorizationObject, resourceIdPlaceholder, defaultGrade } from 'herum-shared/constants';\r\nimport { forkJoin } from 'rxjs';\r\nimport { cloneDeep } from 'lodash';\r\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\r\nimport { ResourcePreview } from 'herum-shared/herum-types';\r\nimport { UsersLessonPermissionsDalResponse } from 'herum-shared/herum-types';\r\nimport { ResourceSubscription, UserQuestionData } from 'herum-shared/herum-types';\r\n\r\nexport const freeTextAnswerField: string = 'FreeTextAnswer';\r\nconst gradeField: string = 'Grade';\r\nconst answerNotesField: string = 'AnswerNotes[]';\r\nconst UserQuestionsDataPath: string = 'QuizData.UserQuestionsData';\r\n\r\nexport type studentInnerAuthorizationSubscription = { user?: { id: string }, innerAuthorizations?: BackendMicroResourceAuthorization[] };\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MicroResourcesService {\r\n\r\n constructor(private http: HttpClient, @Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\r\n\r\n getAssignmentUpdateTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date, closingTime: Date) {\r\n return [{\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n },\r\n {\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1]?.id, freeTextAnswerField),\r\n collectionItemType: '',\r\n openingTime,\r\n closingTime,\r\n authorizationType: MicroResourceAuthorizationType.update\r\n }]\r\n }\r\n\r\n getPublishGradeTimings(selectedResource: Partial<Resource & LessonResourceSubscription>, openingTime: Date = new Date(2999, 1, 1), closingTime?: Date) {\r\n return [{\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, gradeField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[0].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: this.buildQuestionPropertyPath(selectedResource.quiz.questions[1].id, answerNotesField)\r\n }, {\r\n authorizationType: MicroResourceAuthorizationType.view,\r\n closingTime: closingTime,\r\n collectionItemType: \"\",\r\n openingTime: openingTime,\r\n propertyPath: `Grade`\r\n }]\r\n }\r\n\r\n updateUserMicroResourceAuthorizationLocally(currentLesson: Lesson, studentId: string, microResourceAuthorizations: MicroResourceAuthorizationBase[], selectedResource: ResourcePreview) {\r\n currentLesson.students.find(student => student.student.id == studentId)\r\n .resourceSubscriptions.find(resourceSubscription => resourceSubscription.resourcePreview.id == selectedResource.id)\r\n .microResourceAuthorizations = microResourceAuthorizations\r\n }\r\n\r\n updateUserMicroResourceVisibility(microResource: MicroResourceFrontData, resource: Resource & LessonResourceSubscription, lesson: Lesson, user: LessonStudentSubscription) {\r\n let propertyPath: string;\r\n propertyPath = this.resolvePropertyPath(microResource.propertyPath, resource.quiz.questions);\r\n\r\n resource.microResourceAuthorizations = resource.microResourceAuthorizations.filter(\r\n microResourceAuthorization => microResourceAuthorization.propertyPath != \"\" &&\r\n microResourceAuthorization.propertyPath != propertyPath);\r\n\r\n resource.microResourceAuthorizations.push({\r\n propertyPath: propertyPath,\r\n collectionItemType: microResource.collectionItemType,\r\n openingTime: microResource.openingTime,\r\n closingTime: microResource.closingTime,\r\n authorizationType: MicroResourceAuthorizationType.view\r\n })\r\n\r\n return this.updateUserMicroResourceAuthorization(user.student.id, lesson, resource as unknown as ResourcePreview, resource.microResourceAuthorizations);\r\n }\r\n\r\n updateUserMicroResourceAuthorization(studentId: string, lesson: Lesson, resource: ResourcePreview, authorizations: MicroResourceAuthorizationBase[]) {\r\n return this.http.post<UsersLessonPermissionsDalResponse>(this.environmentConfig?.environment?.siteServerPath + '/Activity/UpdateAuthorizations',\r\n {\r\n userIds: [studentId],\r\n lessonId: lesson.id,\r\n resourceId: resource.id,\r\n authorizations\r\n }\r\n ).pipe(tap(() => {\r\n this.updateUserMicroResourceAuthorizationLocally(lesson, studentId, authorizations, resource)\r\n }))\r\n }\r\n\r\n resolvePropertyPath(\r\n path: string | ((question: (Question | UserQuestionData)[]) => string),\r\n questions: (Question | UserQuestionData)[]\r\n ) {\r\n return typeof path === 'function' ? path(questions) : path\r\n }\r\n\r\n isTimePass(date: string | number | Date) {\r\n if (!date) return false;\r\n return new Date(date).getTime() < new Date().getTime();\r\n }\r\n\r\n isAuthenticated(microResource: MicroResourceAuthorizationBase) {\r\n return this.isTimePass(microResource.openingTime) && !this.isTimePass(microResource.closingTime);\r\n }\r\n\r\n isQuestionAssignment(resourceSubscription: ResourceSubscription, questionType: string) {\r\n const question = resourceSubscription?.quizData?.userQuestionsData.find(userQuestionData => userQuestionData.questionType === questionType);\r\n\r\n if (!question)\r\n return false;\r\n\r\n return !!resourceSubscription.microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(question.id, freeTextAnswerField));\r\n }\r\n\r\n isQuestionPendingForCheck(resourceSubscription: ResourceSubscription, questionData: UserQuestionData) {\r\n const microResourceAuthorizations = resourceSubscription.microResourceAuthorizations;\r\n const questionId = questionData.id;\r\n\r\n const questionClosingTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, freeTextAnswerField) && microResourceAuthorization.authorizationType === MicroResourceAuthorizationType.update)?.closingTime;\r\n const gradePublishOpeningTime = microResourceAuthorizations?.find(microResourceAuthorization => microResourceAuthorization.propertyPath === this.buildQuestionPropertyPath(questionId, gradeField))?.openingTime;\r\n\r\n let isQuestionPendingForCheck: boolean = false;\r\n\r\n if (questionClosingTime && questionData.grade === defaultGrade) {\r\n isQuestionPendingForCheck = gradePublishOpeningTime ?\r\n new Date(questionClosingTime).getTime() < new Date().getTime() && new Date().getTime() < new Date(gradePublishOpeningTime).getTime() :\r\n new Date(questionClosingTime).getTime() < new Date().getTime();\r\n }\r\n\r\n return isQuestionPendingForCheck;\r\n }\r\n\r\n buildQuestionPropertyPath(id: string, field: string) {\r\n return `${UserQuestionsDataPath}[${id}].${field}`;\r\n }\r\n\r\n hasFillAuthorizationClosingTimePassed(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const fillAuthorizationPropertyPath = (defaultAuthorizationObject.fill().propertyPath as string).replace(resourceIdPlaceholder, resource.id);\r\n const fillAuthorization = innerAuthorizations?.find(auth => auth.propertyPath == fillAuthorizationPropertyPath && auth.authorizationType == MicroResourceAuthorizationType.fill);\r\n return this.isTimePass(fillAuthorization?.closingTime);\r\n }\r\n\r\n isPublishGradeAuthenticated(innerAuthorizations: BackendMicroResourceAuthorization[], resource: Resource) {\r\n const publishGradeInnerAuthorizations = this.getAuthorization(innerAuthorizations, defaultAuthorizationObject.resourceGrade(), MicroResourceAuthorizationType.view, resource);\r\n return publishGradeInnerAuthorizations ? this.isAuthenticated(publishGradeInnerAuthorizations) : false;\r\n }\r\n\r\n getAuthorization(innerAuthorizations: BackendMicroResourceAuthorization[], defaultAuthorizationObject: BackendMicroResourceAuthorization, MicroResourceAuthorizationType: MicroResourceAuthorizationType, resource: Resource) {\r\n const fillAuthorizationPropertyPath = defaultAuthorizationObject.propertyPath.replace(resourceIdPlaceholder, resource.id);\r\n return innerAuthorizations.find((innerAuthorization: BackendMicroResourceAuthorization) => innerAuthorization.propertyPath === fillAuthorizationPropertyPath && innerAuthorization.authorizationType === MicroResourceAuthorizationType);\r\n }\r\n\r\n createMultiResourceDefaultAuthorizations<T extends studentInnerAuthorizationSubscription>(students: T[], pageId: string, resourcesIds: string[], defaultAuthorizations: BackendMicroResourceAuthorization[], authorizations?: BackendMicroResourceAuthorization[]) {\r\n const updates = [];\r\n\r\n let microAuthorizations = [];\r\n\r\n if (authorizations) microAuthorizations = authorizations;\r\n else {\r\n resourcesIds.forEach(resourceId => {\r\n let defaultAuthorizationsCopy = cloneDeep(defaultAuthorizations);\r\n\r\n defaultAuthorizationsCopy.forEach(authorization => authorization.propertyPath = (authorization.propertyPath as string).replace(resourceIdPlaceholder, resourceId));\r\n\r\n microAuthorizations.push(...defaultAuthorizationsCopy);\r\n });\r\n }\r\n\r\n const parsedAuthorizations = microAuthorizations.map((authorization) => ({\r\n propertyPath: authorization.propertyPath,\r\n closingTime: authorization.closingTime,\r\n openingTime: authorization.openingTime,\r\n authorizationType: authorization.authorizationType,\r\n lastUpDateTime: new Date(),\r\n collectionItemType: authorization.collectionItemType\r\n }));\r\n\r\n students.forEach(student => {\r\n updates.push({\r\n userIds: [student.user?.id],\r\n hadrachaPageId: pageId,\r\n authorizations: [...(student.innerAuthorizations || []), ...parsedAuthorizations]\r\n });\r\n });\r\n\r\n return forkJoin(updates.map(request => {\r\n return this.http.post(this.environmentConfig?.environment?.siteServerPath + this.environmentConfig?.resourcePaths?.resourceUpdateAuthorizations, request);\r\n }))\r\n }\r\n}","import { Injectable } from '@angular/core';\nimport { Resource } from 'herum-shared/herum-types';\nimport { resourcesFilesSuffixes } from 'herum-shared/constants';\nimport { EnvironmentConfig } from 'herum-shared/environment';\nimport { getUrlFromFileData, getVersionPathParameter } from 'herum-shared/utils';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ResourceDataBuilderService {\n\n constructor(private environmentConfig: EnvironmentConfig) { }\n\n buildFilePath(resource: Resource) {\n return getUrlFromFileData(resource.resourceFile, this.environmentConfig?.environment?.s3ServerPath) + this.getVersionPathParameter(resource);\n }\n\n buildDirectoryPath(resource: Resource) {\n return getUrlFromFileData(resource.resourceFile, this.environmentConfig?.environment?.s3ServerPath) + resourcesFilesSuffixes[resource.resourceType] + this.getVersionPathParameter(resource);\n }\n\n private getVersionPathParameter(resource: Resource) {\n return getVersionPathParameter(new Date(resource.lastUpdateTime));\n }\n}","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable, Renderer2, RendererFactory2 } from '@angular/core';\r\nimport { system } from 'herum-shared/constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SystemStylingService {\r\n private renderer: Renderer2 | null = null\r\n\r\n constructor(\r\n @Inject(DOCUMENT) private document: Document,\r\n private rendererFactory: RendererFactory2) {\r\n this.renderer = this.rendererFactory.createRenderer(null, null)\r\n }\r\n\r\n setHerumStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.addClass(document.body, \"herum-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setCollegeStyling() {\r\n this.setCssVariable(\"--main-header-height\", \"0vh\");\r\n this.renderer.removeClass(document.body, \"hadracha-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"college-colors\");\r\n this.setFavicon(\"/assets/college/pagesIcons/EchoIcon.svg\");\r\n }\r\n\r\n setHadrachaStyling() {\r\n this.renderer.removeClass(document.body, \"college-colors\");\r\n this.renderer.removeClass(document.body, \"herum-colors\");\r\n this.renderer.addClass(document.body, \"hadracha-colors\");\r\n this.setFavicon(\"/assets/hadracha/general/hadracha-favicon.svg\");\r\n }\r\n\r\n private setCssVariable(name: string, value: string) {\r\n document.documentElement.style.setProperty(name, value);\r\n }\r\n\r\n private setFavicon(path: string) {\r\n const link: HTMLLinkElement = this.document.querySelector(\"link[rel*='icon']\");\r\n link.type = 'image/x-icon';\r\n link.rel = 'icon';\r\n link.href = path;\r\n this.document.head.appendChild(link);\r\n }\r\n}\r\n\r\nexport function systemStylingFactory(systemName: string, systemStylingService: SystemStylingService) {\r\n return () => {\r\n switch (systemName) {\r\n case system.college: systemStylingService.setCollegeStyling(); break;\r\n case system.herum: systemStylingService.setHerumStyling(); break;\r\n case system.hadracha: systemStylingService.setHadrachaStyling(); break;\r\n default:\r\n throw new Error(`Unsupported system:${systemName}`)\r\n }\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { ISystemTrackTextChangesService } from 'herum-shared/herum-types';\r\nimport { SYSTEM_TRACK_TEXT_CHANGES_SERVICE } from 'herum-shared/tokens';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TrackTextChangesService {\r\n\r\n constructor(@Inject(SYSTEM_TRACK_TEXT_CHANGES_SERVICE) private systemContextTrackTextChangesService: ISystemTrackTextChangesService) { }\r\n\r\n getStyle() {\r\n return this.systemContextTrackTextChangesService.getStyle();\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Inject, Injectable } from '@angular/core';
3
+ import { getMongoMethodsDisplayedNamesMap } from 'herum-shared/constants';
4
+ import { HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';
5
+
6
+ class StorageService {
7
+ static cache = {};
8
+ static getItem(key) {
9
+ const cachedValue = StorageService.cache[key];
10
+ if (cachedValue)
11
+ return cachedValue;
12
+ else {
13
+ let value = StorageService.getCookie(key);
14
+ if (!value)
15
+ value = localStorage.getItem(key);
16
+ StorageService.cache[key] = value;
17
+ return value;
18
+ }
19
+ }
20
+ static setItem(key, value) {
21
+ let stringifyValue = value;
22
+ if (typeof value != "string")
23
+ stringifyValue = JSON.stringify(value);
24
+ StorageService.cache[key] = stringifyValue;
25
+ try {
26
+ StorageService.setCookie(key, stringifyValue);
27
+ }
28
+ catch (error) {
29
+ localStorage.setItem(key, stringifyValue);
30
+ }
31
+ }
32
+ static removeItem(key) {
33
+ StorageService.cache[key] = null;
34
+ localStorage.removeItem(key);
35
+ StorageService.deleteCookie(key);
36
+ }
37
+ static deleteAll() {
38
+ StorageService.cache = {};
39
+ const cookies = document.cookie.split(';');
40
+ cookies.forEach((cookie) => {
41
+ const equalsIndex = cookie.indexOf('=');
42
+ const key = equalsIndex > -1 ? cookie.substring(0, equalsIndex) : cookie;
43
+ this.deleteCookie(key);
44
+ });
45
+ }
46
+ static deleteCookie(key) {
47
+ document.cookie = key + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';
48
+ }
49
+ static setCookie(cname, cvalue, exdays = 100) {
50
+ StorageService.deleteCookie(cname);
51
+ const date = new Date();
52
+ date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000));
53
+ const expires = 'expires=' + date.toUTCString();
54
+ document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';
55
+ }
56
+ static getCookie(cname) {
57
+ const name = cname + '=';
58
+ const ca = document.cookie.split(';');
59
+ for (let i = 0; i < ca.length; i++) {
60
+ let cookieChar = ca[i];
61
+ while (cookieChar.charAt(0) === ' ') {
62
+ cookieChar = cookieChar.substring(1);
63
+ }
64
+ if (cookieChar.indexOf(name) === 0) {
65
+ return cookieChar.substring(name.length, cookieChar.length);
66
+ }
67
+ }
68
+ return '';
69
+ }
70
+ }
71
+
72
+ class UtilsService {
73
+ environmentConfig;
74
+ constructor(environmentConfig) {
75
+ this.environmentConfig = environmentConfig;
76
+ }
77
+ getDisplayedNameForMongoMethodByUserActivity(urlRequest) {
78
+ let mongoMethodDisplayedName;
79
+ const mongoMethodsDisplayedNamesMap = getMongoMethodsDisplayedNamesMap(this.environmentConfig?.mongoUpdates, this.environmentConfig?.authenticationPaths);
80
+ Object.entries(mongoMethodsDisplayedNamesMap).forEach(([mongoMethod, displayedName]) => {
81
+ const urlParts = urlRequest?.split('/');
82
+ const matchedMethod = urlParts?.find(urlPart => urlPart === mongoMethod);
83
+ if (matchedMethod)
84
+ mongoMethodDisplayedName = displayedName;
85
+ });
86
+ return mongoMethodDisplayedName;
87
+ }
88
+ fetchFiles(fileId, resourceType, bucket) {
89
+ if (!fileId)
90
+ return Promise.reject();
91
+ const bucketPath = bucket ? bucket : this.environmentConfig?.buckets[resourceType];
92
+ if (fileId && fileId[0] != '/' && bucketPath[bucketPath.length - 1] != '/')
93
+ fileId = "/" + fileId;
94
+ const path = this.environmentConfig?.environment?.s3ServerPath + bucketPath + fileId;
95
+ return fetch(path);
96
+ }
97
+ async initAudioFile(fileId, bucketName, signal) {
98
+ const audioBucketName = bucketName ? (bucketName + "/") : this.environmentConfig?.buckets.Audio;
99
+ return fetch(this.environmentConfig?.environment?.s3ServerPath + audioBucketName + fileId, { signal: signal })
100
+ .then(async (response) => {
101
+ const arrayBuffer = await response.arrayBuffer();
102
+ if (arrayBuffer.byteLength === 0) {
103
+ const blob = await response.blob();
104
+ const reader = new FileReader();
105
+ reader.onload = () => {
106
+ const arrayBuffer = reader.result;
107
+ const file = new File([arrayBuffer], fileId, {
108
+ type: 'audio/mp3',
109
+ });
110
+ return file;
111
+ };
112
+ reader.readAsArrayBuffer(blob);
113
+ }
114
+ else {
115
+ const file = new File([arrayBuffer], fileId, {
116
+ type: 'audio/mpeg',
117
+ });
118
+ return file;
119
+ }
120
+ });
121
+ }
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: UtilsService, deps: [{ token: HERUM_SHARED_CONFIG_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable });
123
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: UtilsService, providedIn: 'root' });
124
+ }
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.17", ngImport: i0, type: UtilsService, decorators: [{
126
+ type: Injectable,
127
+ args: [{
128
+ providedIn: 'root'
129
+ }]
130
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
131
+ type: Inject,
132
+ args: [HERUM_SHARED_CONFIG_TOKEN]
133
+ }] }] });
134
+
135
+ /**
136
+ * Generated bundle index. Do not edit.
137
+ */
138
+
139
+ export { StorageService, UtilsService };
140
+ //# sourceMappingURL=herum-shared-static-services.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"herum-shared-static-services.mjs","sources":["../../../projects/herum-shared/static-services/storage.service.ts","../../../projects/herum-shared/static-services/utils.service.ts","../../../projects/herum-shared/static-services/herum-shared-static-services.ts"],"sourcesContent":["export class StorageService {\r\n\r\n private static cache: { [key: string]: string | null } = {};\r\n\r\n public static getItem(key: string): string | null {\r\n const cachedValue = StorageService.cache[key];\r\n\r\n if (cachedValue)\r\n return cachedValue;\r\n\r\n else {\r\n let value: string | null = StorageService.getCookie(key);\r\n if (!value)\r\n value = localStorage.getItem(key);\r\n\r\n StorageService.cache[key] = value;\r\n return value;\r\n }\r\n }\r\n\r\n public static setItem(key: string, value: any): void {\r\n let stringifyValue = value;\r\n\r\n if (typeof value != \"string\")\r\n stringifyValue = JSON.stringify(value)\r\n\r\n StorageService.cache[key] = stringifyValue;\r\n try {\r\n StorageService.setCookie(key, stringifyValue);\r\n } catch (error) {\r\n localStorage.setItem(key, stringifyValue);\r\n }\r\n }\r\n\r\n public static removeItem(key: string): void {\r\n StorageService.cache[key] = null;\r\n localStorage.removeItem(key);\r\n StorageService.deleteCookie(key);\r\n }\r\n\r\n public static deleteAll() {\r\n StorageService.cache = {};\r\n const cookies = document.cookie.split(';');\r\n\r\n cookies.forEach((cookie) => {\r\n const equalsIndex = cookie.indexOf('=');\r\n const key = equalsIndex > -1 ? cookie.substring(0, equalsIndex) : cookie;\r\n this.deleteCookie(key);\r\n });\r\n }\r\n\r\n private static deleteCookie(key: string): void {\r\n document.cookie = key + '=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';\r\n }\r\n\r\n private static setCookie(cname: string, cvalue: string, exdays: number = 100) {\r\n StorageService.deleteCookie(cname);\r\n\r\n const date = new Date();\r\n date.setTime(date.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n const expires = 'expires=' + date.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n }\r\n\r\n private static getCookie(cname: string): string {\r\n const name = cname + '=';\r\n const ca = document.cookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let cookieChar = ca[i];\r\n while (cookieChar.charAt(0) === ' ') {\r\n cookieChar = cookieChar.substring(1);\r\n }\r\n if (cookieChar.indexOf(name) === 0) {\r\n return cookieChar.substring(name.length, cookieChar.length);\r\n }\r\n }\r\n return '';\r\n }\r\n}","import { Inject, Injectable } from '@angular/core';\nimport { getMongoMethodsDisplayedNamesMap } from 'herum-shared/constants';\nimport { EnvironmentConfig, HERUM_SHARED_CONFIG_TOKEN } from 'herum-shared/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UtilsService {\n\n constructor(@Inject(HERUM_SHARED_CONFIG_TOKEN) private environmentConfig: EnvironmentConfig) { }\n\n getDisplayedNameForMongoMethodByUserActivity(urlRequest: string): string | undefined {\n let mongoMethodDisplayedName!: string | undefined;\n\n const mongoMethodsDisplayedNamesMap = getMongoMethodsDisplayedNamesMap(\n this.environmentConfig?.mongoUpdates,\n this.environmentConfig?.authenticationPaths\n );\n\n Object.entries(mongoMethodsDisplayedNamesMap).forEach(([mongoMethod, displayedName]) => {\n const urlParts: string[] = urlRequest?.split('/');\n const matchedMethod: string | undefined = urlParts?.find(urlPart => urlPart === mongoMethod);\n\n if (matchedMethod)\n mongoMethodDisplayedName = displayedName;\n });\n\n return mongoMethodDisplayedName;\n }\n\n fetchFiles(fileId: string, resourceType: string, bucket?: string): Promise<Response> {\n if (!fileId)\n return Promise.reject();\n\n const bucketPath = bucket ? bucket : this.environmentConfig?.buckets[resourceType];\n\n if (fileId && fileId[0] != '/' && bucketPath[bucketPath.length - 1] != '/') fileId = \"/\" + fileId;\n\n const path = this.environmentConfig?.environment?.s3ServerPath + bucketPath + fileId;\n return fetch(path);\n }\n\n async initAudioFile(fileId: string, bucketName?: string, signal?: AbortSignal) {\n const audioBucketName = bucketName ? (bucketName + \"/\") : this.environmentConfig?.buckets.Audio;\n\n return fetch(this.environmentConfig?.environment?.s3ServerPath + audioBucketName + fileId, { signal: signal })\n .then(async (response) => {\n const arrayBuffer = await response.arrayBuffer();\n if (arrayBuffer.byteLength === 0) {\n const blob = await response.blob();\n const reader = new FileReader();\n reader.onload = () => {\n const arrayBuffer = reader.result as ArrayBuffer;\n const file = new File([arrayBuffer], fileId, {\n type: 'audio/mp3',\n });\n return file;\n };\n reader.readAsArrayBuffer(blob);\n } else {\n const file = new File([arrayBuffer], fileId, {\n type: 'audio/mpeg',\n });\n return file;\n }\n })\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}