@spytecgps/nova-orm 0.0.224 → 0.0.225

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 +110 -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,90 @@
1
+ import { NovaDataSource } from '../../novaDataSource';
2
+ import { BaseRepository } from '../baseRepository';
3
+ import { createDevicePairing } from './createDevicePairing';
4
+ import { deleteDevicePairing } from './deleteDevicePairing';
5
+ import { getDevicePairings } from './getDevicePairings';
6
+ import { getDevicePairingsByImei } from './getDevicePairingsByImei';
7
+ import { updateDevicePairing } from './updateDevicePairing';
8
+ export class DevicePairingsRepository extends BaseRepository {
9
+ /**
10
+ * Get device pairings
11
+ * @param params params containing information to get device pairings with filters
12
+ * At least one of the following filters is required:
13
+ * filters.imeiMain: the main device IMEI
14
+ * filters.imeiSecondary: the secondary device IMEI
15
+ * filters.btmacMain: the main device bluetooth MAC
16
+ * filters.btmacSecondary: the secondary device bluetooth MAC
17
+ * @returns Promise<DevicePairing[]> the device pairings
18
+ */
19
+ async getDevicePairings(params) {
20
+ this.logger.trace(params, 'DevicePairingsRepository::getDevicePairings started with params');
21
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
22
+ const result = await getDevicePairings(novaDataSource, params, this.logger);
23
+ this.logger.trace(result, 'DevicePairingsRepository::getDevicePairings result');
24
+ return result;
25
+ }
26
+ /**
27
+ * Get device pairings by IMEI
28
+ * @param params params containing information to get device pairings by IMEI with filters
29
+ * filters.imei: the IMEI to get device pairings
30
+ * @returns Promise<DevicePairing[]> the device pairings
31
+ */
32
+ async getDevicePairingsByImei(params) {
33
+ this.logger.trace(params, 'DevicePairingsRepository::getDevicePairingsByImei started with params');
34
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
35
+ const result = await getDevicePairingsByImei(novaDataSource, params, this.logger);
36
+ this.logger.trace(result, 'DevicePairingsRepository::getDevicePairingsByImei result');
37
+ return result;
38
+ }
39
+ /**
40
+ * Create device pairing
41
+ * @param params params containing information to create device pairing
42
+ * params.imeiMain: the main device IMEI, required
43
+ * params.btmacMain: the main device bluetooth MAC, required
44
+ * params.imeiSecondary: the secondary device IMEI, required
45
+ * params.btmacSecondary: the secondary device bluetooth MAC, required
46
+ * params.pairingMode: the pairing mode, optional
47
+ * params.connectionType: the connection type, optional
48
+ * @returns Promise<DevicePairing> the created device pairing
49
+ */
50
+ async createDevicePairing(params) {
51
+ this.logger.trace(params, 'DevicePairingsRepository::createDevicePairing started with params');
52
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
53
+ const result = await createDevicePairing(novaDataSource, params, this.logger);
54
+ this.logger.trace(result, 'DevicePairingsRepository::createDevicePairing result');
55
+ return result;
56
+ }
57
+ /**
58
+ * Update device pairing
59
+ * @param params params containing information to update device pairing
60
+ * filters.id: the device pairing id
61
+ * At least one of the following values is required:
62
+ * values.imeiMain: the main device IMEI
63
+ * values.imeiSecondary: the secondary device IMEI
64
+ * values.btmacMain: the main device bluetooth MAC
65
+ * values.btmacSecondary: the secondary device bluetooth MAC
66
+ * values.pairingMode: the pairing mode
67
+ * values.connectionType: the connection type
68
+ * @returns Promise<boolean> true if the device pairing was updated, false otherwise
69
+ */
70
+ async updateDevicePairing(params) {
71
+ this.logger.trace(params, 'DevicePairingsRepository::updateDevicePairing started with params');
72
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
73
+ const result = await updateDevicePairing(novaDataSource, params, this.logger);
74
+ this.logger.trace({ result }, 'DevicePairingsRepository::updateDevicePairing result');
75
+ return result;
76
+ }
77
+ /**
78
+ * Delete device pairing
79
+ * @param params params containing information to delete device pairing
80
+ * filters.id: the device pairing id
81
+ * @returns Promise<boolean> true if the device pairing was deleted, false otherwise
82
+ */
83
+ async deleteDevicePairing(params) {
84
+ this.logger.trace(params, 'DevicePairingsRepository::deleteDevicePairing started with params');
85
+ const novaDataSource = new NovaDataSource(this.novaDataSourceConfig, this.logger);
86
+ const result = await deleteDevicePairing(novaDataSource, params, this.logger);
87
+ this.logger.trace({ result }, 'DevicePairingsRepository::deleteDevicePairing result');
88
+ return result;
89
+ }
90
+ }
@@ -0,0 +1,32 @@
1
+ import { DevicePairing } from '../../entities';
2
+ export const updateDevicePairing = async (novaDataSource, params, logger) => {
3
+ // id is required
4
+ if (!params?.filters?.id) {
5
+ logger.warn({ params }, 'DevicePairingsRepository::updateDevicePairing missing required parameters');
6
+ return false;
7
+ }
8
+ // at least one field to update is required
9
+ if (!params?.values?.imeiMain &&
10
+ !params?.values?.imeiSecondary &&
11
+ !params?.values?.btmacMain &&
12
+ !params?.values?.btmacSecondary &&
13
+ !params?.values?.connectionType &&
14
+ !params?.values?.pairingMode) {
15
+ logger.warn({ params }, 'DevicePairingsRepository::updateDevicePairing missing required parameters');
16
+ return false;
17
+ }
18
+ return novaDataSource.safeQuery(async (dataSource) => {
19
+ const devicePairingsRepository = dataSource.getRepository(DevicePairing);
20
+ const now = new Date();
21
+ const queryBuilder = devicePairingsRepository
22
+ .createQueryBuilder()
23
+ .update(DevicePairing)
24
+ .set({
25
+ ...params.values,
26
+ modifiedAt: now,
27
+ })
28
+ .where('id = :id', { id: params.filters.id });
29
+ const result = await queryBuilder.execute();
30
+ return result.affected > 0;
31
+ }, 'DevicePairingsRepository::updateDevicePairing');
32
+ };
@@ -0,0 +1,25 @@
1
+ import { ClientDeviceSetting } from '../../entities';
2
+ export const createClientDeviceSetting = async (novaDataSource, params, logger) => {
3
+ if (!params?.imei || !params?.clientId) {
4
+ logger.warn({ params }, 'DevicesRepository::createClientDeviceSetting missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const clientDeviceSettingRepository = dataSource.getRepository(ClientDeviceSetting);
9
+ const newClientDeviceSetting = {
10
+ id: params.id,
11
+ imei: params.imei,
12
+ clientId: params.clientId,
13
+ generateTrips: params.generateTrips ?? true,
14
+ movingPingFrequency: params.movingPingFrequency,
15
+ stoppedPingFrequency: params.stoppedPingFrequency,
16
+ fixedStatus: params.fixedStatus,
17
+ stopThresholdMinutes: params.stopThresholdMinutes,
18
+ offlineThresholdMinutes: params.offlineThresholdMinutes,
19
+ movementThresholdSpeed: params.movementThresholdSpeed,
20
+ externalBatteryInformation: params.externalBatteryInformation,
21
+ };
22
+ const result = await clientDeviceSettingRepository.save(newClientDeviceSetting);
23
+ return result;
24
+ }, 'DevicesRepository::createClientDeviceSetting');
25
+ };
@@ -0,0 +1,30 @@
1
+ import { Device } from '../../entities';
2
+ import { generateDeviceIdentifierKey } from './generateDeviceIdentifierKey';
3
+ export const createDevice = async (novaDataSource, params, logger) => {
4
+ if (!params?.imei || !params?.clientId || params?.clientId === 0 || !params?.deviceTypeId) {
5
+ logger.warn({ params }, 'DevicesRepository::createDevice missing required parameters');
6
+ return null;
7
+ }
8
+ const identifier = params.identifier || params.imei;
9
+ const identifierKey = await generateDeviceIdentifierKey(novaDataSource, {
10
+ deviceTypeId: params.deviceTypeId,
11
+ deviceIdentifier: identifier,
12
+ }, logger);
13
+ if (!identifierKey) {
14
+ return null;
15
+ }
16
+ return novaDataSource.safeQuery(async (dataSource) => {
17
+ const devicesRepository = dataSource.getRepository(Device);
18
+ const now = new Date();
19
+ const newDevice = {
20
+ ...params,
21
+ identifier,
22
+ identifierKey,
23
+ modifiedBy: params.createdBy,
24
+ createdAt: now,
25
+ modifiedAt: now,
26
+ };
27
+ const result = await devicesRepository.save(newDevice);
28
+ return result;
29
+ }, 'DevicesRepository::createDevice');
30
+ };
@@ -0,0 +1,34 @@
1
+ import { DeviceReplacement } from '../../entities';
2
+ import { uuidStringToBinaryBuffer } from '../../utils/uuidHelpers';
3
+ export const createDeviceReplacement = async (novaDataSource, params, logger) => {
4
+ if (!params?.imeiOld ||
5
+ !params?.imeiNew ||
6
+ !params?.iccidNew ||
7
+ !params?.iccidOld ||
8
+ !params?.userId ||
9
+ !params?.clientId ||
10
+ params?.clientId === 0) {
11
+ logger.warn({ params }, 'DevicesRepository::createDeviceReplacement missing required parameters');
12
+ return null;
13
+ }
14
+ const binaryBuffer = uuidStringToBinaryBuffer(params?.userId);
15
+ if (!binaryBuffer?.length) {
16
+ logger.warn({ params }, 'DevicesRepository::createDeviceReplacement - user id should be a valid UUID');
17
+ return null;
18
+ }
19
+ return novaDataSource.safeQuery(async (dataSource) => {
20
+ const deviceReplacementsRepository = dataSource.getRepository(DeviceReplacement);
21
+ const newDeviceReplacement = {
22
+ id: params.id,
23
+ imeiOld: params.imeiOld,
24
+ imeiNew: params.imeiNew,
25
+ iccidOld: params.iccidOld,
26
+ iccidNew: params.iccidNew,
27
+ userId: binaryBuffer,
28
+ clientId: params.clientId,
29
+ createAt: new Date(),
30
+ };
31
+ const result = await deviceReplacementsRepository.save(newDeviceReplacement);
32
+ return result;
33
+ }, 'DevicesRepository::createDeviceReplacement');
34
+ };
@@ -0,0 +1,15 @@
1
+ import { DeviceType } from '../../entities';
2
+ export const createDeviceType = async (novaDataSource, params, logger) => {
3
+ if (!params?.brand || !params?.model || !params?.modelFamily || !params?.identifierType) {
4
+ logger.warn({ params }, 'DevicesRepository::createDeviceType missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const deviceTypesRepository = dataSource.getRepository(DeviceType);
9
+ const newDeviceType = {
10
+ ...params,
11
+ };
12
+ const result = await deviceTypesRepository.save(newDeviceType);
13
+ return result;
14
+ }, 'DevicesRepository::createDeviceType');
15
+ };
@@ -0,0 +1,16 @@
1
+ import { Device } from '../../entities';
2
+ export const deleteDevice = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imei) {
4
+ logger.warn({ params }, 'DevicesRepository::deleteDevice - missing required parameters');
5
+ return false;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const devicesRepository = dataSource.getRepository(Device);
9
+ const result = await devicesRepository
10
+ .createQueryBuilder()
11
+ .delete()
12
+ .where('imei = :imei', { imei: params.filters.imei })
13
+ .execute();
14
+ return result.affected > 0;
15
+ }, 'DevicesRepository::deleteDevice');
16
+ };
@@ -0,0 +1,18 @@
1
+ import { DeviceType } from '../../entities';
2
+ export const generateDeviceIdentifierKey = async (novaDataSource, params, logger) => {
3
+ if (!params?.deviceTypeId || !params?.deviceIdentifier) {
4
+ logger.warn({ params }, 'DevicesRepository::generateDeviceIdentifierKey missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const deviceTypesRepository = dataSource.getRepository(DeviceType);
9
+ const deviceType = await deviceTypesRepository
10
+ .createQueryBuilder()
11
+ .where('id = :deviceTypeId', { deviceTypeId: params.deviceTypeId })
12
+ .getOne();
13
+ if (!deviceType) {
14
+ return null;
15
+ }
16
+ return `${deviceType.identifierType}#${params.deviceIdentifier}`;
17
+ }, 'DevicesRepository::generateDeviceIdentifierKey');
18
+ };
@@ -0,0 +1,40 @@
1
+ import { Device, IccidStatus, ImeiIccidCarrier, ServiceProvider } from '../../entities';
2
+ export const getCanceledDevicesWithActiveSimCards = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.lastAnalyzedDeviceId || !params?.pagingOptions?.limit) {
4
+ logger.warn({ params }, 'DevicesRepository::getCanceledDevicesWithActiveSimCards missing required parameters');
5
+ return [];
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const serviceProviderRepository = dataSource.getRepository(ServiceProvider);
9
+ const serviceProviders = await serviceProviderRepository.find();
10
+ const deviceRepository = dataSource.getRepository(Device);
11
+ const queryBuilder = deviceRepository
12
+ .createQueryBuilder('device')
13
+ .innerJoin(IccidStatus, 'iccidStatus', 'device.iccid = iccidStatus.iccid')
14
+ .innerJoin(ImeiIccidCarrier, 'imeiIccidCarrier', 'device.iccid = imeiIccidCarrier.iccid')
15
+ .where('device.status = :deviceStatus', { deviceStatus: 'D' })
16
+ .andWhere('device.id > :lastAnalyzedDeviceId', {
17
+ lastAnalyzedDeviceId: params.filters.lastAnalyzedDeviceId,
18
+ })
19
+ .andWhere('iccidStatus.status = :iccidStatus', {
20
+ iccidStatus: 'active',
21
+ })
22
+ .select([
23
+ 'device.imei as imei',
24
+ 'device.iccid as iccid',
25
+ 'device.clientId as clientId',
26
+ 'imeiIccidCarrier.carrier as carrierId',
27
+ 'device.id as deviceId',
28
+ ])
29
+ .orderBy('device.id', 'ASC')
30
+ .limit(params.pagingOptions.limit);
31
+ const result = await queryBuilder.getRawMany();
32
+ return result.map(row => ({
33
+ imei: row.imei,
34
+ iccid: row.iccid,
35
+ clientId: row.clientId,
36
+ carrier: serviceProviders?.find(sp => sp.id === row.carrierId)?.name || 'Unknown Carrier',
37
+ deviceId: row.deviceId,
38
+ }));
39
+ }, 'DevicesRepository::getCanceledDevicesWithActiveSimCards');
40
+ };
@@ -0,0 +1,40 @@
1
+ import { IccidStatus, ImeiIccidCarrier } from '../../entities';
2
+ export const getCarrierStatusUpdatedBefore = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.beforeDate || !params?.pagingOptions?.limit) {
4
+ logger.warn({ params }, 'DevicesRepository::getCarrierStatusUpdatedBefore missing required parameters');
5
+ return [];
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const iccidStatusRepository = dataSource.getRepository(IccidStatus);
9
+ const queryBuilder = iccidStatusRepository
10
+ .createQueryBuilder('iccidStatus')
11
+ .innerJoin(ImeiIccidCarrier, 'imeiIccidCarrier', 'iccidStatus.iccid = imeiIccidCarrier.iccid')
12
+ .where('iccidStatus.modifiedAt < :beforeDate', { beforeDate: params.filters.beforeDate })
13
+ .andWhere('coalesce(iccidStatus.processing, false) <> :processing', {
14
+ processing: true,
15
+ })
16
+ .andWhere('iccidStatus.status <> :status', {
17
+ status: 'not found in carrier',
18
+ })
19
+ .select([
20
+ 'imeiIccidCarrier.carrier as carrier',
21
+ 'iccidStatus.iccid as iccid',
22
+ 'iccidStatus.status as status',
23
+ 'iccidStatus.processing as processing',
24
+ 'iccidStatus.carrierFound as carrierFound',
25
+ 'iccidStatus.modifiedAt as modifiedAt',
26
+ ])
27
+ .orderBy('iccidStatus.modifiedAt', 'ASC')
28
+ .addOrderBy('iccidStatus.iccid', 'ASC')
29
+ .limit(params.pagingOptions.limit);
30
+ const result = await queryBuilder.getRawMany();
31
+ return result.map(row => ({
32
+ carrier: row.carrier,
33
+ iccid: row.iccid,
34
+ status: row.status,
35
+ processing: row.processing != null ? row.processing === 1 : null,
36
+ carrierFound: row.carrierFound,
37
+ modifiedAt: row.modifiedAt,
38
+ }));
39
+ }, 'DevicesRepository::getCarrierStatusUpdatedBefore');
40
+ };
@@ -0,0 +1,20 @@
1
+ import { ClientDeviceSetting } from '../../entities';
2
+ export const getClientDeviceSetting = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imei || !params?.filters?.clientId) {
4
+ logger.warn({ params }, 'DevicesRepository::getClientDeviceSetting missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const clientDeviceSettingRepository = dataSource.getRepository(ClientDeviceSetting);
9
+ const queryBuilder = clientDeviceSettingRepository
10
+ .createQueryBuilder('clientDeviceSetting')
11
+ .where('clientDeviceSetting.imei = :imei', {
12
+ imei: params.filters.imei,
13
+ })
14
+ .andWhere('clientDeviceSetting.clientId = :clientId', {
15
+ clientId: params.filters.clientId,
16
+ });
17
+ const result = await queryBuilder.getOne();
18
+ return result;
19
+ }, 'DevicesRepository::getClientDeviceSetting');
20
+ };
@@ -0,0 +1,17 @@
1
+ import { ClientDeviceSetting } from '../../entities';
2
+ export const getClientDeviceSettings = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.clientId) {
4
+ logger.warn({ params }, 'DevicesRepository::getClientDeviceSettings missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const clientDeviceSettingRepository = dataSource.getRepository(ClientDeviceSetting);
9
+ const queryBuilder = clientDeviceSettingRepository
10
+ .createQueryBuilder('clientDeviceSetting')
11
+ .where('clientDeviceSetting.clientId = :clientId', {
12
+ clientId: params.filters.clientId,
13
+ });
14
+ const result = await queryBuilder.getMany();
15
+ return result;
16
+ }, 'DevicesRepository::getClientDeviceSettings');
17
+ };
@@ -0,0 +1,33 @@
1
+ import { ClientDeviceSetting, Device, ImeiIccidCarrier, ServiceProvider } from '../../entities';
2
+ export const getDevice = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imei && !params?.filters?.id) {
4
+ logger.warn({ params }, 'DevicesRepository::getDevice missing required parameters');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const devicesRepository = dataSource.getRepository(Device);
9
+ let queryBuilder = devicesRepository.createQueryBuilder('device');
10
+ if (params.filters.id) {
11
+ queryBuilder = queryBuilder.where('device.id = :id', {
12
+ id: params.filters.id,
13
+ });
14
+ }
15
+ if (params.filters.imei) {
16
+ queryBuilder = queryBuilder.andWhere('device.imei = :imei', {
17
+ imei: params.filters.imei,
18
+ });
19
+ }
20
+ if (params.projectionOptions.withDeviceType) {
21
+ queryBuilder = queryBuilder.leftJoinAndSelect('device.deviceType', 'deviceType');
22
+ }
23
+ if (params.projectionOptions.withIccidCarrier) {
24
+ queryBuilder = queryBuilder.leftJoinAndMapOne('device.iccidCarrier', ImeiIccidCarrier, 'iccidCarrier', 'device.imei = iccidCarrier.imei');
25
+ queryBuilder = queryBuilder.leftJoinAndMapOne('iccidCarrier.serviceProvider', ServiceProvider, 'serviceProvider', 'iccidCarrier.carrier = serviceProvider.id');
26
+ }
27
+ if (params.projectionOptions.withClientDeviceSettings) {
28
+ queryBuilder = queryBuilder.leftJoinAndMapOne('device.clientDeviceSetting', ClientDeviceSetting, 'clientDeviceSetting', 'device.imei = clientDeviceSetting.imei and device.clientId = clientDeviceSetting.clientId');
29
+ }
30
+ const device = await queryBuilder.getOne();
31
+ return device;
32
+ }, 'DevicesRepository::getDevice');
33
+ };
@@ -0,0 +1,37 @@
1
+ import { DeviceCustomConfiguration } from '../../entities';
2
+ export const getDeviceCustomConfigs = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.clientId && !params?.filters?.imei && !params?.filters?.po) {
4
+ logger.warn({ params }, 'DevicesRepository::getDeviceCustomConfig missing required params');
5
+ return [];
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const deviceCustomConfigRepository = dataSource.getRepository(DeviceCustomConfiguration);
9
+ let queryBuilder = deviceCustomConfigRepository.createQueryBuilder('deviceCustomConfiguration');
10
+ if (params?.filters?.imei) {
11
+ queryBuilder = queryBuilder.orWhere(`(LOWER(deviceCustomConfiguration.imei) = LOWER(:imei) AND deviceCustomConfiguration.clientId IS NULL AND (deviceCustomConfiguration.po IS NULL OR deviceCustomConfiguration.po = ''))`, {
12
+ imei: params.filters.imei,
13
+ });
14
+ }
15
+ if (params?.filters?.po) {
16
+ queryBuilder = queryBuilder.orWhere(`(LOWER(deviceCustomConfiguration.po) = LOWER(:po) AND deviceCustomConfiguration.clientId IS NULL AND (deviceCustomConfiguration.imei IS NULL OR deviceCustomConfiguration.imei = ''))`, {
17
+ po: params.filters.po,
18
+ });
19
+ }
20
+ if (params?.filters?.clientId) {
21
+ queryBuilder = queryBuilder.orWhere(`deviceCustomConfiguration.clientId = :clientId AND (deviceCustomConfiguration.po IS NULL OR deviceCustomConfiguration.po = '') AND (deviceCustomConfiguration.imei IS NULL OR deviceCustomConfiguration.imei = '')`, {
22
+ clientId: params.filters.clientId,
23
+ });
24
+ }
25
+ if (params?.filters?.deviceTypeId) {
26
+ queryBuilder = queryBuilder.andWhere('(deviceCustomConfiguration.deviceTypeId = :deviceTypeId OR deviceCustomConfiguration.deviceTypeId IS NULL)', {
27
+ deviceTypeId: params.filters.deviceTypeId,
28
+ });
29
+ }
30
+ else {
31
+ queryBuilder = queryBuilder.andWhere('deviceCustomConfiguration.deviceTypeId IS NULL');
32
+ }
33
+ queryBuilder = queryBuilder.orderBy('deviceCustomConfiguration.id');
34
+ const result = await queryBuilder.getMany();
35
+ return result;
36
+ }, 'DevicesRepository::getDeviceCustomConfig');
37
+ };
@@ -0,0 +1,18 @@
1
+ import { DeviceType, ImeiIccidCarrier } from '../../entities';
2
+ export const getDeviceTypeByImei = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imei) {
4
+ logger.warn({ params }, 'DevicesRepository::getDeviceTypeByImei - missing imei parameter');
5
+ return null;
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const imeiIccidCarrierRepository = dataSource.getRepository(DeviceType);
9
+ const queryBuilder = imeiIccidCarrierRepository
10
+ .createQueryBuilder('deviceType')
11
+ .innerJoin(ImeiIccidCarrier, 'imeiIccidCarrier', 'deviceType.id = imeiIccidCarrier.deviceTypeId')
12
+ .where(`imeiIccidCarrier.imei = :imei`, {
13
+ imei: params.filters.imei,
14
+ });
15
+ const result = await queryBuilder.getOne();
16
+ return result;
17
+ }, 'DevicesRepository::getDeviceTypeByImei');
18
+ };
@@ -0,0 +1,30 @@
1
+ import { DeviceType, ImeiIccidCarrier } from '../../entities';
2
+ export const getDeviceTypes = async (novaDataSource, params) => {
3
+ return novaDataSource.safeQuery(async (dataSource) => {
4
+ const deviceTypesRepository = dataSource.getRepository(DeviceType);
5
+ let queryBuilder = deviceTypesRepository.createQueryBuilder('deviceType');
6
+ if (params?.filters?.deviceTypeIdList?.length) {
7
+ queryBuilder = queryBuilder.where('deviceType.id IN (:...deviceTypeIdList)', {
8
+ deviceTypeIdList: params.filters.deviceTypeIdList,
9
+ });
10
+ }
11
+ if (params?.filters?.brand) {
12
+ queryBuilder = queryBuilder.andWhere('LOWER(deviceType.brand) = LOWER(:brand)', {
13
+ brand: params.filters.brand,
14
+ });
15
+ }
16
+ if (params?.filters?.model) {
17
+ queryBuilder = queryBuilder.andWhere('LOWER(deviceType.model) = LOWER(:model)', {
18
+ model: params.filters.model,
19
+ });
20
+ }
21
+ if (params?.filters?.onlyWithRelatedIccidCarrier) {
22
+ queryBuilder = queryBuilder
23
+ .innerJoin(ImeiIccidCarrier, 'iccidCarrier', 'deviceType.id = iccidCarrier.deviceTypeId')
24
+ .groupBy('deviceType.id');
25
+ }
26
+ queryBuilder = queryBuilder.orderBy('deviceType.id');
27
+ const result = await queryBuilder.getMany();
28
+ return result;
29
+ }, 'DevicesRepository::getDeviceTypes');
30
+ };
@@ -0,0 +1,27 @@
1
+ import { Device, DeviceType } from '../../entities';
2
+ export const getDeviceTypesModelsOrderedByDeviceCount = async (novaDataSource, params) => {
3
+ return novaDataSource.safeQuery(async (dataSource) => {
4
+ const deviceTypesRepository = dataSource.getRepository(DeviceType);
5
+ let queryBuilder = deviceTypesRepository
6
+ .createQueryBuilder('dt')
7
+ .leftJoin(Device, 'd', 'd.deviceTypeId = dt.id')
8
+ .select([
9
+ 'dt.id as id',
10
+ 'dt.model as model',
11
+ 'dt.protocol as protocol',
12
+ 'dt.protocolMatch as protocolMatch',
13
+ ])
14
+ .addSelect('COUNT(d.id)', 'deviceCount');
15
+ if (params?.filters?.deviceStatus) {
16
+ queryBuilder = queryBuilder.where('d.status = :deviceStatus', {
17
+ deviceStatus: params.filters.deviceStatus,
18
+ });
19
+ }
20
+ queryBuilder = queryBuilder.groupBy('dt.id').orderBy('deviceCount', 'DESC');
21
+ const result = await queryBuilder.getRawMany();
22
+ return result.map(item => ({
23
+ ...item,
24
+ deviceCount: parseInt(item.deviceCount, 10),
25
+ }));
26
+ }, 'DevicesRepository::getDeviceTypesModelsOrderedByDeviceCount');
27
+ };
@@ -0,0 +1,59 @@
1
+ import { AlertType, Billing, Device, ImeiIccidCarrier, LatestPosition, SecurityRole, User, UserActivationDevice, UserAlertConfiguration, UserSecurityRole, } from '../../entities';
2
+ export const getDeviceWithUsersInfo = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.imei) {
4
+ logger.warn({ params }, 'DevicesRepository::getDeviceWithUsersInfo missing required parameters');
5
+ return [];
6
+ }
7
+ return novaDataSource.safeQuery(async (dataSource) => {
8
+ const devicesRepository = dataSource.getRepository(Device);
9
+ const queryBuilder = devicesRepository
10
+ .createQueryBuilder('device')
11
+ .innerJoin(ImeiIccidCarrier, 'iccidCarrier', 'device.imei = iccidCarrier.imei')
12
+ .innerJoin(User, 'user', 'device.clientId = user.clientId')
13
+ .innerJoin(UserSecurityRole, 'userSecurityRole', 'user.id = userSecurityRole.userId')
14
+ .innerJoin(SecurityRole, 'securityRole', 'userSecurityRole.securityRoleId = securityRole.id')
15
+ .innerJoin(UserAlertConfiguration, 'userAlertConfiguration', 'user.id = userAlertConfiguration.userId')
16
+ .leftJoin(Billing, 'billing', 'device.imei = billing.imei')
17
+ .innerJoin(AlertType, 'alertType', 'userAlertConfiguration.alertTypeId = alertType.id and alertType.id < 6')
18
+ .innerJoin(UserActivationDevice, 'userActivationDevice', `device.imei = userActivationDevice.imei and userActivationDevice.id = (
19
+ select userActivationDevice.id from userActivationDevice where userActivationDevice.imei = :imei
20
+ order by userActivationDevice.id desc limit 1)
21
+ `, { imei: params.filters.imei.toLowerCase() })
22
+ .leftJoin(LatestPosition, 'latestPosition', 'device.imei = latestPosition.imei')
23
+ .where('device.imei = :imei', { imei: params.filters.imei.toLowerCase() })
24
+ .orderBy('user.createdAt, userAlertConfiguration.alertTypeId', 'DESC')
25
+ .select([
26
+ 'user.firstName as firstName',
27
+ 'user.lastName as lastName',
28
+ 'user.userName as username',
29
+ 'user.email as email',
30
+ 'latestPosition.createdAt as latestPositionCreatedAt',
31
+ 'latestPosition.actualDate as latestPositionActualDate',
32
+ 'latestPosition.lat as latestPositionLatitude',
33
+ 'latestPosition.lon as latestPositionLongitude',
34
+ 'latestPosition.odometer latestPositionOdometer',
35
+ 'latestPosition.speed as latestPositionSpeed',
36
+ 'device.status as deviceStatus',
37
+ 'device.name as deviceName',
38
+ 'iccidCarrier.iccid as iccid',
39
+ 'alertType.name as alertName',
40
+ 'userAlertConfiguration.alertValue as alertValue',
41
+ 'userAlertConfiguration.smsNotification as smsNotification',
42
+ 'userAlertConfiguration.emailNotification as emailNotification',
43
+ 'userActivationDevice.servicePlan as servicePlan',
44
+ 'securityRole.name as roleName',
45
+ 'billing.subscriptionId as subscriptionId',
46
+ ]);
47
+ const result = await queryBuilder.getRawMany();
48
+ return result.map(item => ({
49
+ ...item,
50
+ firstName: undefined,
51
+ lastName: undefined,
52
+ clientName: item.firstName?.length && item.lastName?.length
53
+ ? `${item.firstName} ${item.lastName}`
54
+ : item.firstName || item.lastName || '',
55
+ smsNotification: item.smsNotification === 1,
56
+ emailNotification: item.emailNotification === 1,
57
+ }));
58
+ }, 'DevicesRepository::getDeviceWithUsersInfo');
59
+ };
@@ -0,0 +1,46 @@
1
+ import { ClientDeviceSetting, Device, ImeiIccidCarrier, ServiceProvider } from '../../entities';
2
+ export const getDevices = async (novaDataSource, params, logger) => {
3
+ if (!params?.filters?.deviceTypeId &&
4
+ !params?.filters?.clientId &&
5
+ !params?.filters?.imeiList?.length &&
6
+ !params?.filters?.status) {
7
+ logger.warn({ params }, 'DevicesRepository::getDevices missing required parameters');
8
+ return [];
9
+ }
10
+ return novaDataSource.safeQuery(async (dataSource) => {
11
+ const devicesRepository = dataSource.getRepository(Device);
12
+ let queryBuilder = devicesRepository.createQueryBuilder('device');
13
+ if (params.filters.clientId) {
14
+ queryBuilder = queryBuilder.where('device.clientId = :clientId', {
15
+ clientId: params.filters.clientId,
16
+ });
17
+ }
18
+ if (params.filters.deviceTypeId) {
19
+ queryBuilder = queryBuilder.andWhere('device.deviceTypeId = :deviceTypeId', {
20
+ deviceTypeId: params.filters.deviceTypeId,
21
+ });
22
+ }
23
+ if (params.filters.status) {
24
+ queryBuilder = queryBuilder.andWhere('device.status = :status', {
25
+ status: params.filters.status,
26
+ });
27
+ }
28
+ if (params.filters.imeiList?.length) {
29
+ queryBuilder = queryBuilder.andWhere('device.imei IN (:...imeiList)', {
30
+ imeiList: params.filters.imeiList,
31
+ });
32
+ }
33
+ if (params.projectionOptions.withDeviceType) {
34
+ queryBuilder = queryBuilder.leftJoinAndSelect('device.deviceType', 'deviceType');
35
+ }
36
+ if (params.projectionOptions.withIccidCarrier) {
37
+ queryBuilder = queryBuilder.leftJoinAndMapOne('device.iccidCarrier', ImeiIccidCarrier, 'iccidCarrier', 'device.imei = iccidCarrier.imei');
38
+ queryBuilder = queryBuilder.leftJoinAndMapOne('iccidCarrier.serviceProvider', ServiceProvider, 'serviceProvider', 'iccidCarrier.carrier = serviceProvider.id');
39
+ }
40
+ if (params.projectionOptions.withClientDeviceSettings) {
41
+ queryBuilder = queryBuilder.leftJoinAndMapOne('device.clientDeviceSetting', ClientDeviceSetting, 'clientDeviceSetting', 'device.imei = clientDeviceSetting.imei and device.clientId = clientDeviceSetting.clientId');
42
+ }
43
+ const devices = await queryBuilder.getMany();
44
+ return devices;
45
+ }, 'DevicesRepository::getDevices');
46
+ };