@spytecgps/nova-orm 0.0.224 → 0.0.226

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 (390) hide show
  1. package/dist/entities/acumaticaAmazonProduct.js +46 -0
  2. package/dist/entities/acumaticaImeiIccidData.js +91 -0
  3. package/dist/entities/acumaticaOrderShipmentDetails.js +61 -0
  4. package/dist/entities/acumaticaShipment.js +31 -0
  5. package/dist/entities/acumaticaShipmentAmazon.js +26 -0
  6. package/dist/entities/aempToken.js +47 -0
  7. package/dist/entities/alert.js +129 -0
  8. package/dist/entities/alertMigration.js +115 -0
  9. package/dist/entities/alertMigrationBatch.js +21 -0
  10. package/dist/entities/alertTimeWindowConfiguration.js +61 -0
  11. package/dist/entities/alertType.js +83 -0
  12. package/dist/entities/appFeatureType.js +36 -0
  13. package/dist/entities/assetCategory.js +32 -0
  14. package/dist/entities/billing.js +108 -0
  15. package/dist/entities/billingCustomerBraintree.js +62 -0
  16. package/dist/entities/billingDeviceHistory.js +61 -0
  17. package/dist/entities/billingHubspotPaymentLog.js +256 -0
  18. package/dist/entities/billingKlarnaCustomer.js +76 -0
  19. package/dist/entities/billingKlarnaOrder.js +114 -0
  20. package/dist/entities/billingStatusHistoryBraintree.js +63 -0
  21. package/dist/entities/billingSubscriptionBraintree.js +229 -0
  22. package/dist/entities/blacklist.js +51 -0
  23. package/dist/entities/blacklistType.js +31 -0
  24. package/dist/entities/boundary.js +119 -0
  25. package/dist/entities/boundaryEvent.js +105 -0
  26. package/dist/entities/cellTower.js +66 -0
  27. package/dist/entities/client.js +153 -0
  28. package/dist/entities/clientAppFeature.js +47 -0
  29. package/dist/entities/clientConfiguration.js +47 -0
  30. package/dist/entities/clientDeviceSetting.js +90 -0
  31. package/dist/entities/clientType.js +36 -0
  32. package/dist/entities/country.js +90 -0
  33. package/dist/entities/customerAttribute.js +52 -0
  34. package/dist/entities/dataSourceType.js +31 -0
  35. package/dist/entities/deactivation.js +83 -0
  36. package/dist/entities/deactivationReason.js +40 -0
  37. package/dist/entities/device.js +160 -0
  38. package/dist/entities/deviceAlertConfiguration.js +71 -0
  39. package/dist/entities/deviceBehavior.js +147 -0
  40. package/dist/entities/deviceCustomConfiguration.js +67 -0
  41. package/dist/entities/deviceHistory.js +46 -0
  42. package/dist/entities/deviceModelListener.js +46 -0
  43. package/dist/entities/devicePairing.js +67 -0
  44. package/dist/entities/devicePromotion.js +104 -0
  45. package/dist/entities/deviceReplacement.js +57 -0
  46. package/dist/entities/deviceTask.js +44 -0
  47. package/dist/entities/deviceType.js +149 -0
  48. package/dist/entities/deviceTypeEvent.js +32 -0
  49. package/dist/entities/deviceTypeFeature.js +32 -0
  50. package/dist/entities/deviceTypeFirmware.js +117 -0
  51. package/dist/entities/entityTag.js +48 -0
  52. package/dist/entities/entityType.js +31 -0
  53. package/dist/entities/event.js +36 -0
  54. package/dist/entities/feature.js +36 -0
  55. package/dist/entities/firmwareAutoUpgradeBlacklist.js +35 -0
  56. package/dist/entities/firmwareUpgradeTask.js +105 -0
  57. package/dist/entities/iccidStatus.js +49 -0
  58. package/dist/entities/imeiIccidCarrier.js +125 -0
  59. package/dist/entities/imeiIccidHistory.js +43 -0
  60. package/dist/entities/index.js +99 -0
  61. package/dist/entities/industry.js +46 -0
  62. package/dist/entities/latestPosition.js +100 -0
  63. package/dist/entities/latestPositionMigration.js +96 -0
  64. package/dist/entities/latestPositionMigrationBatch.js +21 -0
  65. package/dist/entities/magento2Gps.js +256 -0
  66. package/dist/entities/magento2Plan.js +41 -0
  67. package/dist/entities/mobileNetwork.js +51 -0
  68. package/dist/entities/notificationRecipient.js +100 -0
  69. package/dist/entities/organization.js +46 -0
  70. package/dist/entities/plan.js +86 -0
  71. package/dist/entities/position.js +102 -0
  72. package/dist/entities/positionMigration.js +96 -0
  73. package/dist/entities/positionMigrationBatch.js +21 -0
  74. package/dist/entities/promotion.js +134 -0
  75. package/dist/entities/securityRole.js +41 -0
  76. package/dist/entities/serviceProvider.js +41 -0
  77. package/dist/entities/serviceProviderProduct.js +61 -0
  78. package/dist/entities/serviceProviderProductNetwork.js +31 -0
  79. package/dist/entities/serviceProviderProductType.js +31 -0
  80. package/dist/entities/sim.js +92 -0
  81. package/dist/entities/task.js +146 -0
  82. package/dist/entities/taskSchedule.js +141 -0
  83. package/dist/entities/trip.js +127 -0
  84. package/dist/entities/tripCompletionStatus.js +36 -0
  85. package/dist/entities/tripPosition.js +26 -0
  86. package/dist/entities/user.js +196 -0
  87. package/dist/entities/userActivation.js +52 -0
  88. package/dist/entities/userActivationDevice.js +164 -0
  89. package/dist/entities/userActivationEvent.js +61 -0
  90. package/dist/entities/userActivationMetric.js +208 -0
  91. package/dist/entities/userAlertComplain.js +78 -0
  92. package/dist/entities/userAlertConfiguration.js +109 -0
  93. package/dist/entities/userAppFeedback.js +52 -0
  94. package/dist/entities/userAppIncident.js +176 -0
  95. package/dist/entities/userConfiguration.js +109 -0
  96. package/dist/entities/userDataDeletionRequest.js +56 -0
  97. package/dist/entities/userDeviceBehaviorTask.js +80 -0
  98. package/dist/entities/userInvitation.js +89 -0
  99. package/dist/entities/userRatingRequest.js +75 -0
  100. package/dist/entities/userRegistrationAttempt.js +177 -0
  101. package/dist/entities/userSecurityRole.js +33 -0
  102. package/dist/index.js +1 -2
  103. package/dist/migration/1684483704434-addLowerCaseIndex.js +16 -0
  104. package/dist/novaDataSource.js +111 -0
  105. package/dist/repositories/acumatica/getAcumaticaImeiIccidData.js +35 -0
  106. package/dist/repositories/acumatica/getAcumaticaShipmentDetails.js +50 -0
  107. package/dist/repositories/acumatica/getLastAcumaticaShipmentDetails.js +27 -0
  108. package/dist/repositories/acumatica/index.js +52 -0
  109. package/dist/repositories/aempToken/createAempToken.js +26 -0
  110. package/dist/repositories/aempToken/deleteAempTokens.js +30 -0
  111. package/dist/repositories/aempToken/getAempTokens.js +27 -0
  112. package/dist/repositories/aempToken/index.js +53 -0
  113. package/dist/repositories/alertTypes/getAlertTypes.js +13 -0
  114. package/dist/repositories/alertTypes/index.js +18 -0
  115. package/dist/repositories/alerts/createAlert.js +94 -0
  116. package/dist/repositories/alerts/createUserAlertComplain.js +26 -0
  117. package/dist/repositories/alerts/getAlertsReportByClient.js +65 -0
  118. package/dist/repositories/alerts/getAlertsReportByUser.js +127 -0
  119. package/dist/repositories/alerts/index.js +104 -0
  120. package/dist/repositories/appFeatures/createAppFeatureType.js +15 -0
  121. package/dist/repositories/appFeatures/createClientAppFeature.js +15 -0
  122. package/dist/repositories/appFeatures/getClientAppFeatures.js +39 -0
  123. package/dist/repositories/appFeatures/index.js +57 -0
  124. package/dist/repositories/assetCategories/getAssetCategories.js +8 -0
  125. package/dist/repositories/assetCategories/index.js +16 -0
  126. package/dist/repositories/baseRepository.js +9 -0
  127. package/dist/repositories/billing/createBilling.js +37 -0
  128. package/dist/repositories/billing/createBillingDeviceHistory.js +30 -0
  129. package/dist/repositories/billing/createBillingHubspotPaymentLog.js +61 -0
  130. package/dist/repositories/billing/createBillingStatusHistoryBraintree.js +32 -0
  131. package/dist/repositories/billing/getBillingCustomerBraintreeById.js +18 -0
  132. package/dist/repositories/billing/getBillingKlarnaOrderByImei.js +18 -0
  133. package/dist/repositories/billing/getBillingSubscriptionBraintreeByImei.js +18 -0
  134. package/dist/repositories/billing/getBillingSubscriptionsBraintree.js +25 -0
  135. package/dist/repositories/billing/getBillings.js +42 -0
  136. package/dist/repositories/billing/getCanceledImeis.js +84 -0
  137. package/dist/repositories/billing/getCanceledImeisMatchingMagentoData.js +100 -0
  138. package/dist/repositories/billing/getChurnStatusByClientId.js +27 -0
  139. package/dist/repositories/billing/getClientIdFromBraintreeCustomer.js +20 -0
  140. package/dist/repositories/billing/getMagentoPlan.js +21 -0
  141. package/dist/repositories/billing/getUserByBraintreeCustomerId.js +22 -0
  142. package/dist/repositories/billing/index.js +353 -0
  143. package/dist/repositories/billing/updateBilling.js +43 -0
  144. package/dist/repositories/billing/updateBillingCustomerBraintree.js +37 -0
  145. package/dist/repositories/billing/upsertBillingCustomerBraintree.js +39 -0
  146. package/dist/repositories/billing/upsertBillingKlarnaCustomer.js +52 -0
  147. package/dist/repositories/billing/upsertBillingKlarnaOrder.js +58 -0
  148. package/dist/repositories/billing/upsertBillingSubscriptionBraintree.js +20 -0
  149. package/dist/repositories/blacklist/getBlacklists.js +19 -0
  150. package/dist/repositories/blacklist/index.js +19 -0
  151. package/dist/repositories/boundaries/createBoundary.js +52 -0
  152. package/dist/repositories/boundaries/deleteBoundary.js +23 -0
  153. package/dist/repositories/boundaries/getBoundariesByClientId.js +17 -0
  154. package/dist/repositories/boundaries/getBoundariesIdsByClientId.js +19 -0
  155. package/dist/repositories/boundaries/getBoundariesReport.js +141 -0
  156. package/dist/repositories/boundaries/getBoundaryById.js +14 -0
  157. package/dist/repositories/boundaries/index.js +178 -0
  158. package/dist/repositories/boundaries/processBoundaryEvent.js +211 -0
  159. package/dist/repositories/boundaries/updateBoundary.js +53 -0
  160. package/dist/repositories/boundaries/upsertBoundaryEvent.js +23 -0
  161. package/dist/repositories/clients/createClient.js +35 -0
  162. package/dist/repositories/clients/createClientConfiguration.js +18 -0
  163. package/dist/repositories/clients/createCustomerAttribute.js +16 -0
  164. package/dist/repositories/clients/deleteClientAndConfiguration.js +25 -0
  165. package/dist/repositories/clients/getClient.js +32 -0
  166. package/dist/repositories/clients/getClientConfiguration.js +14 -0
  167. package/dist/repositories/clients/getClients.js +26 -0
  168. package/dist/repositories/clients/getCustomerAttribute.js +14 -0
  169. package/dist/repositories/clients/index.js +192 -0
  170. package/dist/repositories/clients/updateClient.js +52 -0
  171. package/dist/repositories/clients/updateClientConfiguration.js +31 -0
  172. package/dist/repositories/clients/updateCustomerAttribute.js +27 -0
  173. package/dist/repositories/countries/getCountries.js +14 -0
  174. package/dist/repositories/countries/getCountry.js +23 -0
  175. package/dist/repositories/countries/index.js +33 -0
  176. package/dist/repositories/deactivations/createDeactivation.js +16 -0
  177. package/dist/repositories/deactivations/getDeactivationReasons.js +24 -0
  178. package/dist/repositories/deactivations/getLatestDeactivationByImei.js +19 -0
  179. package/dist/repositories/deactivations/index.js +58 -0
  180. package/dist/repositories/deviceBehaviors/createDeviceBehaviorTask.js +48 -0
  181. package/dist/repositories/deviceBehaviors/getDeviceBehaviorTasks.js +40 -0
  182. package/dist/repositories/deviceBehaviors/getDeviceBehaviors.js +41 -0
  183. package/dist/repositories/deviceBehaviors/getDeviceBehaviorsByIds.js +16 -0
  184. package/dist/repositories/deviceBehaviors/getDevicesLastBehaviorTask.js +42 -0
  185. package/dist/repositories/deviceBehaviors/getLatestDeviceBehaviorTasks.js +40 -0
  186. package/dist/repositories/deviceBehaviors/index.js +147 -0
  187. package/dist/repositories/deviceBehaviors/updateDeviceBehaviorTask.js +27 -0
  188. package/dist/repositories/deviceBehaviors/upsertDeviceBehavior.js +20 -0
  189. package/dist/repositories/devicePairings/createDevicePairing.js +21 -0
  190. package/dist/repositories/devicePairings/deleteDevicePairing.js +16 -0
  191. package/dist/repositories/devicePairings/getDevicePairings.js +36 -0
  192. package/dist/repositories/devicePairings/getDevicePairingsByImei.js +20 -0
  193. package/dist/repositories/devicePairings/index.js +90 -0
  194. package/dist/repositories/devicePairings/updateDevicePairing.js +32 -0
  195. package/dist/repositories/devices/createClientDeviceSetting.js +25 -0
  196. package/dist/repositories/devices/createDevice.js +30 -0
  197. package/dist/repositories/devices/createDeviceReplacement.js +34 -0
  198. package/dist/repositories/devices/createDeviceType.js +15 -0
  199. package/dist/repositories/devices/deleteDevice.js +16 -0
  200. package/dist/repositories/devices/generateDeviceIdentifierKey.js +18 -0
  201. package/dist/repositories/devices/getCanceledDevicesWithActiveSimCards.js +40 -0
  202. package/dist/repositories/devices/getCarrierStatusUpdatedBefore.js +40 -0
  203. package/dist/repositories/devices/getClientDeviceSetting.js +20 -0
  204. package/dist/repositories/devices/getClientDeviceSettings.js +17 -0
  205. package/dist/repositories/devices/getDevice.js +33 -0
  206. package/dist/repositories/devices/getDeviceCustomConfig.js +37 -0
  207. package/dist/repositories/devices/getDeviceTypeByImei.js +18 -0
  208. package/dist/repositories/devices/getDeviceTypes.js +30 -0
  209. package/dist/repositories/devices/getDeviceTypesModelsOrderedByDeviceCount.js +27 -0
  210. package/dist/repositories/devices/getDeviceWithUsersInfo.js +59 -0
  211. package/dist/repositories/devices/getDevices.js +46 -0
  212. package/dist/repositories/devices/getFilteredImeisWithStatus.js +20 -0
  213. package/dist/repositories/devices/getIccidStatus.js +17 -0
  214. package/dist/repositories/devices/getImeiIccidCarrier.js +23 -0
  215. package/dist/repositories/devices/getImeiIccidCarriers.js +17 -0
  216. package/dist/repositories/devices/index.js +464 -0
  217. package/dist/repositories/devices/updateClientDeviceSetting.js +38 -0
  218. package/dist/repositories/devices/updateDevice.js +56 -0
  219. package/dist/repositories/devices/updateDeviceType.js +43 -0
  220. package/dist/repositories/devices/updateIccidStatus.js +28 -0
  221. package/dist/repositories/devices/updateImeiIccidCarrier.js +43 -0
  222. package/dist/repositories/devices/upsertIccidStatus.js +36 -0
  223. package/dist/repositories/firmwares/createDeviceFirmware.js +37 -0
  224. package/dist/repositories/firmwares/createFirmwareAutoUpgradeBlacklist.js +16 -0
  225. package/dist/repositories/firmwares/createFirmwareUpgradeTask.js +36 -0
  226. package/dist/repositories/firmwares/getDeviceFirmwares.js +21 -0
  227. package/dist/repositories/firmwares/getFirmwareAutoUpgradeBlacklist.js +23 -0
  228. package/dist/repositories/firmwares/getFirmwareUpgradeTasks.js +105 -0
  229. package/dist/repositories/firmwares/getFirmwareUpgradeTasksCount.js +56 -0
  230. package/dist/repositories/firmwares/index.js +194 -0
  231. package/dist/repositories/firmwares/updateDeviceFirmware.js +41 -0
  232. package/dist/repositories/firmwares/updateFirmwareUpgradeTasks.js +37 -0
  233. package/dist/repositories/index.js +31 -0
  234. package/dist/repositories/notificationRecipients/createNotificationRecipient.js +37 -0
  235. package/dist/repositories/notificationRecipients/deleteNotificationRecipients.js +26 -0
  236. package/dist/repositories/notificationRecipients/deleteNotificationRecipientsByEmailOrPhone.js +28 -0
  237. package/dist/repositories/notificationRecipients/getNotificationRecipients.js +16 -0
  238. package/dist/repositories/notificationRecipients/index.js +131 -0
  239. package/dist/repositories/notificationRecipients/updateNotificationRecipient.js +37 -0
  240. package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsubscribedInfoStatus.js +98 -0
  241. package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsuscribedStatus.js +35 -0
  242. package/dist/repositories/positions/createPosition.js +100 -0
  243. package/dist/repositories/positions/getLatestPositionByImei.js +26 -0
  244. package/dist/repositories/positions/getPositionsByImei.js +23 -0
  245. package/dist/repositories/positions/getPositionsReportByClient.js +87 -0
  246. package/dist/repositories/positions/index.js +101 -0
  247. package/dist/repositories/positions/upsertLatestPosition.js +41 -0
  248. package/dist/repositories/security/createUserRole.js +30 -0
  249. package/dist/repositories/security/getAllRoles.js +8 -0
  250. package/dist/repositories/security/getUserRoles.js +15 -0
  251. package/dist/repositories/security/getUserRolesByClientId.js +17 -0
  252. package/dist/repositories/security/index.js +111 -0
  253. package/dist/repositories/security/removeUserRoles.js +21 -0
  254. package/dist/repositories/security/updateUserRole.js +27 -0
  255. package/dist/repositories/security/userIsAdminOrOwner.js +20 -0
  256. package/dist/repositories/security/userIsInRole.js +18 -0
  257. package/dist/repositories/tasks/addTaskScheduleDevices.js +37 -0
  258. package/dist/repositories/tasks/completeTask.js +25 -0
  259. package/dist/repositories/tasks/createTask.js +22 -0
  260. package/dist/repositories/tasks/createTaskSchedule.js +33 -0
  261. package/dist/repositories/tasks/deleteTask.js +22 -0
  262. package/dist/repositories/tasks/deleteTaskSchedule.js +22 -0
  263. package/dist/repositories/tasks/deleteTaskScheduleDevices.js +17 -0
  264. package/dist/repositories/tasks/getDeviceTasks.js +28 -0
  265. package/dist/repositories/tasks/getTaskSchedule.js +31 -0
  266. package/dist/repositories/tasks/getTaskSchedules.js +75 -0
  267. package/dist/repositories/tasks/getTaskSchedulesCount.js +23 -0
  268. package/dist/repositories/tasks/getTasks.js +29 -0
  269. package/dist/repositories/tasks/getTasksCount.js +20 -0
  270. package/dist/repositories/tasks/index.js +441 -0
  271. package/dist/repositories/tasks/setTaskAsPastDue.js +23 -0
  272. package/dist/repositories/tasks/setTaskScheduleDevices.js +43 -0
  273. package/dist/repositories/tasks/updateTask.js +21 -0
  274. package/dist/repositories/tasks/updateTaskSchedule.js +35 -0
  275. package/dist/repositories/trips/createTrip.js +29 -0
  276. package/dist/repositories/trips/getTripById.js +15 -0
  277. package/dist/repositories/trips/getTrips.js +65 -0
  278. package/dist/repositories/trips/index.js +69 -0
  279. package/dist/repositories/trips/updateTripEndValues.js +36 -0
  280. package/dist/repositories/trips/upsertTrip.js +31 -0
  281. package/dist/repositories/userActivations/createUserActivation.js +26 -0
  282. package/dist/repositories/userActivations/createUserActivationDevice.js +35 -0
  283. package/dist/repositories/userActivations/createUserActivationEvent.js +34 -0
  284. package/dist/repositories/userActivations/createUserActivationMetric.js +28 -0
  285. package/dist/repositories/userActivations/deleteUserActivation.js +22 -0
  286. package/dist/repositories/userActivations/getLastActivationDevice.js +26 -0
  287. package/dist/repositories/userActivations/getUserActivationDevices.js +24 -0
  288. package/dist/repositories/userActivations/getUserActivationDevicesByClientId.js +26 -0
  289. package/dist/repositories/userActivations/getUserActivationMetrics.js +24 -0
  290. package/dist/repositories/userActivations/getUserActivations.js +29 -0
  291. package/dist/repositories/userActivations/index.js +229 -0
  292. package/dist/repositories/userActivations/updateUserActivationDevice.js +39 -0
  293. package/dist/repositories/userActivations/updateUserActivationMetrics.js +61 -0
  294. package/dist/repositories/userAppFeedback/createUserAppFeedback.js +26 -0
  295. package/dist/repositories/userAppFeedback/index.js +23 -0
  296. package/dist/repositories/userAppIncidents/getUserAppIncidents.js +28 -0
  297. package/dist/repositories/userAppIncidents/index.js +63 -0
  298. package/dist/repositories/userAppIncidents/upsertUserAppIncident.js +53 -0
  299. package/dist/repositories/userConfigurations/bulkCreateUserAlertConfigurations.js +46 -0
  300. package/dist/repositories/userConfigurations/createDeviceAlertTimeWindows.js +36 -0
  301. package/dist/repositories/userConfigurations/createUserAlertTimeWindows.js +33 -0
  302. package/dist/repositories/userConfigurations/createUserConfiguration.js +34 -0
  303. package/dist/repositories/userConfigurations/deleteDeviceAlertTimeWindows.js +17 -0
  304. package/dist/repositories/userConfigurations/deleteUserAlertConfigurations.js +24 -0
  305. package/dist/repositories/userConfigurations/deleteUserAlertTimeWindows.js +17 -0
  306. package/dist/repositories/userConfigurations/deleteUserConfiguration.js +23 -0
  307. package/dist/repositories/userConfigurations/getDeviceAlertTimeWindows.js +43 -0
  308. package/dist/repositories/userConfigurations/getUserAlertConfigurations.js +25 -0
  309. package/dist/repositories/userConfigurations/getUserAlertTimeWindows.js +35 -0
  310. package/dist/repositories/userConfigurations/getUserConfigurations.js +31 -0
  311. package/dist/repositories/userConfigurations/index.js +298 -0
  312. package/dist/repositories/userConfigurations/updateDeviceAlertTimeWindows.js +29 -0
  313. package/dist/repositories/userConfigurations/updateUserAlertConfigurations.js +46 -0
  314. package/dist/repositories/userConfigurations/updateUserAlertTimeWindows.js +28 -0
  315. package/dist/repositories/userConfigurations/updateUserConfiguration.js +49 -0
  316. package/dist/repositories/userDataDeletionRequests/createUserDataDeletionRequest.js +28 -0
  317. package/dist/repositories/userDataDeletionRequests/getUserDataDeletionRequest.js +29 -0
  318. package/dist/repositories/userDataDeletionRequests/index.js +66 -0
  319. package/dist/repositories/userDataDeletionRequests/removeUserDataDeletionRequest.js +17 -0
  320. package/dist/repositories/userDataDeletionRequests/updateUserDataDeletionRequest.js +38 -0
  321. package/dist/repositories/userInvitations/createUserInvitation.js +43 -0
  322. package/dist/repositories/userInvitations/getUserInvitationById.js +22 -0
  323. package/dist/repositories/userInvitations/getUserInvitations.js +31 -0
  324. package/dist/repositories/userInvitations/index.js +82 -0
  325. package/dist/repositories/userInvitations/updateUserInvitation.js +50 -0
  326. package/dist/repositories/userRatingRequests/createUserRatingRequest.js +34 -0
  327. package/dist/repositories/userRatingRequests/getUserRatingRequests.js +23 -0
  328. package/dist/repositories/userRatingRequests/index.js +41 -0
  329. package/dist/repositories/userRegistrationAttempts/createUserRegistrationAttempt.js +40 -0
  330. package/dist/repositories/userRegistrationAttempts/getUserRegistrationAttempts.js +29 -0
  331. package/dist/repositories/userRegistrationAttempts/index.js +70 -0
  332. package/dist/repositories/userRegistrationAttempts/updateUserRegistrationAttempt.js +40 -0
  333. package/dist/repositories/users/createUser.js +47 -0
  334. package/dist/repositories/users/deleteAccount.js +98 -0
  335. package/dist/repositories/users/deleteUser.js +22 -0
  336. package/dist/repositories/users/getUserById.js +22 -0
  337. package/dist/repositories/users/getUserData.js +66 -0
  338. package/dist/repositories/users/getUsers.js +49 -0
  339. package/dist/repositories/users/getUsersConfigurationByImei.js +29 -0
  340. package/dist/repositories/users/getUsersIdByPhoneAndCountryCode.js +21 -0
  341. package/dist/repositories/users/getUsersWithRoles.js +32 -0
  342. package/dist/repositories/users/index.js +195 -0
  343. package/dist/repositories/users/updateUser.js +109 -0
  344. package/dist/subscribers/allEntitiesSubscriber.js +52 -0
  345. package/dist/subscribers/index.js +2 -0
  346. package/dist/types/acumatica.js +1 -0
  347. package/dist/types/aempToken.js +1 -0
  348. package/dist/types/alert.js +1 -0
  349. package/dist/types/alertTypes.js +1 -0
  350. package/dist/types/appFeatures.js +1 -0
  351. package/dist/types/billing.js +1 -0
  352. package/dist/types/blacklist.js +1 -0
  353. package/dist/types/boundaries.js +1 -0
  354. package/dist/types/clients.js +1 -0
  355. package/dist/types/common.js +1 -0
  356. package/dist/types/countries.js +1 -0
  357. package/dist/types/deactivations.js +1 -0
  358. package/dist/types/deviceBehaviors.js +1 -0
  359. package/dist/types/devicePairings.js +1 -0
  360. package/dist/types/devices.js +1 -0
  361. package/dist/types/enums.js +74 -0
  362. package/dist/types/firmwares.js +17 -0
  363. package/dist/types/index.js +30 -0
  364. package/dist/types/logger.js +9 -0
  365. package/dist/types/notificationRecipients.js +1 -0
  366. package/dist/types/position.js +1 -0
  367. package/dist/types/security.js +1 -0
  368. package/dist/types/tasks.js +1 -0
  369. package/dist/types/trip.js +29 -0
  370. package/dist/types/user.js +1 -0
  371. package/dist/types/userActivations.js +1 -0
  372. package/dist/types/userAppFeedback.js +1 -0
  373. package/dist/types/userAppIncidents.js +1 -0
  374. package/dist/types/userConfigurations.js +1 -0
  375. package/dist/types/userDataDeletionRequests.js +1 -0
  376. package/dist/types/userInvitations.js +1 -0
  377. package/dist/types/userRatingRequests.js +1 -0
  378. package/dist/types/userRegistrationAttempts.js +1 -0
  379. package/dist/utils/anyAttributeHasValue.js +20 -0
  380. package/dist/utils/anyAttributeIsNull.js +12 -0
  381. package/dist/utils/boolToNumberTransformer.js +23 -0
  382. package/dist/utils/consoleLogger.js +42 -0
  383. package/dist/utils/filterTools.js +299 -0
  384. package/dist/utils/mapRawEntityToEntity.js +12 -0
  385. package/dist/utils/queryLogger.js +48 -0
  386. package/dist/utils/randomizer.js +39 -0
  387. package/dist/utils/stringToDateTransformer.js +16 -0
  388. package/dist/utils/uuidHelpers.js +30 -0
  389. package/package.json +10 -8
  390. package/dist/index.js.LICENSE.txt +0 -41
@@ -0,0 +1,29 @@
1
+ import { UserRegistrationAttempt } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const getUserRegistrationAttempts = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.id && !params?.filters?.tempUserId) {
5
+ logger.warn({ params }, 'UserRegistrationAttemptsRepository::getUserRegistrationAttempts - missing required parameters');
6
+ return [];
7
+ }
8
+ const tempUserIdBinaryBuffer = uuidStringToBinaryBuffer(params?.filters?.tempUserId);
9
+ if (params?.filters?.tempUserId && !tempUserIdBinaryBuffer?.length) {
10
+ logger.warn({ params }, 'UserRegistrationAttemptsRepository::getUserRegistrationAttempts - temp user id should be a valid UUID');
11
+ return [];
12
+ }
13
+ return novaDataSource.safeQuery(async (dataSource) => {
14
+ const userRegistrationAttemptsRepository = dataSource.getRepository(UserRegistrationAttempt);
15
+ let queryBuilder = userRegistrationAttemptsRepository.createQueryBuilder('userRegistrationAttempt');
16
+ if (params?.filters?.id) {
17
+ queryBuilder = queryBuilder.where('userRegistrationAttempt.id = :id', {
18
+ id: params?.filters?.id,
19
+ });
20
+ }
21
+ if (params?.filters?.tempUserId) {
22
+ queryBuilder = queryBuilder.where('userRegistrationAttempt.tempUserId = :tempUserId', {
23
+ tempUserId: tempUserIdBinaryBuffer,
24
+ });
25
+ }
26
+ const result = await queryBuilder.getMany();
27
+ return result;
28
+ }, 'UserRegistrationAttemptsRepository::getUserRegistrationAttempts');
29
+ };
@@ -0,0 +1,70 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { createUserRegistrationAttempt } from './createUserRegistrationAttempt';
4
+ import { getUserRegistrationAttempts } from './getUserRegistrationAttempts';
5
+ import { updateUserRegistrationAttempt } from './updateUserRegistrationAttempt';
6
+ export class UserRegistrationAttemptsRepository extends BaseRepository {
7
+ /**
8
+ * Get user registration attempts
9
+ * @param {GetUserRegistrationAttemptsParams} params containing information to get user registration attempts
10
+ * One of the following filters is required:
11
+ * - filters.id: The user registration attempt id
12
+ * - filters.tempUserId: The temp user id
13
+ * @returns The user registration attempts list
14
+ */
15
+ async getUserRegistrationAttempts(params) {
16
+ this.logger.trace(params, 'UserRegistrationAttemptsRepository::getUserRegistrationAttempts started with params');
17
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
18
+ const result = await getUserRegistrationAttempts(novaDataSource, params, this.logger);
19
+ this.logger.trace(result, 'UserRegistrationAttemptsRepository::getUserRegistrationAttempts result');
20
+ return result;
21
+ }
22
+ /**
23
+ * Create user registration attempt
24
+ * @param {CreateUserRegistrationAttemptParams} params containing information to create user registration attempt
25
+ * One of the following fields is required:
26
+ * - id: The user registration attempt id
27
+ * - firstName: The user first name
28
+ * - lastName: The user last name
29
+ * - email: The user email
30
+ * - phoneNumber: The user phone number
31
+ * - phoneCode: The user phone code
32
+ * - phoneCodeCountryId: The user phone code country id
33
+ * - imei: The user imei
34
+ * - platform: The user platform
35
+ * - status: The user status
36
+ * - tempUserId: The temp user id
37
+ * @returns The created user registration attempt
38
+ */
39
+ async createUserRegistrationAttempt(params) {
40
+ this.logger.trace(params, 'UserRegistrationAttemptsRepository::createUserRegistrationAttempt started with params');
41
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
42
+ const result = await createUserRegistrationAttempt(novaDataSource, params, this.logger);
43
+ this.logger.trace(result, 'UserRegistrationAttemptsRepository::createUserRegistrationAttempt result');
44
+ return result;
45
+ }
46
+ /**
47
+ * Update user registration attempt
48
+ * @param {UpdateUserRegistrationAttemptParams} params containing information to update user registration attempt
49
+ * The following filter is required:
50
+ * - filters.id: The user registration attempt id
51
+ * One of the following fields is required:
52
+ * - values.clientId: The user client id
53
+ * - values.userName: The user name
54
+ * - values.pin: The user pin
55
+ * - values.street: The user street
56
+ * - values.city: The user city
57
+ * - values.state: The user state
58
+ * - values.postalCode: The user postal code
59
+ * - values.country: The user country
60
+ * - values.countryCode: The user country code
61
+ * @returns True if the user registration attempt was updated, false otherwise
62
+ */
63
+ async updateUserRegistrationAttempt(params) {
64
+ this.logger.trace(params, 'UserRegistrationAttemptsRepository::updateUserRegistrationAttempt started with params');
65
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
66
+ const result = await updateUserRegistrationAttempt(novaDataSource, params, this.logger);
67
+ this.logger.trace({ result }, 'UserRegistrationAttemptsRepository::updateUserRegistrationAttempt result');
68
+ return result;
69
+ }
70
+ }
@@ -0,0 +1,40 @@
1
+ import { UserRegistrationAttempt } from '../../entities';
2
+ export const updateUserRegistrationAttempt = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.id) {
4
+ logger.warn({ params }, 'UserRegistrationAttemptsRepository::updateUserRegistrationAttempt - missing required parameters');
5
+ return false;
6
+ }
7
+ if (!params?.values?.clientId &&
8
+ !params?.values?.userName &&
9
+ !params?.values?.pin &&
10
+ !params?.values?.street &&
11
+ !params?.values?.city &&
12
+ !params?.values?.state &&
13
+ !params?.values?.postalCode &&
14
+ !params?.values?.country &&
15
+ !params?.values?.countryCode) {
16
+ logger.warn({ params }, 'UserRegistrationAttemptsRepository::updateUserRegistrationAttempt - missing required parameters');
17
+ return false;
18
+ }
19
+ return novaDataSource.safeQuery(async (dataSource) => {
20
+ const userRegistrationAttemptsRepository = dataSource.getRepository(UserRegistrationAttempt);
21
+ const queryBuilder = userRegistrationAttemptsRepository
22
+ .createQueryBuilder()
23
+ .update(UserRegistrationAttempt)
24
+ .set({
25
+ clientId: params?.values?.clientId,
26
+ userName: params?.values?.userName,
27
+ pin: params?.values?.pin,
28
+ street: params?.values?.street,
29
+ city: params?.values?.city,
30
+ state: params?.values?.state,
31
+ postalCode: params?.values?.postalCode,
32
+ country: params?.values?.country,
33
+ countryCode: params?.values?.countryCode,
34
+ lastUpdatedAt: new Date(),
35
+ })
36
+ .where('id = :id', { id: params?.filters?.id });
37
+ const result = await queryBuilder.execute();
38
+ return result.affected > 0;
39
+ }, 'UserRegistrationAttemptsRepository::updateUserRegistrationAttempt');
40
+ };
@@ -0,0 +1,47 @@
1
+ import { User } from '../../entities/user';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const createUser = async (novaDataSource, params, logger) => {
4
+ if (!params?.id ||
5
+ !params?.firstName ||
6
+ !params?.lastName ||
7
+ !params?.email ||
8
+ !params?.userName ||
9
+ !params?.clientId) {
10
+ logger.warn({ params }, 'UsersRepository::createUser - missing required parameters');
11
+ return null;
12
+ }
13
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.id);
14
+ if (!binaryBuffer?.length) {
15
+ logger.warn({ params }, 'UsersRepository::createUser - user id should be a valid UUID');
16
+ return null;
17
+ }
18
+ return novaDataSource.safeQuery(async (dataSource) => {
19
+ const usersRepository = dataSource.getRepository(User);
20
+ const now = new Date();
21
+ const newUser = {
22
+ id: binaryBuffer,
23
+ firstName: params.firstName,
24
+ lastName: params.lastName,
25
+ companyName: params.companyName,
26
+ telephone: params.telephone,
27
+ street: params.street,
28
+ postalCode: params.postalCode,
29
+ city: params.city,
30
+ region: params.region,
31
+ email: params.email?.toLowerCase(),
32
+ userName: params.userName,
33
+ preferredUserName: params.preferredUserName,
34
+ status: params.status ?? 'A',
35
+ clientId: params.clientId,
36
+ pincode: params.pinCode,
37
+ isAdmin: params.isAdmin ?? false,
38
+ countryId: params.countryId,
39
+ telephoneCountryId: params.telephoneCountryId,
40
+ dataSourceTypeId: params.dataSourceTypeId,
41
+ emailVerified: params.emailVerified ?? true,
42
+ createdAt: now,
43
+ modifiedAt: now,
44
+ };
45
+ return await usersRepository.save(newUser);
46
+ }, 'UsersRepository::createUser');
47
+ };
@@ -0,0 +1,98 @@
1
+ import { Boundary, BoundaryEvent, Client, ClientConfiguration, Deactivation, NotificationRecipient, Trip, User, UserActivation, UserActivationDevice, UserAlertConfiguration, UserAppFeedback, UserConfiguration, UserInvitation, UserRatingRequest, UserSecurityRole, } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const deleteAccount = async (novaDataSource, params, logger) => {
4
+ let binaryBuffer = uuidStringToBinaryBuffer(params?.filters?.userId);
5
+ await novaDataSource.connect();
6
+ const queryRunner = novaDataSource.createQueryRunner();
7
+ try {
8
+ if (!binaryBuffer && params?.filters?.email) {
9
+ const usersRepository = novaDataSource.getRepository(User);
10
+ const user = await usersRepository
11
+ .createQueryBuilder()
12
+ .where('email = :email', { email: params.filters.email })
13
+ .select('id')
14
+ .getRawOne();
15
+ if (user) {
16
+ binaryBuffer = user.id;
17
+ }
18
+ }
19
+ let clientId = params.filters.clientId;
20
+ if (!clientId && params.filters.email) {
21
+ const clientsRepository = novaDataSource.getRepository(Client);
22
+ const client = await clientsRepository
23
+ .createQueryBuilder()
24
+ .where('email = :email', { email: params.filters.email })
25
+ .select('id')
26
+ .getRawOne();
27
+ if (client) {
28
+ clientId = client.id;
29
+ }
30
+ }
31
+ await queryRunner.startTransaction();
32
+ let clientDeleted = false;
33
+ if (clientId) {
34
+ await queryRunner.manager.delete(NotificationRecipient, { clientId });
35
+ await queryRunner.manager.delete(UserSecurityRole, { clientId });
36
+ await queryRunner.manager.delete(UserInvitation, { inviterClientId: clientId });
37
+ const boundaries = await queryRunner.manager
38
+ .createQueryBuilder()
39
+ .select('boundary.id')
40
+ .from(Boundary, 'boundary')
41
+ .where('boundary.clientId = :clientId', { clientId })
42
+ .getMany();
43
+ if (boundaries?.length) {
44
+ await queryRunner.manager
45
+ .createQueryBuilder()
46
+ .delete()
47
+ .from(BoundaryEvent, 'boundaryEvent')
48
+ .where('boundaryEvent.boundaryId IN (:ids)', {
49
+ ids: boundaries.map(x => x.id),
50
+ })
51
+ .execute();
52
+ await queryRunner.manager.delete(Boundary, { clientId });
53
+ }
54
+ await queryRunner.manager.delete(Trip, { clientId });
55
+ await queryRunner.manager.delete(ClientConfiguration, { clientId });
56
+ await queryRunner.manager.delete(Deactivation, { clientId });
57
+ const deleteClientResult = await queryRunner.manager.delete(Client, clientId);
58
+ clientDeleted = deleteClientResult.affected > 0;
59
+ }
60
+ let userDeleted = false;
61
+ if (binaryBuffer) {
62
+ await queryRunner.manager.delete(UserConfiguration, { userId: binaryBuffer });
63
+ await queryRunner.manager.delete(UserAlertConfiguration, { userId: binaryBuffer });
64
+ const userActivations = await queryRunner.manager
65
+ .createQueryBuilder()
66
+ .select('userActivation.id')
67
+ .from(UserActivation, 'userActivation')
68
+ .where('userActivation.userId = :userId', { userId: binaryBuffer })
69
+ .getMany();
70
+ if (userActivations?.length) {
71
+ await queryRunner.manager
72
+ .createQueryBuilder()
73
+ .delete()
74
+ .from(UserActivationDevice, 'userActivationDevice')
75
+ .where(`userActivationDevice.userActivationId IN (${userActivations
76
+ ?.map(x => x.id)
77
+ .join(',')})`)
78
+ .execute();
79
+ await queryRunner.manager.delete(UserActivation, { userId: binaryBuffer });
80
+ }
81
+ await queryRunner.manager.delete(UserRatingRequest, { userId: binaryBuffer });
82
+ await queryRunner.manager.delete(UserAppFeedback, { userId: binaryBuffer });
83
+ const deleteUserResult = await queryRunner.manager.delete(User, { id: binaryBuffer });
84
+ userDeleted = deleteUserResult.affected > 0;
85
+ }
86
+ await queryRunner.commitTransaction();
87
+ return clientDeleted || userDeleted;
88
+ }
89
+ catch (error) {
90
+ await queryRunner.rollbackTransaction();
91
+ logger.error({ error }, 'UsersRepository::deleteAccount error');
92
+ throw error;
93
+ }
94
+ finally {
95
+ await queryRunner.release();
96
+ await novaDataSource.disconnect();
97
+ }
98
+ };
@@ -0,0 +1,22 @@
1
+ import { User } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const deleteUser = async (novaDataSource, params, logger) => {
4
+ if (!params?.id) {
5
+ logger.warn({ params }, 'UsersRepository::deleteUser - missing required parameters');
6
+ return false;
7
+ }
8
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.id);
9
+ if (!binaryBuffer?.length) {
10
+ logger.warn({ params }, 'UsersRepository::deleteUser - user id should be a valid UUID');
11
+ return false;
12
+ }
13
+ return novaDataSource.safeQuery(async (dataSource) => {
14
+ const usersRepository = dataSource.getRepository(User);
15
+ const result = await usersRepository
16
+ .createQueryBuilder('user')
17
+ .delete()
18
+ .where('id = :id', { id: binaryBuffer })
19
+ .execute();
20
+ return result.affected > 0;
21
+ }, 'UsersRepository::deleteUser');
22
+ };
@@ -0,0 +1,22 @@
1
+ import { User } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const getUserById = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.id) {
5
+ logger.warn({ params }, 'UsersRepository::getUserById - missing required parameters');
6
+ return null;
7
+ }
8
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.filters?.id);
9
+ if (!binaryBuffer?.length) {
10
+ logger.warn({ params }, 'UsersRepository::getUserById - user id should be a valid UUID');
11
+ return null;
12
+ }
13
+ return novaDataSource.safeQuery(async (dataSource) => {
14
+ const usersRepository = dataSource.getRepository(User);
15
+ let queryBuilder = usersRepository.createQueryBuilder('user');
16
+ queryBuilder = queryBuilder.where('user.id = :id', {
17
+ id: binaryBuffer,
18
+ });
19
+ const result = await queryBuilder.getOne();
20
+ return result;
21
+ }, 'UsersRepository::getUserById');
22
+ };
@@ -0,0 +1,66 @@
1
+ import { User } from '../../entities';
2
+ import { binaryBufferToUuidString } from '../../utils/uuidHelpers';
3
+ export const getUsersData = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.imei) {
5
+ logger.warn({ params }, 'UsersRepository::getUsersData - missing required parameters');
6
+ return [];
7
+ }
8
+ return novaDataSource.safeQuery(async (dataSource) => {
9
+ const usersRepository = dataSource.getRepository(User);
10
+ const query = `SELECT U.id as userId, U.telephone, U.email
11
+ , UC.isMetric, coalesce (UC.timezone, '') as timezone, UC.alertsNotificationsOn, UC.speedUnits , UC.distanceUnits
12
+ , AC.alertTypeId, AC.smsNotification, AC.emailNotification, AC.alertValue, AC.pushNotification , AC.appNotification , AC.alertMetadata
13
+ , D.name as deviceName, D.deviceTypeId
14
+ , C.id as clientId
15
+ , U.isAdmin
16
+ , CO.internationalDirectDialing
17
+ , ( SELECT CONCAT('[',
18
+ GROUP_CONCAT( distinct case when NR.isUserProfile = true
19
+ then CONCAT('"', U.telephone, '"') else CONCAT('"', NR.recipient, '"') end SEPARATOR ','),
20
+ ']') AS JSON
21
+ from notificationRecipient as NR
22
+ where NR.clientId = C.id
23
+ and NR.userId = U.id
24
+ and NR.notificationType = 2
25
+ and NR.isEnabled = true
26
+ and NR.unsubscribed = false ) as phoneNumbers
27
+ , ( SELECT CONCAT('[',
28
+ GROUP_CONCAT( distinct case when NR.isUserProfile = true
29
+ then CONCAT('"', U.email, '"') else CONCAT('"', NR.recipient, '"') end SEPARATOR ','),
30
+ ']') AS JSON
31
+ from notificationRecipient as NR
32
+ where NR.clientId = C.id
33
+ and NR.userId = U.id
34
+ and NR.notificationType = 1
35
+ and NR.isEnabled = true
36
+ and NR.unsubscribed = false ) as emailAddresses
37
+ FROM device AS D
38
+ JOIN client AS C
39
+ ON D.clientId = C.id
40
+ JOIN user AS U
41
+ ON U.clientId = C.id and U.status = 'A'
42
+ JOIN userConfiguration AS UC
43
+ ON UC.userId = U.id
44
+ JOIN userAlertConfiguration as AC
45
+ ON AC.userId = U.id
46
+ JOIN alertType AS A
47
+ ON A.id = AC.alertTypeId
48
+ JOIN country AS CO
49
+ ON CO.id = CASE WHEN(U.countryId IS NULL OR U.countryId = 0) THEN 236 ELSE U.countryId END
50
+ WHERE D.imei = ?`;
51
+ const result = await usersRepository.query(query, [params.filters.imei]);
52
+ return result.map(item => ({
53
+ ...item,
54
+ userId: binaryBufferToUuidString(item.userId),
55
+ isAdmin: item.isAdmin === 1,
56
+ isMetric: item.isMetric === 1,
57
+ alertsNotificationOn: item.alertsNotificationsOn === 1,
58
+ smsNotification: item.smsNotification === 1,
59
+ emailNotification: item.emailNotification === 1,
60
+ pushNotification: item.pushNotification === 1,
61
+ appNotification: item.appNotification === 1,
62
+ phoneNumbers: item.phoneNumbers ? JSON.parse(item.phoneNumbers) : [],
63
+ emailAddresses: item.emailAddresses ? JSON.parse(item.emailAddresses) : [],
64
+ }));
65
+ }, 'UsersRepository::getUsersData');
66
+ };
@@ -0,0 +1,49 @@
1
+ import { User } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const getUsers = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.emailList?.length &&
5
+ !params?.filters?.userName &&
6
+ !params?.filters?.clientId &&
7
+ !params?.filters?.search &&
8
+ !params?.filters?.status) {
9
+ logger.warn({ params }, 'UsersRepository::getUsers - missing required parameters');
10
+ return [];
11
+ }
12
+ return novaDataSource.safeQuery(async (dataSource) => {
13
+ const usersRepository = dataSource.getRepository(User);
14
+ let queryBuilder = usersRepository.createQueryBuilder('user');
15
+ if (params.filters.emailList?.length) {
16
+ queryBuilder = queryBuilder.where('LOWER(user.email) IN (:...emailList)', {
17
+ emailList: params.filters.emailList.map(email => email.trim().toLowerCase()),
18
+ });
19
+ }
20
+ if (params.filters.userName) {
21
+ queryBuilder = queryBuilder.andWhere('(LOWER(user.userName) = LOWER(:userName) OR LOWER(user.preferredUserName) = LOWER(:userName))', {
22
+ userName: params.filters.userName.trim(),
23
+ });
24
+ }
25
+ if (params.filters.clientId) {
26
+ queryBuilder = queryBuilder.andWhere('user.clientId = :clientId', {
27
+ clientId: params.filters.clientId,
28
+ });
29
+ }
30
+ if (params.filters.search) {
31
+ const binaryBuffer = uuidStringToBinaryBuffer(params.filters.search);
32
+ queryBuilder = queryBuilder.andWhere(`(LOWER(user.userName) = LOWER(:search) OR
33
+ LOWER(user.preferredUserName) = LOWER(:search) OR
34
+ LOWER(user.email) = LOWER(:search) OR
35
+ user.id = :binaryBuffer)`, {
36
+ search: params.filters.search.trim(),
37
+ binaryBuffer,
38
+ });
39
+ }
40
+ if (params.filters.status) {
41
+ queryBuilder = queryBuilder.andWhere('user.status = :status', {
42
+ status: params.filters.status,
43
+ });
44
+ }
45
+ queryBuilder = queryBuilder.orderBy('user.lastname', 'DESC');
46
+ const result = await queryBuilder.getMany();
47
+ return result;
48
+ }, 'UsersRepository::getUsers');
49
+ };
@@ -0,0 +1,29 @@
1
+ import { User } from '../../entities';
2
+ //User
3
+ //User Configuration
4
+ //Alert Configuration
5
+ //Device (name)
6
+ //Country (international dialing code)
7
+ export const getUsersConfigurationByImei = async (novaDataSource, params, logger) => {
8
+ try {
9
+ await novaDataSource.connect();
10
+ const usersRepository = novaDataSource.getRepository(User);
11
+ const userConfiguration = usersRepository
12
+ .createQueryBuilder('user')
13
+ .innerJoin('user.client', 'client')
14
+ .innerJoinAndSelect('client.devices', 'device')
15
+ .innerJoinAndSelect('user.userConfiguration', 'userConfiguration')
16
+ .innerJoinAndSelect('user.userAlertConfiguration', 'userAlertConfiguration')
17
+ .innerJoinAndSelect('user.country', 'country')
18
+ .where('device.imei = :imei', { imei: params.filters.imei })
19
+ .getMany();
20
+ return userConfiguration;
21
+ }
22
+ catch (error) {
23
+ logger.error({ error }, 'UsersRepository::getUsersConfigurationByImei error');
24
+ throw error;
25
+ }
26
+ finally {
27
+ await novaDataSource.disconnect();
28
+ }
29
+ };
@@ -0,0 +1,21 @@
1
+ import { Country, User } from '../../entities';
2
+ import { binaryBufferToUuidString } from '../../utils/uuidHelpers';
3
+ export const getUsersIdsByPhoneAndCountryCode = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.phone || !params?.filters?.countryCode) {
5
+ logger.warn({ params }, 'UsersRepository::getUsersIdsByPhoneAndCountryCode - missing required parameters');
6
+ return [];
7
+ }
8
+ return novaDataSource.safeQuery(async (dataSource) => {
9
+ const usersRepository = dataSource.getRepository(User);
10
+ let queryBuilder = usersRepository
11
+ .createQueryBuilder('user')
12
+ .innerJoin(Country, 'country', 'country.id = user.countryId')
13
+ .where('country.alpha2Code = :countryCode', { countryCode: params.filters.countryCode })
14
+ .andWhere(`user.telephone = REPLACE(:phone, country.internationalDirectDialing, '')`, {
15
+ phone: params.filters.phone,
16
+ });
17
+ queryBuilder = queryBuilder.select('user.id as id');
18
+ const result = await queryBuilder.getRawMany();
19
+ return result?.map(item => binaryBufferToUuidString(item.id));
20
+ }, 'UsersRepository::getUsersIdsByPhoneAndCountryCode');
21
+ };
@@ -0,0 +1,32 @@
1
+ import { SecurityRole, User, UserSecurityRole } from '../../entities';
2
+ import { mapRawEntityToEntity } from '../../utils/mapRawEntityToEntity';
3
+ export const getUsersWithRoles = async (novaDataSource, params, logger) => {
4
+ if (!params?.filters?.clientId || (!params?.filters?.status && !params?.filters?.roleId)) {
5
+ logger.warn({ params }, 'UsersRepository::getUsersWithRoles - missing required parameters');
6
+ return [];
7
+ }
8
+ return novaDataSource.safeQuery(async (dataSource) => {
9
+ const usersRepository = dataSource.getRepository(User);
10
+ let queryBuilder = usersRepository
11
+ .createQueryBuilder('user')
12
+ .innerJoin(UserSecurityRole, 'userSecurityRole', 'userSecurityRole.userId = user.id')
13
+ .innerJoin(SecurityRole, 'securityRole', 'securityRole.id = userSecurityRole.securityRoleId')
14
+ .where('user.clientId = :clientId', {
15
+ clientId: params.filters.clientId,
16
+ });
17
+ if (params.filters.roleId) {
18
+ queryBuilder = queryBuilder.andWhere('securityRole.id = :roleId', {
19
+ roleId: params.filters.roleId,
20
+ });
21
+ }
22
+ if (params.filters.status) {
23
+ queryBuilder = queryBuilder.andWhere('user.status = :status', {
24
+ status: params.filters.status,
25
+ });
26
+ }
27
+ queryBuilder = queryBuilder.addSelect('securityRole.name', 'role');
28
+ const usersWithRole = await queryBuilder.getRawMany();
29
+ const result = usersWithRole.map(item => mapRawEntityToEntity(item, 'user_'));
30
+ return result;
31
+ }, 'UsersRepository::getUsersWithRoles');
32
+ };