@carlonicora/nestjs-neo4jsonapi 8.13.0 → 8.15.0

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 (132) hide show
  1. package/dist/common/interfaces/entity.schema.interface.d.ts +3 -4
  2. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  3. package/dist/core/cache/index.d.ts +1 -0
  4. package/dist/core/cache/index.d.ts.map +1 -1
  5. package/dist/core/cache/index.js +1 -0
  6. package/dist/core/cache/index.js.map +1 -1
  7. package/dist/core/cache/interceptors/cache.interceptor.d.ts.map +1 -1
  8. package/dist/core/cache/interceptors/cache.interceptor.js +2 -1
  9. package/dist/core/cache/interceptors/cache.interceptor.js.map +1 -1
  10. package/dist/core/cache/services/cache.service.d.ts +8 -1
  11. package/dist/core/cache/services/cache.service.d.ts.map +1 -1
  12. package/dist/core/cache/services/cache.service.js +9 -2
  13. package/dist/core/cache/services/cache.service.js.map +1 -1
  14. package/dist/core/cache/utils/request-language.d.ts +8 -0
  15. package/dist/core/cache/utils/request-language.d.ts.map +1 -0
  16. package/dist/core/cache/utils/request-language.js +15 -0
  17. package/dist/core/cache/utils/request-language.js.map +1 -0
  18. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  19. package/dist/core/neo4j/abstracts/abstract.repository.js +7 -0
  20. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  21. package/dist/foundations/account-deletion/repositories/account-deletion.wipe.repository.d.ts +2 -1
  22. package/dist/foundations/account-deletion/repositories/account-deletion.wipe.repository.d.ts.map +1 -1
  23. package/dist/foundations/account-deletion/repositories/account-deletion.wipe.repository.js +8 -1
  24. package/dist/foundations/account-deletion/repositories/account-deletion.wipe.repository.js.map +1 -1
  25. package/dist/foundations/company/repositories/company.repository.d.ts +2 -2
  26. package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
  27. package/dist/foundations/company/repositories/company.repository.js +10 -2
  28. package/dist/foundations/company/repositories/company.repository.js.map +1 -1
  29. package/dist/foundations/referral/controllers/index.d.ts +2 -0
  30. package/dist/foundations/referral/controllers/index.d.ts.map +1 -1
  31. package/dist/foundations/referral/controllers/index.js +2 -0
  32. package/dist/foundations/referral/controllers/index.js.map +1 -1
  33. package/dist/foundations/referral/controllers/referral.admin.controller.d.ts +24 -0
  34. package/dist/foundations/referral/controllers/referral.admin.controller.d.ts.map +1 -0
  35. package/dist/foundations/referral/controllers/referral.admin.controller.js +100 -0
  36. package/dist/foundations/referral/controllers/referral.admin.controller.js.map +1 -0
  37. package/dist/foundations/referral/controllers/referral.public.controller.d.ts +19 -0
  38. package/dist/foundations/referral/controllers/referral.public.controller.d.ts.map +1 -0
  39. package/dist/foundations/referral/controllers/referral.public.controller.js +57 -0
  40. package/dist/foundations/referral/controllers/referral.public.controller.js.map +1 -0
  41. package/dist/foundations/referral/dtos/index.d.ts +1 -0
  42. package/dist/foundations/referral/dtos/index.d.ts.map +1 -1
  43. package/dist/foundations/referral/dtos/index.js +1 -0
  44. package/dist/foundations/referral/dtos/index.js.map +1 -1
  45. package/dist/foundations/referral/dtos/referral-visit.post.dto.d.ts +11 -0
  46. package/dist/foundations/referral/dtos/referral-visit.post.dto.d.ts.map +1 -0
  47. package/dist/foundations/referral/dtos/referral-visit.post.dto.js +48 -0
  48. package/dist/foundations/referral/dtos/referral-visit.post.dto.js.map +1 -0
  49. package/dist/foundations/referral/entities/index.d.ts +11 -0
  50. package/dist/foundations/referral/entities/index.d.ts.map +1 -1
  51. package/dist/foundations/referral/entities/index.js +11 -0
  52. package/dist/foundations/referral/entities/index.js.map +1 -1
  53. package/dist/foundations/referral/entities/referral-admin-referral.d.ts +23 -0
  54. package/dist/foundations/referral/entities/referral-admin-referral.d.ts.map +1 -0
  55. package/dist/foundations/referral/entities/referral-admin-referral.js +23 -0
  56. package/dist/foundations/referral/entities/referral-admin-referral.js.map +1 -0
  57. package/dist/foundations/referral/entities/referral-admin-referral.meta.d.ts +3 -0
  58. package/dist/foundations/referral/entities/referral-admin-referral.meta.d.ts.map +1 -0
  59. package/dist/foundations/referral/entities/referral-admin-referral.meta.js +10 -0
  60. package/dist/foundations/referral/entities/referral-admin-referral.meta.js.map +1 -0
  61. package/dist/foundations/referral/entities/referral-admin-referrer.d.ts +22 -0
  62. package/dist/foundations/referral/entities/referral-admin-referrer.d.ts.map +1 -0
  63. package/dist/foundations/referral/entities/referral-admin-referrer.js +23 -0
  64. package/dist/foundations/referral/entities/referral-admin-referrer.js.map +1 -0
  65. package/dist/foundations/referral/entities/referral-admin-referrer.meta.d.ts +3 -0
  66. package/dist/foundations/referral/entities/referral-admin-referrer.meta.d.ts.map +1 -0
  67. package/dist/foundations/referral/entities/referral-admin-referrer.meta.js +10 -0
  68. package/dist/foundations/referral/entities/referral-admin-referrer.meta.js.map +1 -0
  69. package/dist/foundations/referral/entities/referral-admin-summary.d.ts +23 -0
  70. package/dist/foundations/referral/entities/referral-admin-summary.d.ts.map +1 -0
  71. package/dist/foundations/referral/entities/referral-admin-summary.js +22 -0
  72. package/dist/foundations/referral/entities/referral-admin-summary.js.map +1 -0
  73. package/dist/foundations/referral/entities/referral-admin-summary.meta.d.ts +3 -0
  74. package/dist/foundations/referral/entities/referral-admin-summary.meta.d.ts.map +1 -0
  75. package/dist/foundations/referral/entities/referral-admin-summary.meta.js +10 -0
  76. package/dist/foundations/referral/entities/referral-admin-summary.meta.js.map +1 -0
  77. package/dist/foundations/referral/entities/referral-invite.d.ts +27 -0
  78. package/dist/foundations/referral/entities/referral-invite.d.ts.map +1 -0
  79. package/dist/foundations/referral/entities/referral-invite.js +28 -0
  80. package/dist/foundations/referral/entities/referral-invite.js.map +1 -0
  81. package/dist/foundations/referral/entities/referral-invite.meta.d.ts +3 -0
  82. package/dist/foundations/referral/entities/referral-invite.meta.d.ts.map +1 -0
  83. package/dist/foundations/referral/entities/referral-invite.meta.js +10 -0
  84. package/dist/foundations/referral/entities/referral-invite.meta.js.map +1 -0
  85. package/dist/foundations/referral/entities/referral-source.d.ts +10 -0
  86. package/dist/foundations/referral/entities/referral-source.d.ts.map +1 -0
  87. package/dist/foundations/referral/entities/referral-source.js +9 -0
  88. package/dist/foundations/referral/entities/referral-source.js.map +1 -0
  89. package/dist/foundations/referral/entities/referral-visit.d.ts +19 -0
  90. package/dist/foundations/referral/entities/referral-visit.d.ts.map +1 -0
  91. package/dist/foundations/referral/entities/referral-visit.js +21 -0
  92. package/dist/foundations/referral/entities/referral-visit.js.map +1 -0
  93. package/dist/foundations/referral/entities/referral-visit.meta.d.ts +7 -0
  94. package/dist/foundations/referral/entities/referral-visit.meta.d.ts.map +1 -0
  95. package/dist/foundations/referral/entities/referral-visit.meta.js +14 -0
  96. package/dist/foundations/referral/entities/referral-visit.meta.js.map +1 -0
  97. package/dist/foundations/referral/entities/referral.d.ts +3 -0
  98. package/dist/foundations/referral/entities/referral.d.ts.map +1 -1
  99. package/dist/foundations/referral/entities/referral.js +1 -0
  100. package/dist/foundations/referral/entities/referral.js.map +1 -1
  101. package/dist/foundations/referral/index.d.ts +1 -0
  102. package/dist/foundations/referral/index.d.ts.map +1 -1
  103. package/dist/foundations/referral/index.js +1 -0
  104. package/dist/foundations/referral/index.js.map +1 -1
  105. package/dist/foundations/referral/referral.module.d.ts.map +1 -1
  106. package/dist/foundations/referral/referral.module.js +20 -1
  107. package/dist/foundations/referral/referral.module.js.map +1 -1
  108. package/dist/foundations/referral/repositories/index.d.ts +1 -0
  109. package/dist/foundations/referral/repositories/index.d.ts.map +1 -1
  110. package/dist/foundations/referral/repositories/index.js +1 -0
  111. package/dist/foundations/referral/repositories/index.js.map +1 -1
  112. package/dist/foundations/referral/repositories/referral.admin.repository.d.ts +106 -0
  113. package/dist/foundations/referral/repositories/referral.admin.repository.d.ts.map +1 -0
  114. package/dist/foundations/referral/repositories/referral.admin.repository.js +380 -0
  115. package/dist/foundations/referral/repositories/referral.admin.repository.js.map +1 -0
  116. package/dist/foundations/referral/repositories/referral.repository.d.ts +34 -0
  117. package/dist/foundations/referral/repositories/referral.repository.d.ts.map +1 -1
  118. package/dist/foundations/referral/repositories/referral.repository.js +82 -0
  119. package/dist/foundations/referral/repositories/referral.repository.js.map +1 -1
  120. package/dist/foundations/referral/services/index.d.ts +1 -0
  121. package/dist/foundations/referral/services/index.d.ts.map +1 -1
  122. package/dist/foundations/referral/services/index.js +1 -0
  123. package/dist/foundations/referral/services/index.js.map +1 -1
  124. package/dist/foundations/referral/services/referral.admin.service.d.ts +53 -0
  125. package/dist/foundations/referral/services/referral.admin.service.d.ts.map +1 -0
  126. package/dist/foundations/referral/services/referral.admin.service.js +94 -0
  127. package/dist/foundations/referral/services/referral.admin.service.js.map +1 -0
  128. package/dist/foundations/referral/services/referral.service.d.ts +10 -2
  129. package/dist/foundations/referral/services/referral.service.d.ts.map +1 -1
  130. package/dist/foundations/referral/services/referral.service.js +34 -4
  131. package/dist/foundations/referral/services/referral.service.js.map +1 -1
  132. package/package.json +1 -1
@@ -16,7 +16,12 @@ const abstract_repository_1 = require("../../../core/neo4j/abstracts/abstract.re
16
16
  const neo4j_service_1 = require("../../../core/neo4j/services/neo4j.service");
17
17
  const security_service_1 = require("../../../core/security/services/security.service");
18
18
  const company_meta_1 = require("../../company/entities/company.meta");
19
+ const user_meta_1 = require("../../user/entities/user.meta");
19
20
  const referral_1 = require("../entities/referral");
21
+ const referral_invite_1 = require("../entities/referral-invite");
22
+ const referral_invite_meta_1 = require("../entities/referral-invite.meta");
23
+ const referral_visit_1 = require("../entities/referral-visit");
24
+ const referral_visit_meta_1 = require("../entities/referral-visit.meta");
20
25
  const referral_meta_1 = require("../entities/referral.meta");
21
26
  let ReferralRepository = class ReferralRepository extends abstract_repository_1.AbstractRepository {
22
27
  constructor(neo4j, securityService, clsService) {
@@ -37,12 +42,22 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
37
42
  }
38
43
  /**
39
44
  * Create a new referral with REFERRED_BY and REFERS_TO relationships.
45
+ *
46
+ * Company check: the referred company (the caller's own) goes through
47
+ * validateRelatedNodes. The REFERRED_BY link to the referrer company skips that
48
+ * check, because a link to another company is the point of the record.
49
+ * Owner-approved exception (Carlo, 2026-10-30, D18), the same scope as the
50
+ * 2026-10-26 exception on createReferralIfAbsent.
40
51
  * @param params.id - The referral ID
41
52
  * @param params.referrerCompanyId - The company that made the referral
42
53
  * @param params.referredCompanyId - The company that was referred
54
+ * @param params.source - How the referral came about (link or direct)
43
55
  * @returns true if the referral was created, false if one or both companies don't exist
44
56
  */
45
57
  async createReferral(params) {
58
+ await this.neo4j.validateRelatedNodes({
59
+ nodes: [{ id: params.referredCompanyId, label: company_meta_1.companyMeta.labelName }],
60
+ });
46
61
  const results = await this.neo4j.executeInTransaction([
47
62
  {
48
63
  query: `
@@ -51,6 +66,7 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
51
66
  CREATE (${referral_meta_1.referralMeta.nodeName}:${referral_meta_1.referralMeta.labelName} {
52
67
  id: $id,
53
68
  status: $status,
69
+ source: $source,
54
70
  createdAt: datetime(),
55
71
  updatedAt: datetime()
56
72
  })
@@ -63,6 +79,7 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
63
79
  referrerCompanyId: params.referrerCompanyId,
64
80
  referredCompanyId: params.referredCompanyId,
65
81
  status: "pending",
82
+ source: params.source,
66
83
  },
67
84
  },
68
85
  ]);
@@ -83,6 +100,7 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
83
100
  * @param params.id - The referral ID
84
101
  * @param params.referrerCompanyId - The company that made the referral
85
102
  * @param params.referredCompanyId - The company that was referred
103
+ * @param params.source - How the referral came about (link or direct)
86
104
  */
87
105
  async createReferralIfAbsent(params) {
88
106
  await this.neo4j.validateRelatedNodes({
@@ -95,6 +113,7 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
95
113
  referrerCompanyId: params.referrerCompanyId,
96
114
  referredCompanyId: params.referredCompanyId,
97
115
  status: "pending",
116
+ source: params.source,
98
117
  };
99
118
  query.query += `
100
119
  MATCH (referrer:${company_meta_1.companyMeta.labelName} {id: $referrerCompanyId})
@@ -103,6 +122,7 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
103
122
  CREATE (${referral_meta_1.referralMeta.nodeName}:${referral_meta_1.referralMeta.labelName} {
104
123
  id: $id,
105
124
  status: $status,
125
+ source: $source,
106
126
  createdAt: datetime(),
107
127
  updatedAt: datetime()
108
128
  })
@@ -111,6 +131,68 @@ let ReferralRepository = class ReferralRepository extends abstract_repository_1.
111
131
  `;
112
132
  await this.neo4j.writeOne(query);
113
133
  }
134
+ /**
135
+ * Record one referral invite email sent by a user of a company. The invitee
136
+ * address is never stored. Both ids must be server-derived (CLS).
137
+ * @param params.id - The invite ID
138
+ * @param params.companyId - The sender's company
139
+ * @param params.userId - The sender
140
+ */
141
+ async createInvite(params) {
142
+ await this.neo4j.validateRelatedNodes({
143
+ nodes: [
144
+ { id: params.companyId, label: company_meta_1.companyMeta.labelName },
145
+ { id: params.userId, label: user_meta_1.userMeta.labelName },
146
+ ],
147
+ });
148
+ const query = this.neo4j.initQuery({ serialiser: referral_invite_1.ReferralInviteDescriptor.model });
149
+ query.queryParams = {
150
+ ...query.queryParams,
151
+ id: params.id,
152
+ companyId: params.companyId,
153
+ userId: params.userId,
154
+ };
155
+ query.query += `
156
+ MATCH (company:${company_meta_1.companyMeta.labelName} {id: $companyId})
157
+ MATCH (sender:${user_meta_1.userMeta.labelName} {id: $userId})
158
+ CREATE (${referral_invite_meta_1.referralInviteMeta.nodeName}:${referral_invite_meta_1.referralInviteMeta.labelName} {
159
+ id: $id,
160
+ createdAt: datetime(),
161
+ updatedAt: datetime()
162
+ })
163
+ CREATE (${referral_invite_meta_1.referralInviteMeta.nodeName})-[:SENT_BY]->(company)
164
+ CREATE (${referral_invite_meta_1.referralInviteMeta.nodeName})-[:SENT_BY_USER]->(sender)
165
+ `;
166
+ await this.neo4j.writeOne(query);
167
+ }
168
+ /**
169
+ * Record one visit to a company's referral link. Runs on a public route with no
170
+ * company in CLS, so the company check is existence only. The company id comes
171
+ * from the referral code lookup, never from the request.
172
+ * @param params.id - The visit ID
173
+ * @param params.referrerCompanyId - The company owning the referral code
174
+ */
175
+ async createVisit(params) {
176
+ await this.neo4j.validateRelatedNodes({
177
+ nodes: [{ id: params.referrerCompanyId, label: company_meta_1.companyMeta.labelName }],
178
+ });
179
+ const query = this.neo4j.initQuery({ serialiser: referral_visit_1.ReferralVisitDescriptor.model });
180
+ query.queryParams = {
181
+ ...query.queryParams,
182
+ id: params.id,
183
+ referrerCompanyId: params.referrerCompanyId,
184
+ };
185
+ query.query += `
186
+ MATCH (referrer:${company_meta_1.companyMeta.labelName} {id: $referrerCompanyId})
187
+ CREATE (${referral_visit_meta_1.referralVisitMeta.nodeName}:${referral_visit_meta_1.referralVisitMeta.labelName} {
188
+ id: $id,
189
+ createdAt: datetime(),
190
+ updatedAt: datetime()
191
+ })
192
+ CREATE (${referral_visit_meta_1.referralVisitMeta.nodeName})-[:VISITED]->(referrer)
193
+ `;
194
+ await this.neo4j.writeOne(query);
195
+ }
114
196
  /**
115
197
  * Find a pending referral by the referred company ID.
116
198
  * Uses custom result processing to properly load both referrer and referred relationships
@@ -1 +1 @@
1
- {"version":3,"file":"referral.repository.js","sourceRoot":"","sources":["../../../../src/foundations/referral/repositories/referral.repository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"referral.repository.js","sourceRoot":"","sources":["../../../../src/foundations/referral/repositories/referral.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,2CAAwC;AACxC,2FAAuF;AACvF,8EAA0E;AAC1E,uFAAmF;AAEnF,sEAAkE;AAClE,6DAAyD;AACzD,mDAAoE;AACpE,iEAAuE;AACvE,2EAAsE;AAEtE,+DAAqE;AACrE,yEAAoE;AACpE,6DAAyD;AAGlD,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,wCAAqE;IAG3G,YAAY,KAAmB,EAAE,eAAgC,EAAE,UAAsB;QACvF,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;QAHzB,eAAU,GAAG,6BAAkB,CAAC;IAInD,CAAC;IAED;;OAEG;IACO,oBAAoB;QAC5B,OAAO;eACI,4BAAY,CAAC,QAAQ,sBAAsB,4BAAY,CAAC,QAAQ,aAAa,0BAAW,CAAC,SAAS;eAClG,4BAAY,CAAC,QAAQ,oBAAoB,4BAAY,CAAC,QAAQ,aAAa,0BAAW,CAAC,SAAS;eAChG,4BAAY,CAAC,QAAQ;UAC1B,4BAAY,CAAC,QAAQ;UACrB,4BAAY,CAAC,QAAQ;KAC1B,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,cAAc,CAAC,MAKpB;QACC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,0BAAW,CAAC,SAAS,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpD;gBACE,KAAK,EAAE;4BACa,0BAAW,CAAC,SAAS;4BACrB,0BAAW,CAAC,SAAS;oBAC7B,4BAAY,CAAC,QAAQ,IAAI,4BAAY,CAAC,SAAS;;;;;;;oBAO/C,4BAAY,CAAC,QAAQ;oBACrB,4BAAY,CAAC,QAAQ;mBACtB,4BAAY,CAAC,QAAQ;SAC/B;gBACD,MAAM,EAAE;oBACN,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;oBAC3C,MAAM,EAAE,SAAS;oBACjB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB;aACF;SACF,CAAC,CAAC;QAEH,mEAAmE;QACnE,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,sBAAsB,CAAC,MAK5B;QACC,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,0BAAW,CAAC,SAAS,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,6BAAkB,CAAC,KAAK,EAAE,CAAC,CAAC;QAE7E,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;wBACK,0BAAW,CAAC,SAAS;wBACrB,0BAAW,CAAC,SAAS;mCACV,4BAAY,CAAC,SAAS;gBACzC,4BAAY,CAAC,QAAQ,IAAI,4BAAY,CAAC,SAAS;;;;;;;gBAO/C,4BAAY,CAAC,QAAQ;gBACrB,4BAAY,CAAC,QAAQ;KAChC,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAAC,MAAyD;QAC1E,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpC,KAAK,EAAE;gBACL,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,0BAAW,CAAC,SAAS,EAAE;gBACtD,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,oBAAQ,CAAC,SAAS,EAAE;aACjD;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,0CAAwB,CAAC,KAAK,EAAE,CAAC,CAAC;QAEnF,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;uBACI,0BAAW,CAAC,SAAS;sBACtB,oBAAQ,CAAC,SAAS;gBACxB,yCAAkB,CAAC,QAAQ,IAAI,yCAAkB,CAAC,SAAS;;;;;gBAK3D,yCAAkB,CAAC,QAAQ;gBAC3B,yCAAkB,CAAC,QAAQ;KACtC,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,WAAW,CAAC,MAAiD;QACjE,MAAM,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;YACpC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,iBAAiB,EAAE,KAAK,EAAE,0BAAW,CAAC,SAAS,EAAE,CAAC;SACxE,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,wCAAuB,CAAC,KAAK,EAAE,CAAC,CAAC;QAElF,KAAK,CAAC,WAAW,GAAG;YAClB,GAAG,KAAK,CAAC,WAAW;YACpB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;SAC5C,CAAC;QAEF,KAAK,CAAC,KAAK,IAAI;wBACK,0BAAW,CAAC,SAAS;gBAC7B,uCAAiB,CAAC,QAAQ,IAAI,uCAAiB,CAAC,SAAS;;;;;gBAKzD,uCAAiB,CAAC,QAAQ;KACrC,CAAC;QAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,8BAA8B,CAAC,MAAqC;QACxE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;eACS,4BAAY,CAAC,QAAQ,IAAI,4BAAY,CAAC,SAAS,6BAA6B,0BAAW,CAAC,SAAS;cAClG,4BAAY,CAAC,QAAQ;eACpB,4BAAY,CAAC,QAAQ,+BAA+B,0BAAW,CAAC,SAAS;eACzE,4BAAY,CAAC,QAAQ;OAC7B,EACD;YACE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE,SAAS;SAClB,CACF,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,4BAAY,CAAC,QAAQ,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAE5C,qDAAqD;QACrD,+DAA+D;QAC/D,0FAA0F;QAC1F,MAAM,QAAQ,GAAa;YACzB,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;YAC9B,IAAI,EAAE,4BAAY,CAAC,IAAI;YACvB,MAAM,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM;YACtC,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,SAAS;YAC5C,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,SAAS;YAC5C,WAAW,EAAE,YAAY,CAAC,UAAU,CAAC,WAAW;YAChD,aAAa,EAAE,YAAY,CAAC,UAAU,CAAC,aAAa;YACpD,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAE,EAAE,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,EAAc,CAAC,CAAC,CAAC,SAAS;YACpF,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAE,EAAE,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,EAAc,CAAC,CAAC,CAAC,SAAS;SACrF,CAAC;QAEF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB,CAAC,MAAqD;QAC1E,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxB,WAAW,EAAE;gBACX,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,MAAM,EAAE,WAAW;aACpB;YACD,KAAK,EAAE;iBACI,4BAAY,CAAC,QAAQ,IAAI,4BAAY,CAAC,SAAS;cAClD,4BAAY,CAAC,QAAQ;cACrB,4BAAY,CAAC,QAAQ;cACrB,4BAAY,CAAC,QAAQ;cACrB,4BAAY,CAAC,QAAQ;OAC5B;SACF,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iCAAiC,CAAC,MAAqC;QAC3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAClC;eACS,4BAAY,CAAC,QAAQ,IAAI,4BAAY,CAAC,SAAS,+BAA+B,0BAAW,CAAC,SAAS;cACpG,4BAAY,CAAC,QAAQ;qBACd,4BAAY,CAAC,QAAQ;OACnC,EACD;YACE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE,WAAW;SACpB,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;CACF,CAAA;AAlSY,gDAAkB;6BAAlB,kBAAkB;IAD9B,IAAA,mBAAU,GAAE;qCAIQ,4BAAY,EAAmB,kCAAe,EAAc,uBAAU;GAH9E,kBAAkB,CAkS9B"}
@@ -1,3 +1,4 @@
1
1
  export * from "./referral.service";
2
2
  export * from "./registration-referral.hook";
3
+ export * from "./referral.admin.service";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/foundations/referral/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/foundations/referral/services/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC"}
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./referral.service"), exports);
18
18
  __exportStar(require("./registration-referral.hook"), exports);
19
+ __exportStar(require("./referral.admin.service"), exports);
19
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/foundations/referral/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+DAA6C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/foundations/referral/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,+DAA6C;AAC7C,2DAAyC"}
@@ -0,0 +1,53 @@
1
+ import { ClsService } from "nestjs-cls";
2
+ import { JsonApiListDocument } from "../../../core/jsonapi/interfaces/jsonapi.document.interface";
3
+ import { JsonApiService } from "../../../core/jsonapi/services/jsonapi.service";
4
+ import { AbstractService } from "../../../core/neo4j/abstracts/abstract.service";
5
+ import { UserRepository } from "../../user/repositories/user.repository";
6
+ import { Referral, ReferralDescriptor } from "../entities/referral";
7
+ import { ReferralAdminPeriod, ReferralAdminRepository, ReferralAdminSort } from "../repositories/referral.admin.repository";
8
+ import { ReferralRepository } from "../repositories/referral.repository";
9
+ /**
10
+ * Serialises the platform-wide referral report as JSON:API documents.
11
+ *
12
+ * Extends AbstractService over the Referral descriptor and its repository,
13
+ * mirroring AnalyticsAdminService: the inherited CRUD is not reachable from any
14
+ * route on ReferralAdminController, but keeps the base class coherent. Summary,
15
+ * referrers and referrals serialise with their synthetic descriptors' models,
16
+ * because their rows are aggregates, not nodes.
17
+ *
18
+ * Platform administrators' companies are excluded from every number.
19
+ */
20
+ export declare class ReferralAdminService extends AbstractService<Referral, typeof ReferralDescriptor.relationships> {
21
+ private readonly referralAdminRepository;
22
+ private readonly userRepository;
23
+ protected readonly descriptor: import("../../..").EntityDescriptor<Referral, {
24
+ referrer: {
25
+ model: import("../../..").DataMeta;
26
+ direction: "out";
27
+ relationship: string;
28
+ cardinality: "one";
29
+ };
30
+ referred: {
31
+ model: import("../../..").DataMeta;
32
+ direction: "out";
33
+ relationship: string;
34
+ cardinality: "one";
35
+ };
36
+ }>;
37
+ constructor(jsonApiService: JsonApiService, referralRepository: ReferralRepository, clsService: ClsService, referralAdminRepository: ReferralAdminRepository, userRepository: UserRepository);
38
+ getSummary(params: {
39
+ period: ReferralAdminPeriod;
40
+ }): Promise<JsonApiListDocument>;
41
+ getReferrers(params: {
42
+ period: ReferralAdminPeriod;
43
+ sort: ReferralAdminSort;
44
+ }): Promise<JsonApiListDocument>;
45
+ getReferrals(params: {
46
+ period: ReferralAdminPeriod;
47
+ }): Promise<JsonApiListDocument>;
48
+ /** The period's start as an ISO datetime, or null for "all". */
49
+ private _from;
50
+ private _daysBefore;
51
+ private _excludeUserIds;
52
+ }
53
+ //# sourceMappingURL=referral.admin.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral.admin.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.admin.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAIpE,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE;;;;;;;;;;GAUG;AACH,qBACa,oBAAqB,SAAQ,eAAe,CAAC,QAAQ,EAAE,OAAO,kBAAkB,CAAC,aAAa,CAAC;IAOxG,OAAO,CAAC,QAAQ,CAAC,uBAAuB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAPjC,SAAS,CAAC,QAAQ,CAAC,UAAU;;;;;;;;;;;;;OAAsB;gBAGjD,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,UAAU,EACL,uBAAuB,EAAE,uBAAuB,EAChD,cAAc,EAAE,cAAc;IAK3C,UAAU,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAejF,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,mBAAmB,CAAC;QAAC,IAAI,EAAE,iBAAiB,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAY5G,YAAY,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,mBAAmB,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWzF,gEAAgE;IAChE,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,WAAW;YAIL,eAAe;CAI9B"}
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ReferralAdminService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const nestjs_cls_1 = require("nestjs-cls");
15
+ const jsonapi_service_1 = require("../../../core/jsonapi/services/jsonapi.service");
16
+ const abstract_service_1 = require("../../../core/neo4j/abstracts/abstract.service");
17
+ const user_repository_1 = require("../../user/repositories/user.repository");
18
+ const referral_1 = require("../entities/referral");
19
+ const referral_admin_referral_1 = require("../entities/referral-admin-referral");
20
+ const referral_admin_referrer_1 = require("../entities/referral-admin-referrer");
21
+ const referral_admin_summary_1 = require("../entities/referral-admin-summary");
22
+ const referral_admin_repository_1 = require("../repositories/referral.admin.repository");
23
+ const referral_repository_1 = require("../repositories/referral.repository");
24
+ const ONE_DAY_MS = 24 * 60 * 60 * 1000;
25
+ /**
26
+ * Serialises the platform-wide referral report as JSON:API documents.
27
+ *
28
+ * Extends AbstractService over the Referral descriptor and its repository,
29
+ * mirroring AnalyticsAdminService: the inherited CRUD is not reachable from any
30
+ * route on ReferralAdminController, but keeps the base class coherent. Summary,
31
+ * referrers and referrals serialise with their synthetic descriptors' models,
32
+ * because their rows are aggregates, not nodes.
33
+ *
34
+ * Platform administrators' companies are excluded from every number.
35
+ */
36
+ let ReferralAdminService = class ReferralAdminService extends abstract_service_1.AbstractService {
37
+ constructor(jsonApiService, referralRepository, clsService, referralAdminRepository, userRepository) {
38
+ super(jsonApiService, referralRepository, clsService, referral_1.ReferralDescriptor.model);
39
+ this.referralAdminRepository = referralAdminRepository;
40
+ this.userRepository = userRepository;
41
+ this.descriptor = referral_1.ReferralDescriptor;
42
+ }
43
+ async getSummary(params) {
44
+ const now = new Date();
45
+ const days = referral_admin_repository_1.REFERRAL_ADMIN_PERIODS[params.period];
46
+ const excludeUserIds = await this._excludeUserIds();
47
+ const rows = await this.referralAdminRepository.findSummary({
48
+ from: days === null ? null : this._daysBefore(now, days),
49
+ previousFrom: days === null ? null : this._daysBefore(now, 2 * days),
50
+ to: now.toISOString(),
51
+ excludeUserIds,
52
+ });
53
+ return this.jsonApiService.buildList(referral_admin_summary_1.ReferralAdminSummaryDescriptor.model, rows);
54
+ }
55
+ async getReferrers(params) {
56
+ const excludeUserIds = await this._excludeUserIds();
57
+ const rows = await this.referralAdminRepository.findReferrers({
58
+ from: this._from(params.period),
59
+ sort: params.sort,
60
+ excludeUserIds,
61
+ });
62
+ return this.jsonApiService.buildList(referral_admin_referrer_1.ReferralAdminReferrerDescriptor.model, rows);
63
+ }
64
+ async getReferrals(params) {
65
+ const excludeUserIds = await this._excludeUserIds();
66
+ const rows = await this.referralAdminRepository.findReferrals({
67
+ from: this._from(params.period),
68
+ excludeUserIds,
69
+ });
70
+ return this.jsonApiService.buildList(referral_admin_referral_1.ReferralAdminReferralDescriptor.model, rows);
71
+ }
72
+ /** The period's start as an ISO datetime, or null for "all". */
73
+ _from(period) {
74
+ const days = referral_admin_repository_1.REFERRAL_ADMIN_PERIODS[period];
75
+ return days === null ? null : this._daysBefore(new Date(), days);
76
+ }
77
+ _daysBefore(now, days) {
78
+ return new Date(now.getTime() - days * ONE_DAY_MS).toISOString();
79
+ }
80
+ async _excludeUserIds() {
81
+ const admins = await this.userRepository.findPlatformAdministrators();
82
+ return admins.map((admin) => admin.id);
83
+ }
84
+ };
85
+ exports.ReferralAdminService = ReferralAdminService;
86
+ exports.ReferralAdminService = ReferralAdminService = __decorate([
87
+ (0, common_1.Injectable)(),
88
+ __metadata("design:paramtypes", [jsonapi_service_1.JsonApiService,
89
+ referral_repository_1.ReferralRepository,
90
+ nestjs_cls_1.ClsService,
91
+ referral_admin_repository_1.ReferralAdminRepository,
92
+ user_repository_1.UserRepository])
93
+ ], ReferralAdminService);
94
+ //# sourceMappingURL=referral.admin.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"referral.admin.service.js","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.admin.service.ts"],"names":[],"mappings":"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"}
@@ -73,12 +73,20 @@ export declare class ReferralService implements ReferralCompletionHandler {
73
73
  referrerCompanyId: string;
74
74
  referredCompanyId: string;
75
75
  }): Promise<void>;
76
+ /**
77
+ * Record one visit to a referral link. Never throws for a bad code: an empty or
78
+ * unknown code, or a disabled feature, writes nothing. Never feeds a reward.
79
+ * @param params.referralCode - The referral code from the visited link
80
+ */
81
+ recordVisit(params: {
82
+ referralCode: string;
83
+ }): Promise<void>;
76
84
  /**
77
85
  * Queue a referral invite email to be sent.
78
86
  * Enforces a configurable cooldown per company+email to prevent spam.
79
87
  * @param params.email - The email address to send the invite to
80
- * @throws BadRequestException if the email was already invited within the cooldown period
81
- * @throws BadRequestException if the email is already registered in the system
88
+ * @throws BadRequestException (code REFERRAL_ALREADY_INVITED) if the email was already invited within the cooldown period
89
+ * @throws BadRequestException (code REFERRAL_ALREADY_REGISTERED) if the email is already registered in the system
82
90
  */
83
91
  sendReferralInvite(params: {
84
92
  email: string;
@@ -1 +1 @@
1
- {"version":3,"file":"referral.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,+CAA+C,CAAC;AAExF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAGzE,OAAO,EAAmB,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,uEAAuE,CAAC;AAClH,OAAO,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,qBACa,eAAgB,YAAW,yBAAyB;IAIpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAChD,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,YAAY;IACD,OAAO,CAAC,QAAQ,CAAC,UAAU;IACvD,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAXnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;gBAGf,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC,EAC/D,cAAc,EAAE,cAAc,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,iBAAiB,EAAE,iBAAiB,EACpC,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,YAAY,EAAE,YAAY,EACE,UAAU,EAAE,KAAK,EAC7C,gBAAgB,EAAE,uBAAuB;IAG5D;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;;OAGG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAgBhD;;;;;OAKG;IACG,aAAa,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CpE;;;;;;;;;OASG;IACG,cAAc,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrG;;;;;;OAMG;IACG,kBAAkB,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ClE;;;;;OAKG;IACG,yBAAyB,CAAC,MAAM,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwErF;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAyBxC;;;;OAIG;IACG,gBAAgB,IAAI,OAAO,CAAC,qBAAqB,CAAC;IAUxD;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,qBAAqB,CAAC;CAWxD"}
1
+ {"version":3,"file":"referral.service.d.ts","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.service.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,7 @@ const company_repository_1 = require("../../company/repositories/company.reposit
28
28
  const user_repository_1 = require("../../user/repositories/user.repository");
29
29
  const referral_repository_1 = require("../repositories/referral.repository");
30
30
  const referral_code_1 = require("../entities/referral-code");
31
+ const referral_source_1 = require("../entities/referral-source");
31
32
  const referral_stats_1 = require("../entities/referral-stats");
32
33
  const referral_config_interface_1 = require("../interfaces/referral.config.interface");
33
34
  let ReferralService = ReferralService_1 = class ReferralService {
@@ -115,6 +116,7 @@ let ReferralService = ReferralService_1 = class ReferralService {
115
116
  id: referralId,
116
117
  referrerCompanyId: referrerCompany.id,
117
118
  referredCompanyId,
119
+ source: referral_source_1.REFERRAL_SOURCE.link,
118
120
  });
119
121
  if (created) {
120
122
  this.logger.log(`Created pending referral ${referralId}: ${referrerCompany.id} referred ${referredCompanyId}`);
@@ -140,14 +142,35 @@ let ReferralService = ReferralService_1 = class ReferralService {
140
142
  id: (0, crypto_1.randomUUID)(),
141
143
  referrerCompanyId: params.referrerCompanyId,
142
144
  referredCompanyId: params.referredCompanyId,
145
+ source: referral_source_1.REFERRAL_SOURCE.direct,
146
+ });
147
+ }
148
+ /**
149
+ * Record one visit to a referral link. Never throws for a bad code: an empty or
150
+ * unknown code, or a disabled feature, writes nothing. Never feeds a reward.
151
+ * @param params.referralCode - The referral code from the visited link
152
+ */
153
+ async recordVisit(params) {
154
+ if (!this.isEnabled)
155
+ return;
156
+ if (!params.referralCode)
157
+ return;
158
+ const referrerCompany = await this.companyRepository.findByReferralCode({
159
+ referralCode: params.referralCode,
160
+ });
161
+ if (!referrerCompany)
162
+ return;
163
+ await this.referralRepository.createVisit({
164
+ id: (0, crypto_1.randomUUID)(),
165
+ referrerCompanyId: referrerCompany.id,
143
166
  });
144
167
  }
145
168
  /**
146
169
  * Queue a referral invite email to be sent.
147
170
  * Enforces a configurable cooldown per company+email to prevent spam.
148
171
  * @param params.email - The email address to send the invite to
149
- * @throws BadRequestException if the email was already invited within the cooldown period
150
- * @throws BadRequestException if the email is already registered in the system
172
+ * @throws BadRequestException (code REFERRAL_ALREADY_INVITED) if the email was already invited within the cooldown period
173
+ * @throws BadRequestException (code REFERRAL_ALREADY_REGISTERED) if the email is already registered in the system
151
174
  */
152
175
  async sendReferralInvite(params) {
153
176
  const companyId = this.clsService.get("companyId");
@@ -157,12 +180,18 @@ let ReferralService = ReferralService_1 = class ReferralService {
157
180
  const redis = this.cacheService.getRedisClient();
158
181
  const existingInvite = await redis.get(inviteKey);
159
182
  if (existingInvite) {
160
- throw new common_1.BadRequestException("You already sent an invitation to this email recently");
183
+ throw new common_1.BadRequestException({
184
+ code: "REFERRAL_ALREADY_INVITED",
185
+ message: "You already sent an invitation to this email recently",
186
+ });
161
187
  }
162
188
  // Check if the email is already registered in the system
163
189
  const existingUser = await this.userRepository.findByEmail({ email: params.email });
164
190
  if (existingUser) {
165
- throw new common_1.BadRequestException("This email is already registered in the system");
191
+ throw new common_1.BadRequestException({
192
+ code: "REFERRAL_ALREADY_REGISTERED",
193
+ message: "This email is already registered in the system",
194
+ });
166
195
  }
167
196
  const company = await this.companyRepository.findByCompanyId({ companyId });
168
197
  const user = await this.userRepository.findByUserId({ userId, companyId });
@@ -170,6 +199,7 @@ let ReferralService = ReferralService_1 = class ReferralService {
170
199
  const referralCode = company.referralCode || (await this.getOrCreateReferralCode());
171
200
  // Mark this email as invited (with configured TTL)
172
201
  await redis.setex(inviteKey, this.config.inviteCooldownSeconds, "1");
202
+ await this.referralRepository.createInvite({ id: (0, crypto_1.randomUUID)(), companyId, userId });
173
203
  await this.emailQueue.add("referral-invite", {
174
204
  jobType: "referral-invite",
175
205
  payload: {
@@ -1 +1 @@
1
- {"version":3,"file":"referral.service.js","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"referral.service.js","sourceRoot":"","sources":["../../../../src/foundations/referral/services/referral.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nestjs-neo4jsonapi",
3
- "version": "8.13.0",
3
+ "version": "8.15.0",
4
4
  "description": "NestJS foundation package with JSON:API, Neo4j, Redis, LangChain agents, and common utilities",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",