@d19n/youfibre-odin-sdk 2.0.13-beta.1 → 2.0.13
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/README.md +11 -10
- package/dist/actions-v2/CreateOrderFromBrskDto.d.ts +75 -0
- package/dist/actions-v2/CreateOrderItemFromBrskDto.d.ts +191 -0
- package/dist/actions-v2/CreateOrderItemFromBrskDto.js +52 -0
- package/dist/entities-v2/Order.d.ts +7 -0
- package/dist/entities-v2/Order.js +2 -0
- package/dist/entities-v2/OrderItem.d.ts +7 -0
- package/dist/entities-v2/OrderItem.js +2 -0
- package/dist/entities-v2/Product.d.ts +0 -42
- package/dist/entities-v2/Product.js +0 -2
- package/dist/records-v2/AccountCreditRecord.d.ts +62 -1
- package/dist/records-v2/AccountCreditRecord.js +91 -0
- package/dist/records-v2/AccountRecord.d.ts +306 -2
- package/dist/records-v2/AccountRecord.js +451 -0
- package/dist/records-v2/ActivityLogRecord.d.ts +122 -1
- package/dist/records-v2/ActivityLogRecord.js +190 -0
- package/dist/records-v2/ActivityRecord.d.ts +255 -2
- package/dist/records-v2/ActivityRecord.js +387 -0
- package/dist/records-v2/AddressRecord.d.ts +321 -0
- package/dist/records-v2/AddressRecord.js +532 -0
- package/dist/records-v2/AffiliateCodeRecord.d.ts +102 -1
- package/dist/records-v2/AffiliateCodeRecord.js +157 -0
- package/dist/records-v2/AppointmentRecord.d.ts +141 -0
- package/dist/records-v2/AppointmentRecord.js +235 -0
- package/dist/records-v2/BillingAdjustmentRecord.d.ts +81 -0
- package/dist/records-v2/BillingAdjustmentRecord.js +136 -0
- package/dist/records-v2/BillingRequestRecord.d.ts +178 -2
- package/dist/records-v2/BillingRequestRecord.js +271 -0
- package/dist/records-v2/BlockageA55Record.d.ts +103 -2
- package/dist/records-v2/BlockageA55Record.js +157 -0
- package/dist/records-v2/BrskEntityMigrationErrorRecord.d.ts +21 -1
- package/dist/records-v2/BrskEntityMigrationErrorRecord.js +21 -0
- package/dist/records-v2/CallEventRecord.d.ts +82 -1
- package/dist/records-v2/CallEventRecord.js +124 -0
- package/dist/records-v2/CallLegRecord.d.ts +82 -1
- package/dist/records-v2/CallLegRecord.js +124 -0
- package/dist/records-v2/CallRecord.d.ts +202 -1
- package/dist/records-v2/CallRecord.js +322 -0
- package/dist/records-v2/CallTransferRecord.d.ts +102 -1
- package/dist/records-v2/CallTransferRecord.js +157 -0
- package/dist/records-v2/CampaignRecord.d.ts +83 -2
- package/dist/records-v2/CampaignRecord.js +124 -0
- package/dist/records-v2/CaseRecord.d.ts +418 -2
- package/dist/records-v2/CaseRecord.js +667 -0
- package/dist/records-v2/ChangeReasonRecord.d.ts +171 -2
- package/dist/records-v2/ChangeReasonRecord.js +238 -0
- package/dist/records-v2/ChurnRequestRecord.d.ts +62 -1
- package/dist/records-v2/ChurnRequestRecord.js +91 -0
- package/dist/records-v2/ContactRecord.d.ts +560 -0
- package/dist/records-v2/ContactRecord.js +927 -0
- package/dist/records-v2/ContractBuyOutRecord.d.ts +162 -1
- package/dist/records-v2/ContractBuyOutRecord.js +256 -0
- package/dist/records-v2/ConversationFeedbackRecord.d.ts +102 -1
- package/dist/records-v2/ConversationFeedbackRecord.js +157 -0
- package/dist/records-v2/ConversationRecord.d.ts +102 -1
- package/dist/records-v2/ConversationRecord.js +157 -0
- package/dist/records-v2/CreditNoteRecord.d.ts +81 -0
- package/dist/records-v2/CreditNoteRecord.js +136 -0
- package/dist/records-v2/CrmDatasetRecord.d.ts +191 -2
- package/dist/records-v2/CrmDatasetRecord.js +271 -0
- package/dist/records-v2/CustomerDeviceAtaRecord.d.ts +21 -0
- package/dist/records-v2/CustomerDeviceAtaRecord.js +37 -0
- package/dist/records-v2/CustomerDeviceConfigurationRecord.d.ts +62 -1
- package/dist/records-v2/CustomerDeviceConfigurationRecord.js +91 -0
- package/dist/records-v2/CustomerDeviceOntRecord.d.ts +181 -0
- package/dist/records-v2/CustomerDeviceOntRecord.js +301 -0
- package/dist/records-v2/CustomerDeviceRouterRecord.d.ts +141 -0
- package/dist/records-v2/CustomerDeviceRouterRecord.js +235 -0
- package/dist/records-v2/CustomerPhonePortingRecord.d.ts +21 -0
- package/dist/records-v2/CustomerPhonePortingRecord.js +37 -0
- package/dist/records-v2/DiscountRecord.d.ts +121 -0
- package/dist/records-v2/DiscountRecord.js +202 -0
- package/dist/records-v2/EmailRecord.d.ts +230 -2
- package/dist/records-v2/EmailRecord.js +336 -0
- package/dist/records-v2/EmailSenderRecord.d.ts +42 -1
- package/dist/records-v2/EmailSenderRecord.js +58 -0
- package/dist/records-v2/EmailTemplateRecord.d.ts +21 -1
- package/dist/records-v2/EmailTemplateRecord.js +21 -0
- package/dist/records-v2/FieldServiceDispatchedProductRecord.d.ts +135 -2
- package/dist/records-v2/FieldServiceDispatchedProductRecord.js +189 -0
- package/dist/records-v2/FieldServiceProductRecord.d.ts +115 -2
- package/dist/records-v2/FieldServiceProductRecord.js +156 -0
- package/dist/records-v2/FileRecord.d.ts +1211 -2
- package/dist/records-v2/FileRecord.js +1902 -0
- package/dist/records-v2/ImpersonationTrackerRecord.d.ts +62 -1
- package/dist/records-v2/ImpersonationTrackerRecord.js +91 -0
- package/dist/records-v2/InternalInstallAuditRecord.d.ts +83 -2
- package/dist/records-v2/InternalInstallAuditRecord.js +124 -0
- package/dist/records-v2/InvoiceItemRecord.d.ts +40 -0
- package/dist/records-v2/InvoiceItemRecord.js +69 -0
- package/dist/records-v2/InvoiceRecord.d.ts +399 -2
- package/dist/records-v2/InvoiceRecord.js +635 -0
- package/dist/records-v2/KnowledgeArticleRecord.d.ts +98 -2
- package/dist/records-v2/KnowledgeArticleRecord.js +139 -0
- package/dist/records-v2/LeadRecord.d.ts +261 -0
- package/dist/records-v2/LeadRecord.js +433 -0
- package/dist/records-v2/MessageRecord.d.ts +99 -2
- package/dist/records-v2/MessageRecord.js +140 -0
- package/dist/records-v2/NetworkDeviceRecord.d.ts +43 -2
- package/dist/records-v2/NetworkDeviceRecord.js +58 -0
- package/dist/records-v2/NoteRecord.d.ts +1121 -1
- package/dist/records-v2/NoteRecord.js +1839 -0
- package/dist/records-v2/OfferRecord.d.ts +154 -2
- package/dist/records-v2/OfferRecord.js +221 -0
- package/dist/records-v2/OhAuditOfInstallationRecord.d.ts +83 -2
- package/dist/records-v2/OhAuditOfInstallationRecord.js +124 -0
- package/dist/records-v2/OhExternalAuditRecord.d.ts +83 -2
- package/dist/records-v2/OhExternalAuditRecord.js +124 -0
- package/dist/records-v2/OhInProgressAuditRecord.d.ts +83 -2
- package/dist/records-v2/OhInProgressAuditRecord.js +124 -0
- package/dist/records-v2/OhInstallationAuditRecord.d.ts +83 -2
- package/dist/records-v2/OhInstallationAuditRecord.js +124 -0
- package/dist/records-v2/OhRetroAuditRecord.d.ts +83 -2
- package/dist/records-v2/OhRetroAuditRecord.js +124 -0
- package/dist/records-v2/OneTouchSwitchRecord.d.ts +255 -2
- package/dist/records-v2/OneTouchSwitchRecord.js +387 -0
- package/dist/records-v2/OntReplacementApprovalRecord.d.ts +62 -1
- package/dist/records-v2/OntReplacementApprovalRecord.js +91 -0
- package/dist/records-v2/OrderCheckRecord.d.ts +21 -0
- package/dist/records-v2/OrderCheckRecord.js +37 -0
- package/dist/records-v2/OrderItemRecord.d.ts +309 -0
- package/dist/records-v2/OrderItemRecord.js +501 -0
- package/dist/records-v2/OrderKciRecord.d.ts +42 -1
- package/dist/records-v2/OrderKciRecord.js +58 -0
- package/dist/records-v2/OrderRecord.d.ts +620 -0
- package/dist/records-v2/OrderRecord.js +1026 -0
- package/dist/records-v2/OutageRecord.d.ts +42 -1
- package/dist/records-v2/OutageRecord.js +58 -0
- package/dist/records-v2/OverlayRealA55Record.d.ts +83 -2
- package/dist/records-v2/OverlayRealA55Record.js +124 -0
- package/dist/records-v2/PICRequestRecord.d.ts +62 -1
- package/dist/records-v2/PICRequestRecord.js +91 -0
- package/dist/records-v2/PaymentMethodRecord.d.ts +121 -0
- package/dist/records-v2/PaymentMethodRecord.js +202 -0
- package/dist/records-v2/PaymentMethodRefundRecord.d.ts +181 -0
- package/dist/records-v2/PaymentMethodRefundRecord.js +301 -0
- package/dist/records-v2/PaymentRecord.d.ts +82 -1
- package/dist/records-v2/PaymentRecord.js +124 -0
- package/dist/records-v2/PermissionToFailRecord.d.ts +61 -0
- package/dist/records-v2/PermissionToFailRecord.js +103 -0
- package/dist/records-v2/PgAccountValidationRecord.d.ts +21 -1
- package/dist/records-v2/PgAccountValidationRecord.js +21 -0
- package/dist/records-v2/PgContactRecord.d.ts +62 -1
- package/dist/records-v2/PgContactRecord.js +91 -0
- package/dist/records-v2/PgDirectDebitFileRecord.d.ts +95 -2
- package/dist/records-v2/PgDirectDebitFileRecord.js +123 -0
- package/dist/records-v2/PgDisputeRecord.d.ts +62 -1
- package/dist/records-v2/PgDisputeRecord.js +91 -0
- package/dist/records-v2/PgFileAllocationRecord.d.ts +115 -2
- package/dist/records-v2/PgFileAllocationRecord.js +156 -0
- package/dist/records-v2/PgLogRecord.d.ts +21 -1
- package/dist/records-v2/PgLogRecord.js +21 -0
- package/dist/records-v2/PgPaymentMethodRecord.d.ts +102 -1
- package/dist/records-v2/PgPaymentMethodRecord.js +157 -0
- package/dist/records-v2/PgSortCodeSubstitutionRecord.d.ts +21 -1
- package/dist/records-v2/PgSortCodeSubstitutionRecord.js +21 -0
- package/dist/records-v2/PgTransactionRecord.d.ts +135 -2
- package/dist/records-v2/PgTransactionRecord.js +189 -0
- package/dist/records-v2/PgVocalinkRecord.d.ts +21 -1
- package/dist/records-v2/PgVocalinkRecord.js +21 -0
- package/dist/records-v2/PgWebhookAttemptRecord.d.ts +42 -1
- package/dist/records-v2/PgWebhookAttemptRecord.js +58 -0
- package/dist/records-v2/PgWebhookRecord.d.ts +122 -1
- package/dist/records-v2/PgWebhookRecord.js +190 -0
- package/dist/records-v2/PhoneNumberRecord.d.ts +41 -0
- package/dist/records-v2/PhoneNumberRecord.js +70 -0
- package/dist/records-v2/PriceBookRecord.d.ts +21 -0
- package/dist/records-v2/PriceBookRecord.js +37 -0
- package/dist/records-v2/ProductRecord.d.ts +258 -2
- package/dist/records-v2/ProductRecord.js +351 -0
- package/dist/records-v2/PushNotificationRecord.d.ts +162 -1
- package/dist/records-v2/PushNotificationRecord.js +256 -0
- package/dist/records-v2/ReferralRecord.d.ts +143 -2
- package/dist/records-v2/ReferralRecord.js +223 -0
- package/dist/records-v2/RemediationOutcomeFormRecord.d.ts +83 -2
- package/dist/records-v2/RemediationOutcomeFormRecord.js +124 -0
- package/dist/records-v2/RemediationRequiredReasonRecord.d.ts +103 -2
- package/dist/records-v2/RemediationRequiredReasonRecord.js +157 -0
- package/dist/records-v2/ReturnsRecord.d.ts +62 -1
- package/dist/records-v2/ReturnsRecord.js +91 -0
- package/dist/records-v2/RewardRecord.d.ts +123 -2
- package/dist/records-v2/RewardRecord.js +190 -0
- package/dist/records-v2/SalesTerritoryRecord.d.ts +79 -2
- package/dist/records-v2/SalesTerritoryRecord.js +107 -0
- package/dist/records-v2/ScheduleSlotRecord.d.ts +42 -1
- package/dist/records-v2/ScheduleSlotRecord.js +58 -0
- package/dist/records-v2/ServiceAppointmentConfigRecord.d.ts +287 -2
- package/dist/records-v2/ServiceAppointmentConfigRecord.js +367 -0
- package/dist/records-v2/ServiceAppointmentRecord.d.ts +81 -0
- package/dist/records-v2/ServiceAppointmentRecord.js +136 -0
- package/dist/records-v2/ServiceRecord.d.ts +40 -0
- package/dist/records-v2/ServiceRecord.js +69 -0
- package/dist/records-v2/ServiceVisitAuditRecord.d.ts +83 -2
- package/dist/records-v2/ServiceVisitAuditRecord.js +124 -0
- package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.d.ts +83 -2
- package/dist/records-v2/SiteSpecificRiskAssessmentOutcomeFormRecord.js +124 -0
- package/dist/records-v2/SmsMessageRecord.d.ts +175 -2
- package/dist/records-v2/SmsMessageRecord.js +255 -0
- package/dist/records-v2/SweeperMaintenanceAuditRecord.d.ts +83 -2
- package/dist/records-v2/SweeperMaintenanceAuditRecord.js +124 -0
- package/dist/records-v2/TeamRecord.d.ts +101 -0
- package/dist/records-v2/TeamRecord.js +169 -0
- package/dist/records-v2/TestEntityForVisualBuilderRecord.d.ts +115 -2
- package/dist/records-v2/TestEntityForVisualBuilderRecord.js +156 -0
- package/dist/records-v2/TimeSlotRecord.d.ts +21 -0
- package/dist/records-v2/TimeSlotRecord.js +37 -0
- package/dist/records-v2/TransactionRecord.d.ts +181 -1
- package/dist/records-v2/TransactionRecord.js +288 -0
- package/dist/records-v2/TwilioUserUpdateRecord.d.ts +42 -1
- package/dist/records-v2/TwilioUserUpdateRecord.js +58 -0
- package/dist/records-v2/UgAuditOfInstallationRecord.d.ts +83 -2
- package/dist/records-v2/UgAuditOfInstallationRecord.js +124 -0
- package/dist/records-v2/UgExternalAuditRecord.d.ts +83 -2
- package/dist/records-v2/UgExternalAuditRecord.js +124 -0
- package/dist/records-v2/UgInProgressAuditRecord.d.ts +83 -2
- package/dist/records-v2/UgInProgressAuditRecord.js +124 -0
- package/dist/records-v2/UgInstallationAuditRecord.d.ts +83 -2
- package/dist/records-v2/UgInstallationAuditRecord.js +124 -0
- package/dist/records-v2/UgRetroAuditRecord.d.ts +83 -2
- package/dist/records-v2/UgRetroAuditRecord.js +124 -0
- package/dist/records-v2/UserRecord.d.ts +400 -0
- package/dist/records-v2/UserRecord.js +663 -0
- package/dist/records-v2/VisitRecord.d.ts +121 -0
- package/dist/records-v2/VisitRecord.js +202 -0
- package/dist/records-v2/VoiceConfigurationRecord.d.ts +21 -0
- package/dist/records-v2/VoiceConfigurationRecord.js +37 -0
- package/dist/records-v2/WayleaveAuditRecord.d.ts +83 -2
- package/dist/records-v2/WayleaveAuditRecord.js +124 -0
- package/dist/records-v2/WorkOrderRecord.d.ts +1226 -2
- package/dist/records-v2/WorkOrderRecord.js +1865 -0
- package/dist/records-v2/WorkOrderStatusUpdateRecord.d.ts +75 -2
- package/dist/records-v2/WorkOrderStatusUpdateRecord.js +90 -0
- package/dist/records-v2/YfFieldServiceVisitRecord.d.ts +83 -2
- package/dist/records-v2/YfFieldServiceVisitRecord.js +124 -0
- package/dist/records-v2/YfStockAuditRecord.d.ts +103 -2
- package/dist/records-v2/YfStockAuditRecord.js +157 -0
- package/dist/records-v2/index.d.ts +1 -1
- package/dist/records-v2/index.js +5 -5
- package/package.json +1 -1
|
@@ -14,6 +14,8 @@
|
|
|
14
14
|
* await record.createAffiliateCode({ ... }).execute();
|
|
15
15
|
* ```
|
|
16
16
|
*
|
|
17
|
+
* Entity Types: DEFAULT
|
|
18
|
+
*
|
|
17
19
|
* AUTO-GENERATED - DO NOT EDIT DIRECTLY
|
|
18
20
|
*/
|
|
19
21
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
@@ -29,6 +31,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
31
|
exports.isAffiliateCodeRecord = exports.AffiliateCodeRecord = void 0;
|
|
30
32
|
const uuid_1 = require("uuid");
|
|
31
33
|
const core_1 = require("@d19n/odin-types/dist/core");
|
|
34
|
+
const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
|
|
35
|
+
const CampaignRecord_1 = require("./CampaignRecord");
|
|
36
|
+
const ContactRecord_1 = require("./ContactRecord");
|
|
37
|
+
const ReferralRecord_1 = require("./ReferralRecord");
|
|
38
|
+
const RewardRecord_1 = require("./RewardRecord");
|
|
32
39
|
/**
|
|
33
40
|
* Builder for action execution with dryRun support
|
|
34
41
|
*
|
|
@@ -140,6 +147,145 @@ class AffiliateCodeRecord {
|
|
|
140
147
|
/** Access the underlying OdinRecord (null for new records) */
|
|
141
148
|
get record() { return this._record; }
|
|
142
149
|
// ============================================
|
|
150
|
+
// TYPE GUARDS (with TypeScript type predicates)
|
|
151
|
+
// ============================================
|
|
152
|
+
/**
|
|
153
|
+
* Type guard: check if this record is of type DEFAULT
|
|
154
|
+
*
|
|
155
|
+
* When this returns true, TypeScript automatically narrows the type,
|
|
156
|
+
* giving you access to DEFAULT-specific properties.
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* if (record.isDefault()) {
|
|
161
|
+
* // TypeScript knows record.properties is AffiliateCodeProperties
|
|
162
|
+
* console.log(record.properties.SomeTypeSpecificField);
|
|
163
|
+
* }
|
|
164
|
+
* ```
|
|
165
|
+
* @remarks This is the default record type
|
|
166
|
+
*/
|
|
167
|
+
isDefault() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.type) === 'DEFAULT'; }
|
|
168
|
+
/**
|
|
169
|
+
* Access linked Campaign records
|
|
170
|
+
* @remarks Available labels: CampaignAffiliateCodes
|
|
171
|
+
* @throws Error if called on a new (unsaved) record
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* ```typescript
|
|
175
|
+
* // Get all linked Campaign records
|
|
176
|
+
* const items = await record.campaigns.list();
|
|
177
|
+
* const first = await record.campaigns.first();
|
|
178
|
+
*
|
|
179
|
+
* // Filter by label
|
|
180
|
+
* const specific = await record.campaigns.first({ label: 'CampaignAffiliateCodes' });
|
|
181
|
+
* ```
|
|
182
|
+
*/
|
|
183
|
+
get campaigns() {
|
|
184
|
+
var _a;
|
|
185
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
186
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
187
|
+
if (!this._campaigns) {
|
|
188
|
+
this._campaigns = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
189
|
+
sourceEntity: 'CrmModule:AffiliateCode',
|
|
190
|
+
targetEntity: 'CrmModule:Campaign',
|
|
191
|
+
targetModuleName: 'CrmModule',
|
|
192
|
+
targetEntityName: 'Campaign',
|
|
193
|
+
labels: ['CampaignAffiliateCodes'],
|
|
194
|
+
}, CampaignRecord_1.CampaignRecord);
|
|
195
|
+
}
|
|
196
|
+
return this._campaigns;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Access linked Contact records
|
|
200
|
+
* @remarks Available labels: ContactAffiliateCodes
|
|
201
|
+
* @throws Error if called on a new (unsaved) record
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* // Get all linked Contact records
|
|
206
|
+
* const items = await record.contacts.list();
|
|
207
|
+
* const first = await record.contacts.first();
|
|
208
|
+
*
|
|
209
|
+
* // Filter by label
|
|
210
|
+
* const specific = await record.contacts.first({ label: 'ContactAffiliateCodes' });
|
|
211
|
+
* ```
|
|
212
|
+
*/
|
|
213
|
+
get contacts() {
|
|
214
|
+
var _a;
|
|
215
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
216
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
217
|
+
if (!this._contacts) {
|
|
218
|
+
this._contacts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
219
|
+
sourceEntity: 'CrmModule:AffiliateCode',
|
|
220
|
+
targetEntity: 'CrmModule:Contact',
|
|
221
|
+
targetModuleName: 'CrmModule',
|
|
222
|
+
targetEntityName: 'Contact',
|
|
223
|
+
labels: ['ContactAffiliateCodes'],
|
|
224
|
+
}, ContactRecord_1.ContactRecord);
|
|
225
|
+
}
|
|
226
|
+
return this._contacts;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Access linked Referral records
|
|
230
|
+
* @remarks Available labels: AffiliateCodeReferrals
|
|
231
|
+
* @throws Error if called on a new (unsaved) record
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```typescript
|
|
235
|
+
* // Get all linked Referral records
|
|
236
|
+
* const items = await record.referrals.list();
|
|
237
|
+
* const first = await record.referrals.first();
|
|
238
|
+
*
|
|
239
|
+
* // Filter by label
|
|
240
|
+
* const specific = await record.referrals.first({ label: 'AffiliateCodeReferrals' });
|
|
241
|
+
* ```
|
|
242
|
+
*/
|
|
243
|
+
get referrals() {
|
|
244
|
+
var _a;
|
|
245
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
246
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
247
|
+
if (!this._referrals) {
|
|
248
|
+
this._referrals = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
249
|
+
sourceEntity: 'CrmModule:AffiliateCode',
|
|
250
|
+
targetEntity: 'CrmModule:Referral',
|
|
251
|
+
targetModuleName: 'CrmModule',
|
|
252
|
+
targetEntityName: 'Referral',
|
|
253
|
+
labels: ['AffiliateCodeReferrals'],
|
|
254
|
+
}, ReferralRecord_1.ReferralRecord);
|
|
255
|
+
}
|
|
256
|
+
return this._referrals;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Access linked Reward records
|
|
260
|
+
* @remarks Available labels: AffiliateCodeRewards
|
|
261
|
+
* @throws Error if called on a new (unsaved) record
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* // Get all linked Reward records
|
|
266
|
+
* const items = await record.rewards.list();
|
|
267
|
+
* const first = await record.rewards.first();
|
|
268
|
+
*
|
|
269
|
+
* // Filter by label
|
|
270
|
+
* const specific = await record.rewards.first({ label: 'AffiliateCodeRewards' });
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
get rewards() {
|
|
274
|
+
var _a;
|
|
275
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
276
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
277
|
+
if (!this._rewards) {
|
|
278
|
+
this._rewards = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
279
|
+
sourceEntity: 'CrmModule:AffiliateCode',
|
|
280
|
+
targetEntity: 'CrmModule:Reward',
|
|
281
|
+
targetModuleName: 'CrmModule',
|
|
282
|
+
targetEntityName: 'Reward',
|
|
283
|
+
labels: ['AffiliateCodeRewards'],
|
|
284
|
+
}, RewardRecord_1.RewardRecord);
|
|
285
|
+
}
|
|
286
|
+
return this._rewards;
|
|
287
|
+
}
|
|
288
|
+
// ============================================
|
|
143
289
|
// LINK MANAGEMENT
|
|
144
290
|
// ============================================
|
|
145
291
|
/**
|
|
@@ -215,6 +361,17 @@ class AffiliateCodeRecord {
|
|
|
215
361
|
}
|
|
216
362
|
}
|
|
217
363
|
exports.AffiliateCodeRecord = AffiliateCodeRecord;
|
|
364
|
+
// ============================================
|
|
365
|
+
// TYPED LINK ACCESSORS
|
|
366
|
+
// ============================================
|
|
367
|
+
/** Valid labels for Campaign associations */
|
|
368
|
+
AffiliateCodeRecord.campaignsLabels = ['CampaignAffiliateCodes'];
|
|
369
|
+
/** Valid labels for Contact associations */
|
|
370
|
+
AffiliateCodeRecord.contactsLabels = ['ContactAffiliateCodes'];
|
|
371
|
+
/** Valid labels for Referral associations */
|
|
372
|
+
AffiliateCodeRecord.referralsLabels = ['AffiliateCodeReferrals'];
|
|
373
|
+
/** Valid labels for Reward associations */
|
|
374
|
+
AffiliateCodeRecord.rewardsLabels = ['AffiliateCodeRewards'];
|
|
218
375
|
/** Type guard to check if an object is a AffiliateCodeRecord */
|
|
219
376
|
function isAffiliateCodeRecord(obj) {
|
|
220
377
|
return obj instanceof AffiliateCodeRecord;
|
|
@@ -19,8 +19,16 @@ import { OdinRecord, OdinRecordLinkDto } from '@d19n/odin-types/dist/core';
|
|
|
19
19
|
import { PipelineStageEntity } from '@d19n/odin-types/dist/core';
|
|
20
20
|
import { IDbRecordCreateUpdateRes } from '@d19n/odin-types/dist/core/interfaces/v1.db.interfaces';
|
|
21
21
|
import { IOdinProvider } from '@d19n/odin-sdk-generator/dist/odin-sdk-types';
|
|
22
|
+
import { RecordLinkManager } from '@d19n/odin-sdk-generator/dist/record-link-manager';
|
|
22
23
|
import { AppointmentProperties } from '../entities-v2/Appointment';
|
|
23
24
|
import { CreateAppointmentProperties } from '../actions-v2/CreateAppointmentDto';
|
|
25
|
+
import { FileRecord } from './FileRecord';
|
|
26
|
+
import { AddressRecord } from './AddressRecord';
|
|
27
|
+
import { NoteRecord } from './NoteRecord';
|
|
28
|
+
import { VisitRecord } from './VisitRecord';
|
|
29
|
+
import { ContactRecord } from './ContactRecord';
|
|
30
|
+
import { OrderRecord } from './OrderRecord';
|
|
31
|
+
import { LeadRecord } from './LeadRecord';
|
|
24
32
|
/**
|
|
25
33
|
* Builder for action execution with dryRun support
|
|
26
34
|
*
|
|
@@ -84,6 +92,13 @@ export declare class AppointmentRecord<TProps = AppointmentProperties> {
|
|
|
84
92
|
private _provider;
|
|
85
93
|
private _pendingLinks;
|
|
86
94
|
private _preGeneratedId;
|
|
95
|
+
private _files?;
|
|
96
|
+
private _addresses?;
|
|
97
|
+
private _notes?;
|
|
98
|
+
private _visits?;
|
|
99
|
+
private _contacts?;
|
|
100
|
+
private _orders?;
|
|
101
|
+
private _leads?;
|
|
87
102
|
/**
|
|
88
103
|
* Create a record wrapper.
|
|
89
104
|
* @param record - The underlying record, or null for create operations
|
|
@@ -109,6 +124,132 @@ export declare class AppointmentRecord<TProps = AppointmentProperties> {
|
|
|
109
124
|
get groups(): string[];
|
|
110
125
|
/** Access the underlying OdinRecord (null for new records) */
|
|
111
126
|
get record(): OdinRecord<TProps> | null;
|
|
127
|
+
/** Valid labels for File associations */
|
|
128
|
+
static readonly filesLabels: readonly ["Appointment__File"];
|
|
129
|
+
/**
|
|
130
|
+
* Access linked File records
|
|
131
|
+
* @remarks Available labels: Appointment__File
|
|
132
|
+
* @throws Error if called on a new (unsaved) record
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* ```typescript
|
|
136
|
+
* // Get all linked File records
|
|
137
|
+
* const items = await record.files.list();
|
|
138
|
+
* const first = await record.files.first();
|
|
139
|
+
*
|
|
140
|
+
* // Filter by label
|
|
141
|
+
* const specific = await record.files.first({ label: 'Appointment__File' });
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
get files(): RecordLinkManager<FileRecord, typeof AppointmentRecord['filesLabels'][number]>;
|
|
145
|
+
/** Valid labels for Address associations */
|
|
146
|
+
static readonly addressesLabels: readonly ["Address__Appointment"];
|
|
147
|
+
/**
|
|
148
|
+
* Access linked Address records
|
|
149
|
+
* @remarks Available labels: Address__Appointment
|
|
150
|
+
* @throws Error if called on a new (unsaved) record
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* // Get all linked Address records
|
|
155
|
+
* const items = await record.addresses.list();
|
|
156
|
+
* const first = await record.addresses.first();
|
|
157
|
+
*
|
|
158
|
+
* // Filter by label
|
|
159
|
+
* const specific = await record.addresses.first({ label: 'Address__Appointment' });
|
|
160
|
+
* ```
|
|
161
|
+
*/
|
|
162
|
+
get addresses(): RecordLinkManager<AddressRecord, typeof AppointmentRecord['addressesLabels'][number]>;
|
|
163
|
+
/** Valid labels for Note associations */
|
|
164
|
+
static readonly notesLabels: readonly ["Appointment__Note"];
|
|
165
|
+
/**
|
|
166
|
+
* Access linked Note records
|
|
167
|
+
* @remarks Available labels: Appointment__Note
|
|
168
|
+
* @throws Error if called on a new (unsaved) record
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* // Get all linked Note records
|
|
173
|
+
* const items = await record.notes.list();
|
|
174
|
+
* const first = await record.notes.first();
|
|
175
|
+
*
|
|
176
|
+
* // Filter by label
|
|
177
|
+
* const specific = await record.notes.first({ label: 'Appointment__Note' });
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
get notes(): RecordLinkManager<NoteRecord, typeof AppointmentRecord['notesLabels'][number]>;
|
|
181
|
+
/** Valid labels for Visit associations */
|
|
182
|
+
static readonly visitsLabels: readonly ["Visit__Appointment"];
|
|
183
|
+
/**
|
|
184
|
+
* Access linked Visit records
|
|
185
|
+
* @remarks Available labels: Visit__Appointment
|
|
186
|
+
* @throws Error if called on a new (unsaved) record
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```typescript
|
|
190
|
+
* // Get all linked Visit records
|
|
191
|
+
* const items = await record.visits.list();
|
|
192
|
+
* const first = await record.visits.first();
|
|
193
|
+
*
|
|
194
|
+
* // Filter by label
|
|
195
|
+
* const specific = await record.visits.first({ label: 'Visit__Appointment' });
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
get visits(): RecordLinkManager<VisitRecord, typeof AppointmentRecord['visitsLabels'][number]>;
|
|
199
|
+
/** Valid labels for Contact associations */
|
|
200
|
+
static readonly contactsLabels: readonly ["Contact__Appointment"];
|
|
201
|
+
/**
|
|
202
|
+
* Access linked Contact records
|
|
203
|
+
* @remarks Available labels: Contact__Appointment
|
|
204
|
+
* @throws Error if called on a new (unsaved) record
|
|
205
|
+
*
|
|
206
|
+
* @example
|
|
207
|
+
* ```typescript
|
|
208
|
+
* // Get all linked Contact records
|
|
209
|
+
* const items = await record.contacts.list();
|
|
210
|
+
* const first = await record.contacts.first();
|
|
211
|
+
*
|
|
212
|
+
* // Filter by label
|
|
213
|
+
* const specific = await record.contacts.first({ label: 'Contact__Appointment' });
|
|
214
|
+
* ```
|
|
215
|
+
*/
|
|
216
|
+
get contacts(): RecordLinkManager<ContactRecord, typeof AppointmentRecord['contactsLabels'][number]>;
|
|
217
|
+
/** Valid labels for Order associations */
|
|
218
|
+
static readonly ordersLabels: readonly ["Order__Appointment"];
|
|
219
|
+
/**
|
|
220
|
+
* Access linked Order records
|
|
221
|
+
* @remarks Available labels: Order__Appointment
|
|
222
|
+
* @throws Error if called on a new (unsaved) record
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```typescript
|
|
226
|
+
* // Get all linked Order records
|
|
227
|
+
* const items = await record.orders.list();
|
|
228
|
+
* const first = await record.orders.first();
|
|
229
|
+
*
|
|
230
|
+
* // Filter by label
|
|
231
|
+
* const specific = await record.orders.first({ label: 'Order__Appointment' });
|
|
232
|
+
* ```
|
|
233
|
+
*/
|
|
234
|
+
get orders(): RecordLinkManager<OrderRecord, typeof AppointmentRecord['ordersLabels'][number]>;
|
|
235
|
+
/** Valid labels for Lead associations */
|
|
236
|
+
static readonly leadsLabels: readonly ["Lead_Appointment"];
|
|
237
|
+
/**
|
|
238
|
+
* Access linked Lead records
|
|
239
|
+
* @remarks Available labels: Lead_Appointment
|
|
240
|
+
* @throws Error if called on a new (unsaved) record
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
* ```typescript
|
|
244
|
+
* // Get all linked Lead records
|
|
245
|
+
* const items = await record.leads.list();
|
|
246
|
+
* const first = await record.leads.first();
|
|
247
|
+
*
|
|
248
|
+
* // Filter by label
|
|
249
|
+
* const specific = await record.leads.first({ label: 'Lead_Appointment' });
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
get leads(): RecordLinkManager<LeadRecord, typeof AppointmentRecord['leadsLabels'][number]>;
|
|
112
253
|
/**
|
|
113
254
|
* Queue a link to be created with the next action.
|
|
114
255
|
* Works for both create and update actions.
|
|
@@ -29,6 +29,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
29
29
|
exports.isAppointmentRecord = exports.AppointmentRecord = void 0;
|
|
30
30
|
const uuid_1 = require("uuid");
|
|
31
31
|
const core_1 = require("@d19n/odin-types/dist/core");
|
|
32
|
+
const record_link_manager_1 = require("@d19n/odin-sdk-generator/dist/record-link-manager");
|
|
33
|
+
const FileRecord_1 = require("./FileRecord");
|
|
34
|
+
const AddressRecord_1 = require("./AddressRecord");
|
|
35
|
+
const NoteRecord_1 = require("./NoteRecord");
|
|
36
|
+
const VisitRecord_1 = require("./VisitRecord");
|
|
37
|
+
const ContactRecord_1 = require("./ContactRecord");
|
|
38
|
+
const OrderRecord_1 = require("./OrderRecord");
|
|
39
|
+
const LeadRecord_1 = require("./LeadRecord");
|
|
32
40
|
/**
|
|
33
41
|
* Builder for action execution with dryRun support
|
|
34
42
|
*
|
|
@@ -139,6 +147,216 @@ class AppointmentRecord {
|
|
|
139
147
|
get groups() { var _a; return ((_a = this._record) === null || _a === void 0 ? void 0 : _a.groups) || []; }
|
|
140
148
|
/** Access the underlying OdinRecord (null for new records) */
|
|
141
149
|
get record() { return this._record; }
|
|
150
|
+
/**
|
|
151
|
+
* Access linked File records
|
|
152
|
+
* @remarks Available labels: Appointment__File
|
|
153
|
+
* @throws Error if called on a new (unsaved) record
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```typescript
|
|
157
|
+
* // Get all linked File records
|
|
158
|
+
* const items = await record.files.list();
|
|
159
|
+
* const first = await record.files.first();
|
|
160
|
+
*
|
|
161
|
+
* // Filter by label
|
|
162
|
+
* const specific = await record.files.first({ label: 'Appointment__File' });
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
get files() {
|
|
166
|
+
var _a;
|
|
167
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
168
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
169
|
+
if (!this._files) {
|
|
170
|
+
this._files = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
171
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
172
|
+
targetEntity: 'SchemaModule:File',
|
|
173
|
+
targetModuleName: 'SchemaModule',
|
|
174
|
+
targetEntityName: 'File',
|
|
175
|
+
labels: ['Appointment__File'],
|
|
176
|
+
}, FileRecord_1.FileRecord);
|
|
177
|
+
}
|
|
178
|
+
return this._files;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Access linked Address records
|
|
182
|
+
* @remarks Available labels: Address__Appointment
|
|
183
|
+
* @throws Error if called on a new (unsaved) record
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Get all linked Address records
|
|
188
|
+
* const items = await record.addresses.list();
|
|
189
|
+
* const first = await record.addresses.first();
|
|
190
|
+
*
|
|
191
|
+
* // Filter by label
|
|
192
|
+
* const specific = await record.addresses.first({ label: 'Address__Appointment' });
|
|
193
|
+
* ```
|
|
194
|
+
*/
|
|
195
|
+
get addresses() {
|
|
196
|
+
var _a;
|
|
197
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
198
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
199
|
+
if (!this._addresses) {
|
|
200
|
+
this._addresses = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
201
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
202
|
+
targetEntity: 'CrmModule:Address',
|
|
203
|
+
targetModuleName: 'CrmModule',
|
|
204
|
+
targetEntityName: 'Address',
|
|
205
|
+
labels: ['Address__Appointment'],
|
|
206
|
+
}, AddressRecord_1.AddressRecord);
|
|
207
|
+
}
|
|
208
|
+
return this._addresses;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Access linked Note records
|
|
212
|
+
* @remarks Available labels: Appointment__Note
|
|
213
|
+
* @throws Error if called on a new (unsaved) record
|
|
214
|
+
*
|
|
215
|
+
* @example
|
|
216
|
+
* ```typescript
|
|
217
|
+
* // Get all linked Note records
|
|
218
|
+
* const items = await record.notes.list();
|
|
219
|
+
* const first = await record.notes.first();
|
|
220
|
+
*
|
|
221
|
+
* // Filter by label
|
|
222
|
+
* const specific = await record.notes.first({ label: 'Appointment__Note' });
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
get notes() {
|
|
226
|
+
var _a;
|
|
227
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
228
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
229
|
+
if (!this._notes) {
|
|
230
|
+
this._notes = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
231
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
232
|
+
targetEntity: 'SupportModule:Note',
|
|
233
|
+
targetModuleName: 'SupportModule',
|
|
234
|
+
targetEntityName: 'Note',
|
|
235
|
+
labels: ['Appointment__Note'],
|
|
236
|
+
}, NoteRecord_1.NoteRecord);
|
|
237
|
+
}
|
|
238
|
+
return this._notes;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Access linked Visit records
|
|
242
|
+
* @remarks Available labels: Visit__Appointment
|
|
243
|
+
* @throws Error if called on a new (unsaved) record
|
|
244
|
+
*
|
|
245
|
+
* @example
|
|
246
|
+
* ```typescript
|
|
247
|
+
* // Get all linked Visit records
|
|
248
|
+
* const items = await record.visits.list();
|
|
249
|
+
* const first = await record.visits.first();
|
|
250
|
+
*
|
|
251
|
+
* // Filter by label
|
|
252
|
+
* const specific = await record.visits.first({ label: 'Visit__Appointment' });
|
|
253
|
+
* ```
|
|
254
|
+
*/
|
|
255
|
+
get visits() {
|
|
256
|
+
var _a;
|
|
257
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
258
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
259
|
+
if (!this._visits) {
|
|
260
|
+
this._visits = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
261
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
262
|
+
targetEntity: 'CrmModule:Visit',
|
|
263
|
+
targetModuleName: 'CrmModule',
|
|
264
|
+
targetEntityName: 'Visit',
|
|
265
|
+
labels: ['Visit__Appointment'],
|
|
266
|
+
}, VisitRecord_1.VisitRecord);
|
|
267
|
+
}
|
|
268
|
+
return this._visits;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Access linked Contact records
|
|
272
|
+
* @remarks Available labels: Contact__Appointment
|
|
273
|
+
* @throws Error if called on a new (unsaved) record
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```typescript
|
|
277
|
+
* // Get all linked Contact records
|
|
278
|
+
* const items = await record.contacts.list();
|
|
279
|
+
* const first = await record.contacts.first();
|
|
280
|
+
*
|
|
281
|
+
* // Filter by label
|
|
282
|
+
* const specific = await record.contacts.first({ label: 'Contact__Appointment' });
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
get contacts() {
|
|
286
|
+
var _a;
|
|
287
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
288
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
289
|
+
if (!this._contacts) {
|
|
290
|
+
this._contacts = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
291
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
292
|
+
targetEntity: 'CrmModule:Contact',
|
|
293
|
+
targetModuleName: 'CrmModule',
|
|
294
|
+
targetEntityName: 'Contact',
|
|
295
|
+
labels: ['Contact__Appointment'],
|
|
296
|
+
}, ContactRecord_1.ContactRecord);
|
|
297
|
+
}
|
|
298
|
+
return this._contacts;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Access linked Order records
|
|
302
|
+
* @remarks Available labels: Order__Appointment
|
|
303
|
+
* @throws Error if called on a new (unsaved) record
|
|
304
|
+
*
|
|
305
|
+
* @example
|
|
306
|
+
* ```typescript
|
|
307
|
+
* // Get all linked Order records
|
|
308
|
+
* const items = await record.orders.list();
|
|
309
|
+
* const first = await record.orders.first();
|
|
310
|
+
*
|
|
311
|
+
* // Filter by label
|
|
312
|
+
* const specific = await record.orders.first({ label: 'Order__Appointment' });
|
|
313
|
+
* ```
|
|
314
|
+
*/
|
|
315
|
+
get orders() {
|
|
316
|
+
var _a;
|
|
317
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
318
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
319
|
+
if (!this._orders) {
|
|
320
|
+
this._orders = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
321
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
322
|
+
targetEntity: 'OrderModule:Order',
|
|
323
|
+
targetModuleName: 'OrderModule',
|
|
324
|
+
targetEntityName: 'Order',
|
|
325
|
+
labels: ['Order__Appointment'],
|
|
326
|
+
}, OrderRecord_1.OrderRecord);
|
|
327
|
+
}
|
|
328
|
+
return this._orders;
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* Access linked Lead records
|
|
332
|
+
* @remarks Available labels: Lead_Appointment
|
|
333
|
+
* @throws Error if called on a new (unsaved) record
|
|
334
|
+
*
|
|
335
|
+
* @example
|
|
336
|
+
* ```typescript
|
|
337
|
+
* // Get all linked Lead records
|
|
338
|
+
* const items = await record.leads.list();
|
|
339
|
+
* const first = await record.leads.first();
|
|
340
|
+
*
|
|
341
|
+
* // Filter by label
|
|
342
|
+
* const specific = await record.leads.first({ label: 'Lead_Appointment' });
|
|
343
|
+
* ```
|
|
344
|
+
*/
|
|
345
|
+
get leads() {
|
|
346
|
+
var _a;
|
|
347
|
+
if (!((_a = this._record) === null || _a === void 0 ? void 0 : _a.id))
|
|
348
|
+
throw new Error('Cannot access links on a new (unsaved) record');
|
|
349
|
+
if (!this._leads) {
|
|
350
|
+
this._leads = new record_link_manager_1.RecordLinkManager(this._provider, this._record, {
|
|
351
|
+
sourceEntity: 'CrmModule:Appointment',
|
|
352
|
+
targetEntity: 'CrmModule:Lead',
|
|
353
|
+
targetModuleName: 'CrmModule',
|
|
354
|
+
targetEntityName: 'Lead',
|
|
355
|
+
labels: ['Lead_Appointment'],
|
|
356
|
+
}, LeadRecord_1.LeadRecord);
|
|
357
|
+
}
|
|
358
|
+
return this._leads;
|
|
359
|
+
}
|
|
142
360
|
// ============================================
|
|
143
361
|
// LINK MANAGEMENT
|
|
144
362
|
// ============================================
|
|
@@ -215,6 +433,23 @@ class AppointmentRecord {
|
|
|
215
433
|
}
|
|
216
434
|
}
|
|
217
435
|
exports.AppointmentRecord = AppointmentRecord;
|
|
436
|
+
// ============================================
|
|
437
|
+
// TYPED LINK ACCESSORS
|
|
438
|
+
// ============================================
|
|
439
|
+
/** Valid labels for File associations */
|
|
440
|
+
AppointmentRecord.filesLabels = ['Appointment__File'];
|
|
441
|
+
/** Valid labels for Address associations */
|
|
442
|
+
AppointmentRecord.addressesLabels = ['Address__Appointment'];
|
|
443
|
+
/** Valid labels for Note associations */
|
|
444
|
+
AppointmentRecord.notesLabels = ['Appointment__Note'];
|
|
445
|
+
/** Valid labels for Visit associations */
|
|
446
|
+
AppointmentRecord.visitsLabels = ['Visit__Appointment'];
|
|
447
|
+
/** Valid labels for Contact associations */
|
|
448
|
+
AppointmentRecord.contactsLabels = ['Contact__Appointment'];
|
|
449
|
+
/** Valid labels for Order associations */
|
|
450
|
+
AppointmentRecord.ordersLabels = ['Order__Appointment'];
|
|
451
|
+
/** Valid labels for Lead associations */
|
|
452
|
+
AppointmentRecord.leadsLabels = ['Lead_Appointment'];
|
|
218
453
|
/** Type guard to check if an object is a AppointmentRecord */
|
|
219
454
|
function isAppointmentRecord(obj) {
|
|
220
455
|
return obj instanceof AppointmentRecord;
|