@resolveio/server-lib 22.2.8 → 22.2.10
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/customer-notifications.ts"],"names":[],"mappings":"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","file":"customer-notifications.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { CustomerNotifications } from '../collections/customer-notification.collection';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst DEFAULT_LIST_LIMIT = 100;\nconst MAX_LIST_LIMIT = 500;\nconst DEDUPE_WINDOW_MS = 30 * 60 * 1000;\nconst MAX_TARGET_USERS = 5000;\n\ntype CreateCustomerNotificationPayload = {\n\ttitle: string;\n\tmessage: string;\n\tdetails?: string;\n\tcategory?: string;\n\tseverity?: string;\n\ttarget_type?: 'client' | 'users' | 'all_active' | 'client_admins' | 'client_internal';\n\tid_client?: string;\n\tclient_name?: string;\n\tid_users?: string[];\n\tsource?: string;\n\tsource_id?: string;\n\taction_label?: string;\n\taction_route?: string;\n\tdedupe_key?: string;\n\texpires_at?: Date;\n\tmetadata?: Record<string, any>;\n};\n\ntype ListCustomerNotificationsPayload = {\n\tid_user?: string;\n\tid_client?: string;\n\tstatus?: 'unread' | 'read';\n\tlimit?: number;\n};\n\nfunction normalizeString(value: any, maxLength = 500): string {\n\tconst normalized = String(value || '').trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\treturn normalized.slice(0, maxLength);\n}\n\nfunction normalizeNotificationCategory(value?: string): string {\n\tconst normalized = normalizeString(value, 40).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'system';\n\t}\n\tif (['autofix', 'slow-query', 'system', 'manual'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'system';\n}\n\nfunction normalizeNotificationSeverity(value?: string): string {\n\tconst normalized = normalizeString(value, 20).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'info';\n\t}\n\tif (['info', 'success', 'warning', 'error'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'info';\n}\n\nfunction normalizeListLimit(value?: number): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn DEFAULT_LIST_LIMIT;\n\t}\n\treturn Math.min(Math.floor(parsed), MAX_LIST_LIMIT);\n}\n\nfunction isSystemMethodUser(methodUser: any): boolean {\n\treturn !methodUser || methodUser === 'Internal System';\n}\n\nasync function resolveMethodUser(methodUser: any, methodUserId?: any): Promise<any | null> {\n\tif (isSystemMethodUser(methodUser)) {\n\t\treturn null;\n\t}\n\n\tif (typeof methodUser === 'object' && methodUser?._id && methodUser?.roles) {\n\t\treturn methodUser;\n\t}\n\n\tconst idUser = normalizeString(\n\t\ttypeof methodUserId === 'string'\n\t\t\t? methodUserId\n\t\t\t: (\n\t\t\t\tmethodUserId?._id ||\n\t\t\t\tmethodUserId?.id_user ||\n\t\t\t\t(typeof methodUser === 'string'\n\t\t\t\t\t? methodUser\n\t\t\t\t\t: (methodUser?._id || methodUser?.id_user || ''))\n\t\t\t),\n\t\t80\n\t);\n\tif (!idUser) {\n\t\treturn null;\n\t}\n\treturn await Users.findById(idUser);\n}\n\nfunction isSuperAdmin(user: any): boolean {\n\treturn !!user?.roles?.super_admin;\n}\n\nfunction uniqueUserIds(input: string[]): string[] {\n\tconst unique = new Set<string>();\n\tfor (const entry of (Array.isArray(input) ? input : [])) {\n\t\tconst id = normalizeString(entry, 80);\n\t\tif (id) {\n\t\t\tunique.add(id);\n\t\t}\n\t\tif (unique.size >= MAX_TARGET_USERS) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nfunction buildClientMembershipCriteria(idClient: string): Record<string, any> {\n\treturn {\n\t\t$or: [\n\t\t\t{'other.id_client': idClient},\n\t\t\t{'other.idClient': idClient},\n\t\t\t{id_client: idClient}\n\t\t]\n\t};\n}\n\nfunction buildInternalUserCriteria(): Record<string, any> {\n\treturn {\n\t\t$and: [\n\t\t\t{\n\t\t\t\tis_customer: {\n\t\t\t\t\t$ne: true\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$nor: [\n\t\t\t\t\t{\n\t\t\t\t\t\t'other.id_customer': {\n\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid_customer: {\n\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n}\n\nfunction buildAdminUserCriteria(): Record<string, any> {\n\treturn {\n\t\t$or: [\n\t\t\t{\n\t\t\t\t'roles.super_admin': true\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.name': {\n\t\t\t\t\t$regex: 'admin',\n\t\t\t\t\t$options: 'i'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.views': {\n\t\t\t\t\t$regex: '^/manage'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.views': '/manage'\n\t\t\t}\n\t\t]\n\t};\n}\n\nasync function resolveTargetUsers(payload: CreateCustomerNotificationPayload): Promise<string[]> {\n\tconst targetType = normalizeString(payload?.target_type || 'client', 20).toLowerCase() || 'client';\n\tif (targetType === 'users') {\n\t\treturn uniqueUserIds(payload?.id_users || []);\n\t}\n\n\tif (targetType === 'all_active') {\n\t\tconst users = await Users.find({\n\t\t\tactive: true,\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t},\n\t\t\tlimit: MAX_TARGET_USERS\n\t\t});\n\t\treturn uniqueUserIds(users.map((user: any) => user?._id));\n\t}\n\n\tconst idClient = normalizeString(payload?.id_client, 80);\n\tif (!idClient) {\n\t\treturn [];\n\t}\n\n\tconst andClauses: Record<string, any>[] = [\n\t\t{\n\t\t\tactive: true\n\t\t},\n\t\t{\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t},\n\t\tbuildClientMembershipCriteria(idClient)\n\t];\n\n\tif (targetType === 'client_internal' || targetType === 'client_admins') {\n\t\tandClauses.push(buildInternalUserCriteria());\n\t}\n\n\tif (targetType === 'client_admins') {\n\t\tandClauses.push(buildAdminUserCriteria());\n\t}\n\n\tconst users = await Users.find({\n\t\t$and: andClauses\n\t}, {\n\t\tprojection: {\n\t\t\t_id: 1\n\t\t},\n\t\tlimit: MAX_TARGET_USERS\n\t});\n\n\treturn uniqueUserIds(users.map((user: any) => user?._id));\n}\n\nexport function loadCustomerNotificationMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcreateCustomerNotification: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload: CreateCustomerNotificationPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can create notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst title = normalizeString(payload?.title, 160);\n\t\t\t\tconst message = normalizeString(payload?.message, 1500);\n\t\t\t\tif (!title || !message) {\n\t\t\t\t\tthrow new Error('Notification title and message are required.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst clientName = normalizeString(payload?.client_name, 200);\n\t\t\t\tconst category = normalizeNotificationCategory(payload?.category);\n\t\t\t\tconst severity = normalizeNotificationSeverity(payload?.severity);\n\t\t\t\tconst details = normalizeString(payload?.details, 6000);\n\t\t\t\tconst source = normalizeString(payload?.source, 120);\n\t\t\t\tconst sourceId = normalizeString(payload?.source_id, 120);\n\t\t\t\tconst actionLabel = normalizeString(payload?.action_label, 80);\n\t\t\t\tconst actionRoute = normalizeString(payload?.action_route, 500);\n\t\t\t\tconst dedupeKey = normalizeString(payload?.dedupe_key, 160);\n\t\t\t\tconst expiresAt = payload?.expires_at instanceof Date && !Number.isNaN(payload.expires_at.getTime())\n\t\t\t\t\t? payload.expires_at\n\t\t\t\t\t: undefined;\n\t\t\t\tconst metadata = payload?.metadata && typeof payload.metadata === 'object'\n\t\t\t\t\t? payload.metadata\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst targetUsers = await resolveTargetUsers(payload);\n\t\t\t\tif (!targetUsers.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'no_target_users'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst createById = systemUser ? 'Internal System' : normalizeString(methodUser?._id, 80);\n\t\t\t\tconst createByName = systemUser\n\t\t\t\t\t? 'Internal System'\n\t\t\t\t\t: normalizeString(methodUser?.fullname || methodUser?.username, 200);\n\n\t\t\t\tlet skippedByDedupe = new Set<string>();\n\t\t\t\tif (dedupeKey) {\n\t\t\t\t\tconst cutoff = new Date(now.getTime() - DEDUPE_WINDOW_MS);\n\t\t\t\t\tconst existing = await CustomerNotifications.find({\n\t\t\t\t\t\tid_user: {\n\t\t\t\t\t\t\t$in: targetUsers\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdedupe_key: dedupeKey,\n\t\t\t\t\t\tcreatedAt: {\n\t\t\t\t\t\t\t$gte: cutoff\n\t\t\t\t\t\t}\n\t\t\t\t\t}, {\n\t\t\t\t\t\tprojection: {\n\t\t\t\t\t\t\tid_user: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlimit: MAX_TARGET_USERS\n\t\t\t\t\t});\n\t\t\t\t\tskippedByDedupe = new Set(existing.map(entry => normalizeString(entry?.id_user, 80)).filter(Boolean));\n\t\t\t\t}\n\n\t\t\t\tconst docs = targetUsers\n\t\t\t\t\t.filter(idUser => !skippedByDedupe.has(idUser))\n\t\t\t\t\t.map((idUser) => ({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tid_user: idUser,\n\t\t\t\t\t\tid_client: idClient || undefined,\n\t\t\t\t\t\tclient_name: clientName || undefined,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tdetails: details || undefined,\n\t\t\t\t\t\tcategory,\n\t\t\t\t\t\tseverity,\n\t\t\t\t\t\tstatus: 'unread',\n\t\t\t\t\t\tread_at: undefined,\n\t\t\t\t\t\tread_by: '',\n\t\t\t\t\t\tsource: source || undefined,\n\t\t\t\t\t\tsource_id: sourceId || undefined,\n\t\t\t\t\t\taction_label: actionLabel || undefined,\n\t\t\t\t\t\taction_route: actionRoute || undefined,\n\t\t\t\t\t\tdedupe_key: dedupeKey || undefined,\n\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\texpires_at: expiresAt,\n\t\t\t\t\t\tcreated_by: createById || undefined,\n\t\t\t\t\t\tcreated_by_name: createByName || undefined,\n\t\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\t\tupdatedAt: now\n\t\t\t\t\t}));\n\n\t\t\t\tif (!docs.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'dedupe_suppressed'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.insertMany(docs as any[]);\n\n\t\t\t\treturn {\n\t\t\t\t\tcreated: docs.length,\n\t\t\t\t\ttargeted: targetUsers.length\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmarkUserNotificationRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_notification: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_notification: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateOne({\n\t\t\t\t\t_id: id_notification,\n\t\t\t\t\tid_user: idUser\n\t\t\t\t}, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tmarkAllUserNotificationsRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_client: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_client?: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(id_client, 80);\n\t\t\t\tconst query: Record<string, any> = {\n\t\t\t\t\tid_user: idUser,\n\t\t\t\t\tstatus: 'unread'\n\t\t\t\t};\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateMany(query, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tlistCustomerNotifications: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload?: ListCustomerNotificationsPayload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can list all notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst query: Record<string, any> = {};\n\t\t\t\tconst idUser = normalizeString(payload?.id_user, 80);\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst status = normalizeString(payload?.status, 20).toLowerCase();\n\t\t\t\tif (idUser) {\n\t\t\t\t\tquery.id_user = idUser;\n\t\t\t\t}\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\t\t\t\tif (status === 'unread' || status === 'read') {\n\t\t\t\t\tquery.status = status;\n\t\t\t\t}\n\n\t\t\t\tconst limit = normalizeListLimit(payload?.limit);\n\t\t\t\treturn await CustomerNotifications.find(query, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t},\n\t\t\t\t\tlimit\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/customer-notifications.ts"],"names":[],"mappings":"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","file":"customer-notifications.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { CustomerNotifications } from '../collections/customer-notification.collection';\nimport { Users } from '../collections/user.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { objectIdHexString } from '../util/common';\n\nconst DEFAULT_LIST_LIMIT = 100;\nconst MAX_LIST_LIMIT = 500;\nconst DEDUPE_WINDOW_MS = 30 * 60 * 1000;\nconst MAX_TARGET_USERS = 5000;\n\ntype CreateCustomerNotificationPayload = {\n\ttitle: string;\n\tmessage: string;\n\tdetails?: string;\n\tcategory?: string;\n\tseverity?: string;\n\ttarget_type?: 'client' | 'users' | 'all_active' | 'client_admins' | 'client_internal';\n\tid_client?: string;\n\tclient_name?: string;\n\tid_users?: string[];\n\tsource?: string;\n\tsource_id?: string;\n\taction_label?: string;\n\taction_route?: string;\n\tdedupe_key?: string;\n\texpires_at?: Date;\n\tmetadata?: Record<string, any>;\n};\n\nfunction normalizeString(value: any, maxLength = 500): string {\n\tconst normalized = String(value || '').trim();\n\tif (!normalized) {\n\t\treturn '';\n\t}\n\tif (normalized.length <= maxLength) {\n\t\treturn normalized;\n\t}\n\treturn normalized.slice(0, maxLength);\n}\n\nfunction normalizeNotificationCategory(value?: string): string {\n\tconst normalized = normalizeString(value, 40).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'system';\n\t}\n\tif (['autofix', 'slow-query', 'system', 'manual'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'system';\n}\n\nfunction normalizeNotificationSeverity(value?: string): string {\n\tconst normalized = normalizeString(value, 20).toLowerCase();\n\tif (!normalized) {\n\t\treturn 'info';\n\t}\n\tif (['info', 'success', 'warning', 'error'].includes(normalized)) {\n\t\treturn normalized;\n\t}\n\treturn 'info';\n}\n\nfunction normalizeListLimit(value?: number): number {\n\tconst parsed = Number(value);\n\tif (!Number.isFinite(parsed) || parsed <= 0) {\n\t\treturn DEFAULT_LIST_LIMIT;\n\t}\n\treturn Math.min(Math.floor(parsed), MAX_LIST_LIMIT);\n}\n\nfunction isSystemMethodUser(methodUser: any): boolean {\n\treturn !methodUser || methodUser === 'Internal System';\n}\n\nasync function resolveMethodUser(methodUser: any, methodUserId?: any): Promise<any | null> {\n\tif (isSystemMethodUser(methodUser)) {\n\t\treturn null;\n\t}\n\n\tif (typeof methodUser === 'object' && methodUser?._id && methodUser?.roles) {\n\t\treturn methodUser;\n\t}\n\n\tconst idUser = normalizeString(\n\t\ttypeof methodUserId === 'string'\n\t\t\t? methodUserId\n\t\t\t: (\n\t\t\t\tmethodUserId?._id ||\n\t\t\t\tmethodUserId?.id_user ||\n\t\t\t\t(typeof methodUser === 'string'\n\t\t\t\t\t? methodUser\n\t\t\t\t\t: (methodUser?._id || methodUser?.id_user || ''))\n\t\t\t),\n\t\t80\n\t);\n\tif (!idUser) {\n\t\treturn null;\n\t}\n\treturn await Users.findById(idUser);\n}\n\nfunction isSuperAdmin(user: any): boolean {\n\treturn !!user?.roles?.super_admin;\n}\n\nfunction uniqueUserIds(input: string[]): string[] {\n\tconst unique = new Set<string>();\n\tfor (const entry of (Array.isArray(input) ? input : [])) {\n\t\tconst id = normalizeString(entry, 80);\n\t\tif (id) {\n\t\t\tunique.add(id);\n\t\t}\n\t\tif (unique.size >= MAX_TARGET_USERS) {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn Array.from(unique);\n}\n\nfunction buildClientMembershipCriteria(idClient: string): Record<string, any> {\n\treturn {\n\t\t$or: [\n\t\t\t{'other.id_client': idClient},\n\t\t\t{'other.idClient': idClient},\n\t\t\t{id_client: idClient}\n\t\t]\n\t};\n}\n\nfunction buildInternalUserCriteria(): Record<string, any> {\n\treturn {\n\t\t$and: [\n\t\t\t{\n\t\t\t\tis_customer: {\n\t\t\t\t\t$ne: true\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t$nor: [\n\t\t\t\t\t{\n\t\t\t\t\t\t'other.id_customer': {\n\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid_customer: {\n\t\t\t\t\t\t\t$exists: true,\n\t\t\t\t\t\t\t$nin: ['', null]\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t};\n}\n\nfunction buildAdminUserCriteria(): Record<string, any> {\n\treturn {\n\t\t$or: [\n\t\t\t{\n\t\t\t\t'roles.super_admin': true\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.name': {\n\t\t\t\t\t$regex: 'admin',\n\t\t\t\t\t$options: 'i'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.views': {\n\t\t\t\t\t$regex: '^/manage'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t'roles.groups.views': '/manage'\n\t\t\t}\n\t\t]\n\t};\n}\n\nasync function resolveTargetUsers(payload: CreateCustomerNotificationPayload): Promise<string[]> {\n\tconst targetType = normalizeString(payload?.target_type || 'client', 20).toLowerCase() || 'client';\n\tif (targetType === 'users') {\n\t\treturn uniqueUserIds(payload?.id_users || []);\n\t}\n\n\tif (targetType === 'all_active') {\n\t\tconst users = await Users.find({\n\t\t\tactive: true,\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t}, {\n\t\t\tprojection: {\n\t\t\t\t_id: 1\n\t\t\t},\n\t\t\tlimit: MAX_TARGET_USERS\n\t\t});\n\t\treturn uniqueUserIds(users.map((user: any) => user?._id));\n\t}\n\n\tconst idClient = normalizeString(payload?.id_client, 80);\n\tif (!idClient) {\n\t\treturn [];\n\t}\n\n\tconst andClauses: Record<string, any>[] = [\n\t\t{\n\t\t\tactive: true\n\t\t},\n\t\t{\n\t\t\tusername: {\n\t\t\t\t$exists: true\n\t\t\t}\n\t\t},\n\t\tbuildClientMembershipCriteria(idClient)\n\t];\n\n\tif (targetType === 'client_internal' || targetType === 'client_admins') {\n\t\tandClauses.push(buildInternalUserCriteria());\n\t}\n\n\tif (targetType === 'client_admins') {\n\t\tandClauses.push(buildAdminUserCriteria());\n\t}\n\n\tconst users = await Users.find({\n\t\t$and: andClauses\n\t}, {\n\t\tprojection: {\n\t\t\t_id: 1\n\t\t},\n\t\tlimit: MAX_TARGET_USERS\n\t});\n\n\treturn uniqueUserIds(users.map((user: any) => user?._id));\n}\n\nexport function loadCustomerNotificationMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcreateCustomerNotification: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can create notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst title = normalizeString(payload?.title, 160);\n\t\t\t\tconst message = normalizeString(payload?.message, 1500);\n\t\t\t\tif (!title || !message) {\n\t\t\t\t\tthrow new Error('Notification title and message are required.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst clientName = normalizeString(payload?.client_name, 200);\n\t\t\t\tconst category = normalizeNotificationCategory(payload?.category);\n\t\t\t\tconst severity = normalizeNotificationSeverity(payload?.severity);\n\t\t\t\tconst details = normalizeString(payload?.details, 6000);\n\t\t\t\tconst source = normalizeString(payload?.source, 120);\n\t\t\t\tconst sourceId = normalizeString(payload?.source_id, 120);\n\t\t\t\tconst actionLabel = normalizeString(payload?.action_label, 80);\n\t\t\t\tconst actionRoute = normalizeString(payload?.action_route, 500);\n\t\t\t\tconst dedupeKey = normalizeString(payload?.dedupe_key, 160);\n\t\t\t\tconst expiresAt = payload?.expires_at instanceof Date && !Number.isNaN(payload.expires_at.getTime())\n\t\t\t\t\t? payload.expires_at\n\t\t\t\t\t: undefined;\n\t\t\t\tconst metadata = payload?.metadata && typeof payload.metadata === 'object'\n\t\t\t\t\t? payload.metadata\n\t\t\t\t\t: undefined;\n\n\t\t\t\tconst targetUsers = await resolveTargetUsers(payload);\n\t\t\t\tif (!targetUsers.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'no_target_users'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst now = new Date();\n\t\t\t\tconst createById = systemUser ? 'Internal System' : normalizeString(methodUser?._id, 80);\n\t\t\t\tconst createByName = systemUser\n\t\t\t\t\t? 'Internal System'\n\t\t\t\t\t: normalizeString(methodUser?.fullname || methodUser?.username, 200);\n\n\t\t\t\tlet skippedByDedupe = new Set<string>();\n\t\t\t\tif (dedupeKey) {\n\t\t\t\t\tconst cutoff = new Date(now.getTime() - DEDUPE_WINDOW_MS);\n\t\t\t\t\tconst existing = await CustomerNotifications.find({\n\t\t\t\t\t\tid_user: {\n\t\t\t\t\t\t\t$in: targetUsers\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdedupe_key: dedupeKey,\n\t\t\t\t\t\tcreatedAt: {\n\t\t\t\t\t\t\t$gte: cutoff\n\t\t\t\t\t\t}\n\t\t\t\t\t}, {\n\t\t\t\t\t\tprojection: {\n\t\t\t\t\t\t\tid_user: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlimit: MAX_TARGET_USERS\n\t\t\t\t\t});\n\t\t\t\t\tskippedByDedupe = new Set(existing.map(entry => normalizeString(entry?.id_user, 80)).filter(Boolean));\n\t\t\t\t}\n\n\t\t\t\tconst docs = targetUsers\n\t\t\t\t\t.filter(idUser => !skippedByDedupe.has(idUser))\n\t\t\t\t\t.map((idUser) => ({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tid_user: idUser,\n\t\t\t\t\t\tid_client: idClient || undefined,\n\t\t\t\t\t\tclient_name: clientName || undefined,\n\t\t\t\t\t\ttitle,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\tdetails: details || undefined,\n\t\t\t\t\t\tcategory,\n\t\t\t\t\t\tseverity,\n\t\t\t\t\t\tstatus: 'unread',\n\t\t\t\t\t\tread_at: undefined,\n\t\t\t\t\t\tread_by: '',\n\t\t\t\t\t\tsource: source || undefined,\n\t\t\t\t\t\tsource_id: sourceId || undefined,\n\t\t\t\t\t\taction_label: actionLabel || undefined,\n\t\t\t\t\t\taction_route: actionRoute || undefined,\n\t\t\t\t\t\tdedupe_key: dedupeKey || undefined,\n\t\t\t\t\t\tmetadata,\n\t\t\t\t\t\texpires_at: expiresAt,\n\t\t\t\t\t\tcreated_by: createById || undefined,\n\t\t\t\t\t\tcreated_by_name: createByName || undefined,\n\t\t\t\t\t\tcreatedAt: now,\n\t\t\t\t\t\tupdatedAt: now\n\t\t\t\t\t}));\n\n\t\t\t\tif (!docs.length) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcreated: 0,\n\t\t\t\t\t\treason: 'dedupe_suppressed'\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.insertMany(docs as any[]);\n\n\t\t\t\treturn {\n\t\t\t\t\tcreated: docs.length,\n\t\t\t\t\ttargeted: targetUsers.length\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tmarkUserNotificationRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_notification: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_notification: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateOne({\n\t\t\t\t\t_id: id_notification,\n\t\t\t\t\tid_user: idUser\n\t\t\t\t}, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tmarkAllUserNotificationsRead: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_client: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(id_client?: string) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst idUser = normalizeString(methodUser?._id, 80);\n\t\t\t\tif (!idUser) {\n\t\t\t\t\tthrow new Error('You must be logged in to mark notifications as read.');\n\t\t\t\t}\n\n\t\t\t\tconst idClient = normalizeString(id_client, 80);\n\t\t\t\tconst query: Record<string, any> = {\n\t\t\t\t\tid_user: idUser,\n\t\t\t\t\tstatus: 'unread'\n\t\t\t\t};\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\n\t\t\t\tawait CustomerNotifications.updateMany(query, {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tstatus: 'read',\n\t\t\t\t\t\tread_at: new Date(),\n\t\t\t\t\t\tread_by: idUser\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\tlistCustomerNotifications: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\toptional: true,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: async function(payload?) {\n\t\t\t\tconst methodUser = await resolveMethodUser(this.user, this.id_user);\n\t\t\t\tconst systemUser = isSystemMethodUser(this.user);\n\t\t\t\tif (!systemUser && !isSuperAdmin(methodUser)) {\n\t\t\t\t\tthrow new Error('Only super admins can list all notifications.');\n\t\t\t\t}\n\n\t\t\t\tconst query: Record<string, any> = {};\n\t\t\t\tconst idUser = normalizeString(payload?.id_user, 80);\n\t\t\t\tconst idClient = normalizeString(payload?.id_client, 80);\n\t\t\t\tconst status = normalizeString(payload?.status, 20).toLowerCase();\n\t\t\t\tif (idUser) {\n\t\t\t\t\tquery.id_user = idUser;\n\t\t\t\t}\n\t\t\t\tif (idClient) {\n\t\t\t\t\tquery.id_client = idClient;\n\t\t\t\t}\n\t\t\t\tif (status === 'unread' || status === 'read') {\n\t\t\t\t\tquery.status = status;\n\t\t\t\t}\n\n\t\t\t\tconst limit = normalizeListLimit(payload?.limit);\n\t\t\t\treturn await CustomerNotifications.find(query, {\n\t\t\t\t\tsort: {\n\t\t\t\t\t\tcreatedAt: -1\n\t\t\t\t\t},\n\t\t\t\t\tlimit\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n"]}
|
|
@@ -584,7 +584,7 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
584
584
|
}
|
|
585
585
|
else {
|
|
586
586
|
divFields_1.$addFields[total.id + '_' + field.id] = {
|
|
587
|
-
$divide: [
|
|
587
|
+
$divide: [buildArrayAwareNumericFieldExpr(fieldPath), { $multiply: multFields }]
|
|
588
588
|
};
|
|
589
589
|
}
|
|
590
590
|
}
|
|
@@ -593,7 +593,7 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
593
593
|
divFields_1.$addFields[total.id + '_' + field.id] = '$count';
|
|
594
594
|
}
|
|
595
595
|
else {
|
|
596
|
-
divFields_1.$addFields[total.id + '_' + field.id] =
|
|
596
|
+
divFields_1.$addFields[total.id + '_' + field.id] = buildArrayAwareNumericFieldExpr(fieldPath);
|
|
597
597
|
}
|
|
598
598
|
}
|
|
599
599
|
});
|
|
@@ -609,7 +609,7 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
609
609
|
});
|
|
610
610
|
if (multFields.length) {
|
|
611
611
|
divFields_1.$addFields[fieldPath.replace(/\.\$/g, '')] = {
|
|
612
|
-
$divide: [
|
|
612
|
+
$divide: [buildArrayAwareNumericFieldExpr(fieldPath), { $multiply: multFields }]
|
|
613
613
|
};
|
|
614
614
|
}
|
|
615
615
|
});
|
|
@@ -644,7 +644,7 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
644
644
|
if (!fieldPath && field.leafValueType !== 'Count') {
|
|
645
645
|
return;
|
|
646
646
|
}
|
|
647
|
-
divFields_1.$addFields[total.id + '_' + field.id] =
|
|
647
|
+
divFields_1.$addFields[total.id + '_' + field.id] = buildArrayAwareNumericFieldExpr(fieldPath);
|
|
648
648
|
});
|
|
649
649
|
});
|
|
650
650
|
if (Object.keys(divFields_1.$addFields).length > 0) {
|
|
@@ -843,7 +843,7 @@ function loadReportBuilderMethods(methodManager) {
|
|
|
843
843
|
queryGroup_1[field.id] = { '$avg': '$' + fieldPath.replace(/\.\$/g, '') };
|
|
844
844
|
}
|
|
845
845
|
else if (field.leafValueType === 'Sum') {
|
|
846
|
-
queryGroup_1[field.id] = { '$sum':
|
|
846
|
+
queryGroup_1[field.id] = { '$sum': buildArrayAwareNumericFieldExpr(fieldPath) };
|
|
847
847
|
}
|
|
848
848
|
else if (field.leafValueType === 'Count') {
|
|
849
849
|
queryGroup_1[field.id] = { '$sum': '$count_' + fieldPath.replace(/\.\$/g, '') };
|
|
@@ -1177,6 +1177,20 @@ function buildJoinAlias(join, joinIndex) {
|
|
|
1177
1177
|
var joinPath = (0, common_1.toTitleCase)(join.local_key.replace(/\.\$\./g, ' -> ').replace(/\./g, ' -> ').replace(/\_/g, ' '));
|
|
1178
1178
|
return "".concat(joinName, " (").concat(joinPath || 'Join', ") (Lookup ").concat(joinIndex + 1, ")");
|
|
1179
1179
|
}
|
|
1180
|
+
function buildArrayAwareNumericFieldExpr(fieldPath) {
|
|
1181
|
+
var normalizedFieldPath = (fieldPath || '').replace(/\.\$/g, '');
|
|
1182
|
+
if (!normalizedFieldPath) {
|
|
1183
|
+
return 0;
|
|
1184
|
+
}
|
|
1185
|
+
var fieldExpr = '$' + normalizedFieldPath;
|
|
1186
|
+
return {
|
|
1187
|
+
$cond: [
|
|
1188
|
+
{ $isArray: fieldExpr },
|
|
1189
|
+
{ $sum: { $ifNull: [fieldExpr, []] } },
|
|
1190
|
+
{ $ifNull: [fieldExpr, 0] }
|
|
1191
|
+
]
|
|
1192
|
+
};
|
|
1193
|
+
}
|
|
1180
1194
|
function appendSafeSort(query, sortSpec, selectedFields, customFields) {
|
|
1181
1195
|
if (selectedFields === void 0) { selectedFields = []; }
|
|
1182
1196
|
if (customFields === void 0) { customFields = []; }
|