@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.
- package/dist/entities/acumaticaAmazonProduct.js +46 -0
- package/dist/entities/acumaticaImeiIccidData.js +91 -0
- package/dist/entities/acumaticaOrderShipmentDetails.js +61 -0
- package/dist/entities/acumaticaShipment.js +31 -0
- package/dist/entities/acumaticaShipmentAmazon.js +26 -0
- package/dist/entities/aempToken.js +47 -0
- package/dist/entities/alert.js +129 -0
- package/dist/entities/alertMigration.js +115 -0
- package/dist/entities/alertMigrationBatch.js +21 -0
- package/dist/entities/alertTimeWindowConfiguration.js +61 -0
- package/dist/entities/alertType.js +83 -0
- package/dist/entities/appFeatureType.js +36 -0
- package/dist/entities/assetCategory.js +32 -0
- package/dist/entities/billing.js +108 -0
- package/dist/entities/billingCustomerBraintree.js +62 -0
- package/dist/entities/billingDeviceHistory.js +61 -0
- package/dist/entities/billingHubspotPaymentLog.js +256 -0
- package/dist/entities/billingKlarnaCustomer.js +76 -0
- package/dist/entities/billingKlarnaOrder.js +114 -0
- package/dist/entities/billingStatusHistoryBraintree.js +63 -0
- package/dist/entities/billingSubscriptionBraintree.js +229 -0
- package/dist/entities/blacklist.js +51 -0
- package/dist/entities/blacklistType.js +31 -0
- package/dist/entities/boundary.js +119 -0
- package/dist/entities/boundaryEvent.js +105 -0
- package/dist/entities/cellTower.js +66 -0
- package/dist/entities/client.js +153 -0
- package/dist/entities/clientAppFeature.js +47 -0
- package/dist/entities/clientConfiguration.js +47 -0
- package/dist/entities/clientDeviceSetting.js +90 -0
- package/dist/entities/clientType.js +36 -0
- package/dist/entities/country.js +90 -0
- package/dist/entities/customerAttribute.js +52 -0
- package/dist/entities/dataSourceType.js +31 -0
- package/dist/entities/deactivation.js +83 -0
- package/dist/entities/deactivationReason.js +40 -0
- package/dist/entities/device.js +160 -0
- package/dist/entities/deviceAlertConfiguration.js +71 -0
- package/dist/entities/deviceBehavior.js +147 -0
- package/dist/entities/deviceCustomConfiguration.js +67 -0
- package/dist/entities/deviceHistory.js +46 -0
- package/dist/entities/deviceModelListener.js +46 -0
- package/dist/entities/devicePairing.js +67 -0
- package/dist/entities/devicePromotion.js +104 -0
- package/dist/entities/deviceReplacement.js +57 -0
- package/dist/entities/deviceTask.js +44 -0
- package/dist/entities/deviceType.js +149 -0
- package/dist/entities/deviceTypeEvent.js +32 -0
- package/dist/entities/deviceTypeFeature.js +32 -0
- package/dist/entities/deviceTypeFirmware.js +117 -0
- package/dist/entities/entityTag.js +48 -0
- package/dist/entities/entityType.js +31 -0
- package/dist/entities/event.js +36 -0
- package/dist/entities/feature.js +36 -0
- package/dist/entities/firmwareAutoUpgradeBlacklist.js +35 -0
- package/dist/entities/firmwareUpgradeTask.js +105 -0
- package/dist/entities/iccidStatus.js +49 -0
- package/dist/entities/imeiIccidCarrier.js +125 -0
- package/dist/entities/imeiIccidHistory.js +43 -0
- package/dist/entities/index.js +99 -0
- package/dist/entities/industry.js +46 -0
- package/dist/entities/latestPosition.js +100 -0
- package/dist/entities/latestPositionMigration.js +96 -0
- package/dist/entities/latestPositionMigrationBatch.js +21 -0
- package/dist/entities/magento2Gps.js +256 -0
- package/dist/entities/magento2Plan.js +41 -0
- package/dist/entities/mobileNetwork.js +51 -0
- package/dist/entities/notificationRecipient.js +100 -0
- package/dist/entities/organization.js +46 -0
- package/dist/entities/plan.js +86 -0
- package/dist/entities/position.js +102 -0
- package/dist/entities/positionMigration.js +96 -0
- package/dist/entities/positionMigrationBatch.js +21 -0
- package/dist/entities/promotion.js +134 -0
- package/dist/entities/securityRole.js +41 -0
- package/dist/entities/serviceProvider.js +41 -0
- package/dist/entities/serviceProviderProduct.js +61 -0
- package/dist/entities/serviceProviderProductNetwork.js +31 -0
- package/dist/entities/serviceProviderProductType.js +31 -0
- package/dist/entities/sim.js +92 -0
- package/dist/entities/task.js +146 -0
- package/dist/entities/taskSchedule.js +141 -0
- package/dist/entities/trip.js +127 -0
- package/dist/entities/tripCompletionStatus.js +36 -0
- package/dist/entities/tripPosition.js +26 -0
- package/dist/entities/user.js +196 -0
- package/dist/entities/userActivation.js +52 -0
- package/dist/entities/userActivationDevice.js +164 -0
- package/dist/entities/userActivationEvent.js +61 -0
- package/dist/entities/userActivationMetric.js +208 -0
- package/dist/entities/userAlertComplain.js +78 -0
- package/dist/entities/userAlertConfiguration.js +109 -0
- package/dist/entities/userAppFeedback.js +52 -0
- package/dist/entities/userAppIncident.js +176 -0
- package/dist/entities/userConfiguration.js +109 -0
- package/dist/entities/userDataDeletionRequest.js +56 -0
- package/dist/entities/userDeviceBehaviorTask.js +80 -0
- package/dist/entities/userInvitation.js +89 -0
- package/dist/entities/userRatingRequest.js +75 -0
- package/dist/entities/userRegistrationAttempt.js +177 -0
- package/dist/entities/userSecurityRole.js +33 -0
- package/dist/index.js +1 -2
- package/dist/migration/1684483704434-addLowerCaseIndex.js +16 -0
- package/dist/novaDataSource.js +111 -0
- package/dist/repositories/acumatica/getAcumaticaImeiIccidData.js +35 -0
- package/dist/repositories/acumatica/getAcumaticaShipmentDetails.js +50 -0
- package/dist/repositories/acumatica/getLastAcumaticaShipmentDetails.js +27 -0
- package/dist/repositories/acumatica/index.js +52 -0
- package/dist/repositories/aempToken/createAempToken.js +26 -0
- package/dist/repositories/aempToken/deleteAempTokens.js +30 -0
- package/dist/repositories/aempToken/getAempTokens.js +27 -0
- package/dist/repositories/aempToken/index.js +53 -0
- package/dist/repositories/alertTypes/getAlertTypes.js +13 -0
- package/dist/repositories/alertTypes/index.js +18 -0
- package/dist/repositories/alerts/createAlert.js +94 -0
- package/dist/repositories/alerts/createUserAlertComplain.js +26 -0
- package/dist/repositories/alerts/getAlertsReportByClient.js +65 -0
- package/dist/repositories/alerts/getAlertsReportByUser.js +127 -0
- package/dist/repositories/alerts/index.js +104 -0
- package/dist/repositories/appFeatures/createAppFeatureType.js +15 -0
- package/dist/repositories/appFeatures/createClientAppFeature.js +15 -0
- package/dist/repositories/appFeatures/getClientAppFeatures.js +39 -0
- package/dist/repositories/appFeatures/index.js +57 -0
- package/dist/repositories/assetCategories/getAssetCategories.js +8 -0
- package/dist/repositories/assetCategories/index.js +16 -0
- package/dist/repositories/baseRepository.js +9 -0
- package/dist/repositories/billing/createBilling.js +37 -0
- package/dist/repositories/billing/createBillingDeviceHistory.js +30 -0
- package/dist/repositories/billing/createBillingHubspotPaymentLog.js +61 -0
- package/dist/repositories/billing/createBillingStatusHistoryBraintree.js +32 -0
- package/dist/repositories/billing/getBillingCustomerBraintreeById.js +18 -0
- package/dist/repositories/billing/getBillingKlarnaOrderByImei.js +18 -0
- package/dist/repositories/billing/getBillingSubscriptionBraintreeByImei.js +18 -0
- package/dist/repositories/billing/getBillingSubscriptionsBraintree.js +25 -0
- package/dist/repositories/billing/getBillings.js +42 -0
- package/dist/repositories/billing/getCanceledImeis.js +84 -0
- package/dist/repositories/billing/getCanceledImeisMatchingMagentoData.js +100 -0
- package/dist/repositories/billing/getChurnStatusByClientId.js +27 -0
- package/dist/repositories/billing/getClientIdFromBraintreeCustomer.js +20 -0
- package/dist/repositories/billing/getMagentoPlan.js +21 -0
- package/dist/repositories/billing/getUserByBraintreeCustomerId.js +22 -0
- package/dist/repositories/billing/index.js +353 -0
- package/dist/repositories/billing/updateBilling.js +43 -0
- package/dist/repositories/billing/updateBillingCustomerBraintree.js +37 -0
- package/dist/repositories/billing/upsertBillingCustomerBraintree.js +39 -0
- package/dist/repositories/billing/upsertBillingKlarnaCustomer.js +52 -0
- package/dist/repositories/billing/upsertBillingKlarnaOrder.js +58 -0
- package/dist/repositories/billing/upsertBillingSubscriptionBraintree.js +20 -0
- package/dist/repositories/blacklist/getBlacklists.js +19 -0
- package/dist/repositories/blacklist/index.js +19 -0
- package/dist/repositories/boundaries/createBoundary.js +52 -0
- package/dist/repositories/boundaries/deleteBoundary.js +23 -0
- package/dist/repositories/boundaries/getBoundariesByClientId.js +17 -0
- package/dist/repositories/boundaries/getBoundariesIdsByClientId.js +19 -0
- package/dist/repositories/boundaries/getBoundariesReport.js +141 -0
- package/dist/repositories/boundaries/getBoundaryById.js +14 -0
- package/dist/repositories/boundaries/index.js +178 -0
- package/dist/repositories/boundaries/processBoundaryEvent.js +211 -0
- package/dist/repositories/boundaries/updateBoundary.js +53 -0
- package/dist/repositories/boundaries/upsertBoundaryEvent.js +23 -0
- package/dist/repositories/clients/createClient.js +35 -0
- package/dist/repositories/clients/createClientConfiguration.js +18 -0
- package/dist/repositories/clients/createCustomerAttribute.js +16 -0
- package/dist/repositories/clients/deleteClientAndConfiguration.js +25 -0
- package/dist/repositories/clients/getClient.js +32 -0
- package/dist/repositories/clients/getClientConfiguration.js +14 -0
- package/dist/repositories/clients/getClients.js +26 -0
- package/dist/repositories/clients/getCustomerAttribute.js +14 -0
- package/dist/repositories/clients/index.js +192 -0
- package/dist/repositories/clients/updateClient.js +52 -0
- package/dist/repositories/clients/updateClientConfiguration.js +31 -0
- package/dist/repositories/clients/updateCustomerAttribute.js +27 -0
- package/dist/repositories/countries/getCountries.js +14 -0
- package/dist/repositories/countries/getCountry.js +23 -0
- package/dist/repositories/countries/index.js +33 -0
- package/dist/repositories/deactivations/createDeactivation.js +16 -0
- package/dist/repositories/deactivations/getDeactivationReasons.js +24 -0
- package/dist/repositories/deactivations/getLatestDeactivationByImei.js +19 -0
- package/dist/repositories/deactivations/index.js +58 -0
- package/dist/repositories/deviceBehaviors/createDeviceBehaviorTask.js +48 -0
- package/dist/repositories/deviceBehaviors/getDeviceBehaviorTasks.js +40 -0
- package/dist/repositories/deviceBehaviors/getDeviceBehaviors.js +41 -0
- package/dist/repositories/deviceBehaviors/getDeviceBehaviorsByIds.js +16 -0
- package/dist/repositories/deviceBehaviors/getDevicesLastBehaviorTask.js +42 -0
- package/dist/repositories/deviceBehaviors/getLatestDeviceBehaviorTasks.js +40 -0
- package/dist/repositories/deviceBehaviors/index.js +147 -0
- package/dist/repositories/deviceBehaviors/updateDeviceBehaviorTask.js +27 -0
- package/dist/repositories/deviceBehaviors/upsertDeviceBehavior.js +20 -0
- package/dist/repositories/devicePairings/createDevicePairing.js +21 -0
- package/dist/repositories/devicePairings/deleteDevicePairing.js +16 -0
- package/dist/repositories/devicePairings/getDevicePairings.js +36 -0
- package/dist/repositories/devicePairings/getDevicePairingsByImei.js +20 -0
- package/dist/repositories/devicePairings/index.js +90 -0
- package/dist/repositories/devicePairings/updateDevicePairing.js +32 -0
- package/dist/repositories/devices/createClientDeviceSetting.js +25 -0
- package/dist/repositories/devices/createDevice.js +30 -0
- package/dist/repositories/devices/createDeviceReplacement.js +34 -0
- package/dist/repositories/devices/createDeviceType.js +15 -0
- package/dist/repositories/devices/deleteDevice.js +16 -0
- package/dist/repositories/devices/generateDeviceIdentifierKey.js +18 -0
- package/dist/repositories/devices/getCanceledDevicesWithActiveSimCards.js +40 -0
- package/dist/repositories/devices/getCarrierStatusUpdatedBefore.js +40 -0
- package/dist/repositories/devices/getClientDeviceSetting.js +20 -0
- package/dist/repositories/devices/getClientDeviceSettings.js +17 -0
- package/dist/repositories/devices/getDevice.js +33 -0
- package/dist/repositories/devices/getDeviceCustomConfig.js +37 -0
- package/dist/repositories/devices/getDeviceTypeByImei.js +18 -0
- package/dist/repositories/devices/getDeviceTypes.js +30 -0
- package/dist/repositories/devices/getDeviceTypesModelsOrderedByDeviceCount.js +27 -0
- package/dist/repositories/devices/getDeviceWithUsersInfo.js +59 -0
- package/dist/repositories/devices/getDevices.js +46 -0
- package/dist/repositories/devices/getFilteredImeisWithStatus.js +20 -0
- package/dist/repositories/devices/getIccidStatus.js +17 -0
- package/dist/repositories/devices/getImeiIccidCarrier.js +23 -0
- package/dist/repositories/devices/getImeiIccidCarriers.js +17 -0
- package/dist/repositories/devices/index.js +464 -0
- package/dist/repositories/devices/updateClientDeviceSetting.js +38 -0
- package/dist/repositories/devices/updateDevice.js +56 -0
- package/dist/repositories/devices/updateDeviceType.js +43 -0
- package/dist/repositories/devices/updateIccidStatus.js +28 -0
- package/dist/repositories/devices/updateImeiIccidCarrier.js +43 -0
- package/dist/repositories/devices/upsertIccidStatus.js +36 -0
- package/dist/repositories/firmwares/createDeviceFirmware.js +37 -0
- package/dist/repositories/firmwares/createFirmwareAutoUpgradeBlacklist.js +16 -0
- package/dist/repositories/firmwares/createFirmwareUpgradeTask.js +36 -0
- package/dist/repositories/firmwares/getDeviceFirmwares.js +21 -0
- package/dist/repositories/firmwares/getFirmwareAutoUpgradeBlacklist.js +23 -0
- package/dist/repositories/firmwares/getFirmwareUpgradeTasks.js +105 -0
- package/dist/repositories/firmwares/getFirmwareUpgradeTasksCount.js +56 -0
- package/dist/repositories/firmwares/index.js +194 -0
- package/dist/repositories/firmwares/updateDeviceFirmware.js +41 -0
- package/dist/repositories/firmwares/updateFirmwareUpgradeTasks.js +37 -0
- package/dist/repositories/index.js +31 -0
- package/dist/repositories/notificationRecipients/createNotificationRecipient.js +37 -0
- package/dist/repositories/notificationRecipients/deleteNotificationRecipients.js +26 -0
- package/dist/repositories/notificationRecipients/deleteNotificationRecipientsByEmailOrPhone.js +28 -0
- package/dist/repositories/notificationRecipients/getNotificationRecipients.js +16 -0
- package/dist/repositories/notificationRecipients/index.js +131 -0
- package/dist/repositories/notificationRecipients/updateNotificationRecipient.js +37 -0
- package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsubscribedInfoStatus.js +98 -0
- package/dist/repositories/notificationRecipients/updateUsersNotificationsUnsuscribedStatus.js +35 -0
- package/dist/repositories/positions/createPosition.js +100 -0
- package/dist/repositories/positions/getLatestPositionByImei.js +26 -0
- package/dist/repositories/positions/getPositionsByImei.js +23 -0
- package/dist/repositories/positions/getPositionsReportByClient.js +87 -0
- package/dist/repositories/positions/index.js +101 -0
- package/dist/repositories/positions/upsertLatestPosition.js +41 -0
- package/dist/repositories/security/createUserRole.js +30 -0
- package/dist/repositories/security/getAllRoles.js +8 -0
- package/dist/repositories/security/getUserRoles.js +15 -0
- package/dist/repositories/security/getUserRolesByClientId.js +17 -0
- package/dist/repositories/security/index.js +111 -0
- package/dist/repositories/security/removeUserRoles.js +21 -0
- package/dist/repositories/security/updateUserRole.js +27 -0
- package/dist/repositories/security/userIsAdminOrOwner.js +20 -0
- package/dist/repositories/security/userIsInRole.js +18 -0
- package/dist/repositories/tasks/addTaskScheduleDevices.js +37 -0
- package/dist/repositories/tasks/completeTask.js +25 -0
- package/dist/repositories/tasks/createTask.js +22 -0
- package/dist/repositories/tasks/createTaskSchedule.js +33 -0
- package/dist/repositories/tasks/deleteTask.js +22 -0
- package/dist/repositories/tasks/deleteTaskSchedule.js +22 -0
- package/dist/repositories/tasks/deleteTaskScheduleDevices.js +17 -0
- package/dist/repositories/tasks/getDeviceTasks.js +28 -0
- package/dist/repositories/tasks/getTaskSchedule.js +31 -0
- package/dist/repositories/tasks/getTaskSchedules.js +75 -0
- package/dist/repositories/tasks/getTaskSchedulesCount.js +23 -0
- package/dist/repositories/tasks/getTasks.js +29 -0
- package/dist/repositories/tasks/getTasksCount.js +20 -0
- package/dist/repositories/tasks/index.js +441 -0
- package/dist/repositories/tasks/setTaskAsPastDue.js +23 -0
- package/dist/repositories/tasks/setTaskScheduleDevices.js +43 -0
- package/dist/repositories/tasks/updateTask.js +21 -0
- package/dist/repositories/tasks/updateTaskSchedule.js +35 -0
- package/dist/repositories/trips/createTrip.js +29 -0
- package/dist/repositories/trips/getTripById.js +15 -0
- package/dist/repositories/trips/getTrips.js +65 -0
- package/dist/repositories/trips/index.js +69 -0
- package/dist/repositories/trips/updateTripEndValues.js +36 -0
- package/dist/repositories/trips/upsertTrip.js +31 -0
- package/dist/repositories/userActivations/createUserActivation.js +26 -0
- package/dist/repositories/userActivations/createUserActivationDevice.js +35 -0
- package/dist/repositories/userActivations/createUserActivationEvent.js +34 -0
- package/dist/repositories/userActivations/createUserActivationMetric.js +28 -0
- package/dist/repositories/userActivations/deleteUserActivation.js +22 -0
- package/dist/repositories/userActivations/getLastActivationDevice.js +26 -0
- package/dist/repositories/userActivations/getUserActivationDevices.js +24 -0
- package/dist/repositories/userActivations/getUserActivationDevicesByClientId.js +26 -0
- package/dist/repositories/userActivations/getUserActivationMetrics.js +24 -0
- package/dist/repositories/userActivations/getUserActivations.js +29 -0
- package/dist/repositories/userActivations/index.js +229 -0
- package/dist/repositories/userActivations/updateUserActivationDevice.js +39 -0
- package/dist/repositories/userActivations/updateUserActivationMetrics.js +61 -0
- package/dist/repositories/userAppFeedback/createUserAppFeedback.js +26 -0
- package/dist/repositories/userAppFeedback/index.js +23 -0
- package/dist/repositories/userAppIncidents/getUserAppIncidents.js +28 -0
- package/dist/repositories/userAppIncidents/index.js +63 -0
- package/dist/repositories/userAppIncidents/upsertUserAppIncident.js +53 -0
- package/dist/repositories/userConfigurations/bulkCreateUserAlertConfigurations.js +46 -0
- package/dist/repositories/userConfigurations/createDeviceAlertTimeWindows.js +36 -0
- package/dist/repositories/userConfigurations/createUserAlertTimeWindows.js +33 -0
- package/dist/repositories/userConfigurations/createUserConfiguration.js +34 -0
- package/dist/repositories/userConfigurations/deleteDeviceAlertTimeWindows.js +17 -0
- package/dist/repositories/userConfigurations/deleteUserAlertConfigurations.js +24 -0
- package/dist/repositories/userConfigurations/deleteUserAlertTimeWindows.js +17 -0
- package/dist/repositories/userConfigurations/deleteUserConfiguration.js +23 -0
- package/dist/repositories/userConfigurations/getDeviceAlertTimeWindows.js +43 -0
- package/dist/repositories/userConfigurations/getUserAlertConfigurations.js +25 -0
- package/dist/repositories/userConfigurations/getUserAlertTimeWindows.js +35 -0
- package/dist/repositories/userConfigurations/getUserConfigurations.js +31 -0
- package/dist/repositories/userConfigurations/index.js +298 -0
- package/dist/repositories/userConfigurations/updateDeviceAlertTimeWindows.js +29 -0
- package/dist/repositories/userConfigurations/updateUserAlertConfigurations.js +46 -0
- package/dist/repositories/userConfigurations/updateUserAlertTimeWindows.js +28 -0
- package/dist/repositories/userConfigurations/updateUserConfiguration.js +49 -0
- package/dist/repositories/userDataDeletionRequests/createUserDataDeletionRequest.js +28 -0
- package/dist/repositories/userDataDeletionRequests/getUserDataDeletionRequest.js +29 -0
- package/dist/repositories/userDataDeletionRequests/index.js +66 -0
- package/dist/repositories/userDataDeletionRequests/removeUserDataDeletionRequest.js +17 -0
- package/dist/repositories/userDataDeletionRequests/updateUserDataDeletionRequest.js +38 -0
- package/dist/repositories/userInvitations/createUserInvitation.js +43 -0
- package/dist/repositories/userInvitations/getUserInvitationById.js +22 -0
- package/dist/repositories/userInvitations/getUserInvitations.js +31 -0
- package/dist/repositories/userInvitations/index.js +82 -0
- package/dist/repositories/userInvitations/updateUserInvitation.js +50 -0
- package/dist/repositories/userRatingRequests/createUserRatingRequest.js +34 -0
- package/dist/repositories/userRatingRequests/getUserRatingRequests.js +23 -0
- package/dist/repositories/userRatingRequests/index.js +41 -0
- package/dist/repositories/userRegistrationAttempts/createUserRegistrationAttempt.js +40 -0
- package/dist/repositories/userRegistrationAttempts/getUserRegistrationAttempts.js +29 -0
- package/dist/repositories/userRegistrationAttempts/index.js +70 -0
- package/dist/repositories/userRegistrationAttempts/updateUserRegistrationAttempt.js +40 -0
- package/dist/repositories/users/createUser.js +47 -0
- package/dist/repositories/users/deleteAccount.js +98 -0
- package/dist/repositories/users/deleteUser.js +22 -0
- package/dist/repositories/users/getUserById.js +22 -0
- package/dist/repositories/users/getUserData.js +66 -0
- package/dist/repositories/users/getUsers.js +49 -0
- package/dist/repositories/users/getUsersConfigurationByImei.js +29 -0
- package/dist/repositories/users/getUsersIdByPhoneAndCountryCode.js +21 -0
- package/dist/repositories/users/getUsersWithRoles.js +32 -0
- package/dist/repositories/users/index.js +195 -0
- package/dist/repositories/users/updateUser.js +109 -0
- package/dist/subscribers/allEntitiesSubscriber.js +52 -0
- package/dist/subscribers/index.js +2 -0
- package/dist/types/acumatica.js +1 -0
- package/dist/types/aempToken.js +1 -0
- package/dist/types/alert.js +1 -0
- package/dist/types/alertTypes.js +1 -0
- package/dist/types/appFeatures.js +1 -0
- package/dist/types/billing.js +1 -0
- package/dist/types/blacklist.js +1 -0
- package/dist/types/boundaries.js +1 -0
- package/dist/types/clients.js +1 -0
- package/dist/types/common.js +1 -0
- package/dist/types/countries.js +1 -0
- package/dist/types/deactivations.js +1 -0
- package/dist/types/deviceBehaviors.js +1 -0
- package/dist/types/devicePairings.js +1 -0
- package/dist/types/devices.js +1 -0
- package/dist/types/enums.js +74 -0
- package/dist/types/firmwares.js +17 -0
- package/dist/types/index.js +30 -0
- package/dist/types/logger.js +9 -0
- package/dist/types/notificationRecipients.js +1 -0
- package/dist/types/position.js +1 -0
- package/dist/types/security.js +1 -0
- package/dist/types/tasks.js +1 -0
- package/dist/types/trip.js +29 -0
- package/dist/types/user.js +1 -0
- package/dist/types/userActivations.js +1 -0
- package/dist/types/userAppFeedback.js +1 -0
- package/dist/types/userAppIncidents.js +1 -0
- package/dist/types/userConfigurations.js +1 -0
- package/dist/types/userDataDeletionRequests.js +1 -0
- package/dist/types/userInvitations.js +1 -0
- package/dist/types/userRatingRequests.js +1 -0
- package/dist/types/userRegistrationAttempts.js +1 -0
- package/dist/utils/anyAttributeHasValue.js +20 -0
- package/dist/utils/anyAttributeIsNull.js +12 -0
- package/dist/utils/boolToNumberTransformer.js +23 -0
- package/dist/utils/consoleLogger.js +42 -0
- package/dist/utils/filterTools.js +299 -0
- package/dist/utils/mapRawEntityToEntity.js +12 -0
- package/dist/utils/queryLogger.js +48 -0
- package/dist/utils/randomizer.js +39 -0
- package/dist/utils/stringToDateTransformer.js +16 -0
- package/dist/utils/uuidHelpers.js +30 -0
- package/package.json +10 -8
- 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
|
+
};
|