@dv4resi/dvss-backend-module-offering-im 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +178 -8
- package/dist/index.js +132 -18
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CONFIGURED_FOR_TYPE_ENUM, MEDIA_PROVIDER_ENUM, DAY_OF_WEEK, OFFERING_RESOURCE_TYPE, STATUS } from '@dv4resi/dvss-backend-module-datastore/dist/datastore/models';
|
|
2
|
-
import { LoggerService, GraphQLContext, AddAPIResponse } from '@dv4resi/dvss-backend-module-utility';
|
|
2
|
+
import { LoggerService, GraphQLContext, IMedia, AddAPIResponse } from '@dv4resi/dvss-backend-module-utility';
|
|
3
3
|
import { HttpService } from '@nestjs/axios';
|
|
4
4
|
import { CAPABILITY_PROVIDER_INTEGRATION_ENUM, CAPABILITY_CATEGORY_ENUM, ICapability } from '@dv4resi/dvss-backend-module-datastore/dist/datastore/models/capability.model';
|
|
5
5
|
import { schema, CommonValidationDatabaseService as CommonValidationDatabaseService$1 } from '@dv4resi/dvss-backend-module-datastore';
|
|
@@ -528,8 +528,9 @@ interface ICreateOrderRequest {
|
|
|
528
528
|
}
|
|
529
529
|
interface ICreateOrderResponse {
|
|
530
530
|
externalBookingId: string;
|
|
531
|
-
items: (IBookableItem & {
|
|
531
|
+
items: (Pick<IBookableItem, 'externalId' | 'type' | 'name'> & {
|
|
532
532
|
totalPrice?: number;
|
|
533
|
+
primaryAsset?: IMedia;
|
|
533
534
|
})[];
|
|
534
535
|
}
|
|
535
536
|
interface IAddItemToOrderItemConfig {
|
|
@@ -1166,11 +1167,6 @@ interface ITrybeAddOrderItemResponse {
|
|
|
1166
1167
|
net_total?: number;
|
|
1167
1168
|
};
|
|
1168
1169
|
}
|
|
1169
|
-
interface ITrybeSubmitOrderResponse {
|
|
1170
|
-
data: {
|
|
1171
|
-
id: string;
|
|
1172
|
-
};
|
|
1173
|
-
}
|
|
1174
1170
|
interface ITrybeCancelOrderResponse {
|
|
1175
1171
|
data: {
|
|
1176
1172
|
id: string;
|
|
@@ -1203,6 +1199,15 @@ interface ITrybeZone {
|
|
|
1203
1199
|
interface ITrybeCreateOrderResponse extends ICreateOrderResponse {
|
|
1204
1200
|
meta: {
|
|
1205
1201
|
orderReference: string;
|
|
1202
|
+
room?: {
|
|
1203
|
+
id: string;
|
|
1204
|
+
name: string;
|
|
1205
|
+
capacity: number;
|
|
1206
|
+
};
|
|
1207
|
+
total: number;
|
|
1208
|
+
subTotal: number;
|
|
1209
|
+
totalTax: number;
|
|
1210
|
+
discount: number;
|
|
1206
1211
|
};
|
|
1207
1212
|
}
|
|
1208
1213
|
interface ITrybeGetOrderResponse extends IGetOrderResponse {
|
|
@@ -1218,6 +1223,149 @@ interface ITrybeUpdateOrderItemResponse {
|
|
|
1218
1223
|
id: string;
|
|
1219
1224
|
};
|
|
1220
1225
|
}
|
|
1226
|
+
interface ITrybeSubmitOrderResponse {
|
|
1227
|
+
data?: {
|
|
1228
|
+
id: string;
|
|
1229
|
+
order_ref: string;
|
|
1230
|
+
guests?: {
|
|
1231
|
+
id: string;
|
|
1232
|
+
name: string;
|
|
1233
|
+
first_name: string;
|
|
1234
|
+
last_name: string;
|
|
1235
|
+
email: string | null;
|
|
1236
|
+
intake_form_complete: boolean;
|
|
1237
|
+
checked_in_at: string | null;
|
|
1238
|
+
checked_out_at: string | null;
|
|
1239
|
+
is_lead_booker: boolean;
|
|
1240
|
+
customer_id: string;
|
|
1241
|
+
}[];
|
|
1242
|
+
labels: [];
|
|
1243
|
+
sales_channel: null;
|
|
1244
|
+
items_status: 'pending_confirmation';
|
|
1245
|
+
booking_items?: {
|
|
1246
|
+
id: string;
|
|
1247
|
+
status: string;
|
|
1248
|
+
item_type: string;
|
|
1249
|
+
date: string;
|
|
1250
|
+
type_id: string;
|
|
1251
|
+
type_name: string;
|
|
1252
|
+
type_product_code: string | null;
|
|
1253
|
+
guests: {
|
|
1254
|
+
id: string;
|
|
1255
|
+
name: string;
|
|
1256
|
+
first_name: string;
|
|
1257
|
+
last_name: string;
|
|
1258
|
+
email: string | null;
|
|
1259
|
+
intake_form_complete: boolean;
|
|
1260
|
+
checked_in_at: string | null;
|
|
1261
|
+
checked_out_at: string | null;
|
|
1262
|
+
is_lead_booker: boolean;
|
|
1263
|
+
customer_id: string;
|
|
1264
|
+
}[];
|
|
1265
|
+
price: number;
|
|
1266
|
+
discount_amount: number;
|
|
1267
|
+
discounts: [];
|
|
1268
|
+
order_discount_amount: number;
|
|
1269
|
+
booking_summary?: {
|
|
1270
|
+
id: string;
|
|
1271
|
+
status: string;
|
|
1272
|
+
offering: {
|
|
1273
|
+
id: string;
|
|
1274
|
+
type: string;
|
|
1275
|
+
name: string;
|
|
1276
|
+
product_code: string | null;
|
|
1277
|
+
};
|
|
1278
|
+
start_time: string;
|
|
1279
|
+
end_time: string;
|
|
1280
|
+
duration: number;
|
|
1281
|
+
practitioner_ids: string[];
|
|
1282
|
+
practitioners: {
|
|
1283
|
+
id: string;
|
|
1284
|
+
name: string;
|
|
1285
|
+
}[];
|
|
1286
|
+
room_id: string;
|
|
1287
|
+
room?: {
|
|
1288
|
+
id: string;
|
|
1289
|
+
name: string;
|
|
1290
|
+
capacity: number;
|
|
1291
|
+
};
|
|
1292
|
+
equipment_ids: string[];
|
|
1293
|
+
equipment: {
|
|
1294
|
+
id: string;
|
|
1295
|
+
name: string;
|
|
1296
|
+
}[];
|
|
1297
|
+
practitioner_was_requested: false;
|
|
1298
|
+
room_was_requested: false;
|
|
1299
|
+
};
|
|
1300
|
+
total_cost: number;
|
|
1301
|
+
net_total: number;
|
|
1302
|
+
inclusive_tax_amount: number;
|
|
1303
|
+
exclusive_tax_amount: number;
|
|
1304
|
+
booking_reserved_until: string;
|
|
1305
|
+
guest: {
|
|
1306
|
+
id: string;
|
|
1307
|
+
name: string;
|
|
1308
|
+
first_name: string;
|
|
1309
|
+
last_name: string;
|
|
1310
|
+
email: string | null;
|
|
1311
|
+
intake_form_complete: boolean;
|
|
1312
|
+
checked_in_at: string | null;
|
|
1313
|
+
checked_out_at: string | null;
|
|
1314
|
+
is_lead_booker: boolean;
|
|
1315
|
+
customer_id: string;
|
|
1316
|
+
};
|
|
1317
|
+
is_modifiable: boolean;
|
|
1318
|
+
}[];
|
|
1319
|
+
purchase_items: [];
|
|
1320
|
+
package_items: [];
|
|
1321
|
+
booking_items_start_date: string;
|
|
1322
|
+
booking_items_end_date: string;
|
|
1323
|
+
booking_items_span_multiple_days: false;
|
|
1324
|
+
currency: string;
|
|
1325
|
+
totals?: {
|
|
1326
|
+
subtotal?: number;
|
|
1327
|
+
inclusive_tax?: number;
|
|
1328
|
+
exclusive_tax?: number;
|
|
1329
|
+
order_discount?: number;
|
|
1330
|
+
total?: number;
|
|
1331
|
+
};
|
|
1332
|
+
total_cost: number;
|
|
1333
|
+
discount_total: number;
|
|
1334
|
+
total_tax: number;
|
|
1335
|
+
net_total: number;
|
|
1336
|
+
tip_amount: number;
|
|
1337
|
+
tips: [];
|
|
1338
|
+
service_charge: {
|
|
1339
|
+
amount: number;
|
|
1340
|
+
percentage: number;
|
|
1341
|
+
item_amounts: {
|
|
1342
|
+
item_id: string;
|
|
1343
|
+
amount: number;
|
|
1344
|
+
percentage: number;
|
|
1345
|
+
}[];
|
|
1346
|
+
};
|
|
1347
|
+
submit_payment_amount: number;
|
|
1348
|
+
submit_auth_amount: number;
|
|
1349
|
+
outstanding_payment_amount: number;
|
|
1350
|
+
payment_totals: {
|
|
1351
|
+
paid: number;
|
|
1352
|
+
pending: number;
|
|
1353
|
+
chargeable: number;
|
|
1354
|
+
provided: number;
|
|
1355
|
+
missing: number;
|
|
1356
|
+
unpaid: number;
|
|
1357
|
+
};
|
|
1358
|
+
total_paid_or_authed: number;
|
|
1359
|
+
taxes: [];
|
|
1360
|
+
payments: [];
|
|
1361
|
+
discounts: [];
|
|
1362
|
+
applied_promo_code_id: null;
|
|
1363
|
+
applied_promo_code_discount_total: number;
|
|
1364
|
+
is_promo_code_discount_applied: boolean;
|
|
1365
|
+
coupon_codes: [];
|
|
1366
|
+
voucher_codes: [];
|
|
1367
|
+
};
|
|
1368
|
+
}
|
|
1221
1369
|
|
|
1222
1370
|
declare enum TRYBE_SUPPORTED_JOURNEYS_ENUM {
|
|
1223
1371
|
APPOINTMENT = "APPOINTMENT",
|
|
@@ -1301,25 +1449,47 @@ declare class TrybeWellnessManagement implements BaseWellnessManagement {
|
|
|
1301
1449
|
createWellnessAppointmentSessionOrder(): Promise<void>;
|
|
1302
1450
|
addWellnessAppointmentSessionOrderItems(): Promise<void>;
|
|
1303
1451
|
confirmWellnessAppointmentSessionOrder(): Promise<void>;
|
|
1452
|
+
getOffering(request: {
|
|
1453
|
+
offeringId: string;
|
|
1454
|
+
offeringType: TRYBE_OFFERING_TYPE_ENUM;
|
|
1455
|
+
}, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<{
|
|
1456
|
+
data: ITrybeSession | ITrybeCourse | ITrybeAppointment;
|
|
1457
|
+
}>;
|
|
1304
1458
|
createOrder(request: ICreateOrderRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ITrybeCreateOrderResponse>;
|
|
1305
1459
|
addCustomerToOrder(orderId: string, customerId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<void>;
|
|
1306
1460
|
getOrder(orderId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ITrybeGetOrderResponse>;
|
|
1307
1461
|
private mapOfferingTypeToTrybeApi;
|
|
1308
1462
|
addItemToOrder(request: IAddItemToOrderRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<IAddItemToOrderResponse>;
|
|
1309
1463
|
addCustomerCreditsToOrder(orderId: string, customerCreditId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<void>;
|
|
1310
|
-
submitOrder(orderId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<
|
|
1464
|
+
submitOrder(orderId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ITrybeSubmitOrderResponse>;
|
|
1311
1465
|
cancelOrder(orderId: string, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<void>;
|
|
1312
1466
|
updateOrder(request: IUpdateOrderRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<IUpdateOrderResponse>;
|
|
1313
1467
|
updateOrderItem(orderId: string, itemId: string, request: IUpdateOrderRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ITrybeUpdateOrderItemResponse>;
|
|
1314
1468
|
addPaymentToOrder(request: IAddPaymentToOrderRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<void>;
|
|
1315
1469
|
fetchAppointments(request: IGetAppointmentsRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IBookableItem>>;
|
|
1470
|
+
fetchAppointment(request: {
|
|
1471
|
+
appointmentId: string;
|
|
1472
|
+
}, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<{
|
|
1473
|
+
data: ITrybeAppointment;
|
|
1474
|
+
}>;
|
|
1316
1475
|
fetchSessions(request: IGetSessionsRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IBookableItem>>;
|
|
1476
|
+
fetchSession(request: {
|
|
1477
|
+
sessionId: string;
|
|
1478
|
+
}, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<{
|
|
1479
|
+
data: ITrybeSession;
|
|
1480
|
+
}>;
|
|
1317
1481
|
fetchCourses(request: IGetCoursesRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IBookableItem>>;
|
|
1482
|
+
fetchCourse(request: {
|
|
1483
|
+
courseId: string;
|
|
1484
|
+
}, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<{
|
|
1485
|
+
data: ITrybeCourse;
|
|
1486
|
+
}>;
|
|
1318
1487
|
fetchPractitioners(request: IGetPractitionersRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IOfferingResource>>;
|
|
1319
1488
|
fetchCategories(request: IGetCategoriesRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IBookableItemCategory>>;
|
|
1320
1489
|
fetchBookableItemsFromCredit(request: IGetBookableItemsFromCreditRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<ISystemResponse<IBookableItem>>;
|
|
1321
1490
|
fetchSessionAvailabilityForOffering(request: IFetchOfferingAvailabilityRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<IGetAvailableDatesAndTimeSlotsResponse>;
|
|
1322
1491
|
fetchAppointmentAvailabilityForOffering(request: IFetchOfferingAvailabilityRequest, integration: ICapabilityIntegration, loggedInUserId: bigint): Promise<IGetAvailableDatesAndTimeSlotsResponse>;
|
|
1492
|
+
mapTrybeOfferingTypeToBookableItemType(offeringType: string): BOOKABLE_ITEM_TYPE_ENUM;
|
|
1323
1493
|
}
|
|
1324
1494
|
|
|
1325
1495
|
declare function formatDateForTrybe(date: Date, isStartOfDay: boolean): string;
|
package/dist/index.js
CHANGED
|
@@ -3685,16 +3685,8 @@ function mapTrybePractitionersToSystemResponse(practitioners, totalCount) {
|
|
|
3685
3685
|
}
|
|
3686
3686
|
__name(mapTrybePractitionersToSystemResponse, "mapTrybePractitionersToSystemResponse");
|
|
3687
3687
|
function mapTrybeOfferingTypeToBookableItemType(offeringType) {
|
|
3688
|
-
|
|
3689
|
-
|
|
3690
|
-
return BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT;
|
|
3691
|
-
case TRYBE_OFFERING_TYPE_ENUM.SESSION:
|
|
3692
|
-
return BOOKABLE_ITEM_TYPE_ENUM.SESSION;
|
|
3693
|
-
case TRYBE_OFFERING_TYPE_ENUM.COURSE:
|
|
3694
|
-
return BOOKABLE_ITEM_TYPE_ENUM.COURSE;
|
|
3695
|
-
default:
|
|
3696
|
-
return BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT;
|
|
3697
|
-
}
|
|
3688
|
+
const normalized = offeringType.toUpperCase();
|
|
3689
|
+
return BOOKABLE_ITEM_TYPE_ENUM[normalized];
|
|
3698
3690
|
}
|
|
3699
3691
|
__name(mapTrybeOfferingTypeToBookableItemType, "mapTrybeOfferingTypeToBookableItemType");
|
|
3700
3692
|
function mapTrybeCouponCodeOfferingToBookableItem(offering, index) {
|
|
@@ -3783,8 +3775,6 @@ function mapTrybeAppointmentAvailabilityToSystemResponse(slots) {
|
|
|
3783
3775
|
};
|
|
3784
3776
|
}
|
|
3785
3777
|
__name(mapTrybeAppointmentAvailabilityToSystemResponse, "mapTrybeAppointmentAvailabilityToSystemResponse");
|
|
3786
|
-
|
|
3787
|
-
// ../../packages/dvss-integration-trybe/src/capabilities/wellness/wellness-management.service.ts
|
|
3788
3778
|
function _ts_decorate18(decorators, target, key, desc2) {
|
|
3789
3779
|
var c = arguments.length, r = c < 3 ? target : desc2 === null ? desc2 = Object.getOwnPropertyDescriptor(target, key) : desc2, d;
|
|
3790
3780
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc2);
|
|
@@ -3824,11 +3814,33 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
3824
3814
|
confirmWellnessAppointmentSessionOrder() {
|
|
3825
3815
|
throw new Error("Method not implemented.");
|
|
3826
3816
|
}
|
|
3817
|
+
async getOffering(request, integration, loggedInUserId) {
|
|
3818
|
+
switch (request.offeringType) {
|
|
3819
|
+
case TRYBE_OFFERING_TYPE_ENUM.SESSION:
|
|
3820
|
+
return this.fetchSession({
|
|
3821
|
+
sessionId: request.offeringId
|
|
3822
|
+
}, integration, loggedInUserId);
|
|
3823
|
+
case TRYBE_OFFERING_TYPE_ENUM.COURSE:
|
|
3824
|
+
return this.fetchCourse({
|
|
3825
|
+
courseId: request.offeringId
|
|
3826
|
+
}, integration, loggedInUserId);
|
|
3827
|
+
case TRYBE_OFFERING_TYPE_ENUM.APPOINTMENT:
|
|
3828
|
+
return this.fetchAppointment({
|
|
3829
|
+
appointmentId: request.offeringId
|
|
3830
|
+
}, integration, loggedInUserId);
|
|
3831
|
+
default:
|
|
3832
|
+
throw new Error(`Unsupported offering type: ${request.offeringType}`);
|
|
3833
|
+
}
|
|
3834
|
+
}
|
|
3827
3835
|
async createOrder(request, integration, loggedInUserId) {
|
|
3828
3836
|
let orderId;
|
|
3829
3837
|
try {
|
|
3830
3838
|
const validated = this.trybeAuthService.validateConfig(integration, loggedInUserId);
|
|
3831
3839
|
const siteId = validated.config.integrationConfig.siteId;
|
|
3840
|
+
const offering = await this.getOffering({
|
|
3841
|
+
offeringId: request.bookableItems[0].externalId,
|
|
3842
|
+
offeringType: request.bookableItems[0].type
|
|
3843
|
+
}, integration, loggedInUserId);
|
|
3832
3844
|
const res = await this.trafficGatewayService.executeIntegrationRequest({
|
|
3833
3845
|
apiMethod: HTTP_METHOD.POST,
|
|
3834
3846
|
url: "/shop/orders",
|
|
@@ -3860,22 +3872,46 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
3860
3872
|
externalId: bookableItem.externalId,
|
|
3861
3873
|
name: orderItemResponse.name,
|
|
3862
3874
|
type: bookableItem.type,
|
|
3863
|
-
totalPrice: (orderItemResponse.netTotal ?? 0) / request.currencyMultiplier
|
|
3875
|
+
totalPrice: (orderItemResponse.netTotal ?? 0) / request.currencyMultiplier,
|
|
3876
|
+
primaryAsset: bookableItem.externalId === offering.data.id ? offering.data.image?.original_url ? {
|
|
3877
|
+
provider: models.MEDIA_PROVIDER_ENUM.CUSTOM_URL,
|
|
3878
|
+
meta: {
|
|
3879
|
+
url: offering.data.image.original_url
|
|
3880
|
+
}
|
|
3881
|
+
} : void 0 : void 0
|
|
3864
3882
|
});
|
|
3865
3883
|
}
|
|
3866
3884
|
if (request.customerCreditId) {
|
|
3867
3885
|
await this.addCustomerCreditsToOrder(orderId, request.customerCreditId, integration, loggedInUserId);
|
|
3868
3886
|
}
|
|
3869
|
-
await this.submitOrder(orderId, integration, loggedInUserId);
|
|
3887
|
+
const submitOrderResponse = await this.submitOrder(orderId, integration, loggedInUserId);
|
|
3870
3888
|
this.logger.info(loggedInUserId, this.createOrder.name, this.fileName, "Created Trybe order for offering booking", {
|
|
3871
3889
|
orderId
|
|
3872
3890
|
});
|
|
3873
3891
|
return {
|
|
3874
3892
|
externalBookingId: orderId,
|
|
3875
|
-
items,
|
|
3876
3893
|
meta: {
|
|
3877
|
-
orderReference: order.meta.orderReference
|
|
3878
|
-
|
|
3894
|
+
orderReference: submitOrderResponse.data?.order_ref ?? order.meta.orderReference,
|
|
3895
|
+
room: submitOrderResponse.data?.booking_items?.find((item) => item.booking_summary?.room?.id)?.booking_summary?.room,
|
|
3896
|
+
total: (submitOrderResponse.data?.totals?.total ?? 0) / request.currencyMultiplier,
|
|
3897
|
+
subTotal: (submitOrderResponse.data?.totals?.subtotal ?? 0) / request.currencyMultiplier,
|
|
3898
|
+
totalTax: (submitOrderResponse.data?.total_tax ?? 0) / request.currencyMultiplier,
|
|
3899
|
+
discount: (submitOrderResponse.data?.discount_total ?? 0) / request.currencyMultiplier
|
|
3900
|
+
},
|
|
3901
|
+
items: submitOrderResponse.data?.booking_items?.map((bookableItem) => {
|
|
3902
|
+
return {
|
|
3903
|
+
externalId: bookableItem.type_id,
|
|
3904
|
+
name: bookableItem.type_name,
|
|
3905
|
+
type: bookableItem.item_type,
|
|
3906
|
+
totalPrice: bookableItem.net_total,
|
|
3907
|
+
primaryAsset: offering.data.image?.original_url ? {
|
|
3908
|
+
provider: models.MEDIA_PROVIDER_ENUM.CUSTOM_URL,
|
|
3909
|
+
meta: {
|
|
3910
|
+
url: offering.data.image.original_url
|
|
3911
|
+
}
|
|
3912
|
+
} : void 0
|
|
3913
|
+
};
|
|
3914
|
+
}) ?? []
|
|
3879
3915
|
};
|
|
3880
3916
|
} catch (err) {
|
|
3881
3917
|
this.logger.error(loggedInUserId, this.createOrder.name, this.fileName, "Error creating Trybe order for offering booking", err);
|
|
@@ -4036,7 +4072,7 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4036
4072
|
orderId
|
|
4037
4073
|
});
|
|
4038
4074
|
const validated = this.trybeAuthService.validateConfig(integration, loggedInUserId);
|
|
4039
|
-
await this.trafficGatewayService.executeIntegrationRequest({
|
|
4075
|
+
const response = await this.trafficGatewayService.executeIntegrationRequest({
|
|
4040
4076
|
apiMethod: HTTP_METHOD.POST,
|
|
4041
4077
|
url: `/shop/orders/${orderId}/submit`,
|
|
4042
4078
|
baseUrl: validated.config.platformConfig.baseUrl,
|
|
@@ -4045,6 +4081,7 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4045
4081
|
this.logger.info(loggedInUserId, this.submitOrder.name, this.fileName, "Successfully submitted Trybe order", {
|
|
4046
4082
|
orderId
|
|
4047
4083
|
});
|
|
4084
|
+
return response;
|
|
4048
4085
|
}
|
|
4049
4086
|
async cancelOrder(orderId, integration, loggedInUserId) {
|
|
4050
4087
|
this.logger.info(loggedInUserId, this.cancelOrder.name, this.fileName, "Cancelling Trybe order", {
|
|
@@ -4200,6 +4237,29 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4200
4237
|
throw err;
|
|
4201
4238
|
}
|
|
4202
4239
|
}
|
|
4240
|
+
async fetchAppointment(request, integration, loggedInUserId) {
|
|
4241
|
+
this.logger.info(loggedInUserId, this.fetchAppointment.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchAppointment.name} Called`, {
|
|
4242
|
+
request
|
|
4243
|
+
});
|
|
4244
|
+
try {
|
|
4245
|
+
const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
|
|
4246
|
+
const siteId = validatedIntegration.config.integrationConfig.siteId;
|
|
4247
|
+
const apiUrl = `/shop/appointment-types/${request.appointmentId}?site_id=${siteId}`;
|
|
4248
|
+
const response = await this.trafficGatewayService.executeIntegrationRequest({
|
|
4249
|
+
apiMethod: HTTP_METHOD.GET,
|
|
4250
|
+
url: apiUrl,
|
|
4251
|
+
baseUrl: validatedIntegration.config.platformConfig.baseUrl,
|
|
4252
|
+
headers: validatedIntegration.headers
|
|
4253
|
+
}, validatedIntegration, loggedInUserId);
|
|
4254
|
+
this.logger.info(loggedInUserId, this.fetchAppointments.name, this.fileName, "Successfully fetched Trybe appointments", {
|
|
4255
|
+
appointmentId: request.appointmentId
|
|
4256
|
+
});
|
|
4257
|
+
return response;
|
|
4258
|
+
} catch (err) {
|
|
4259
|
+
this.logger.error(loggedInUserId, this.fetchAppointments.name, this.fileName, "Error fetching Trybe appointments", err);
|
|
4260
|
+
throw err;
|
|
4261
|
+
}
|
|
4262
|
+
}
|
|
4203
4263
|
async fetchSessions(request, integration, loggedInUserId) {
|
|
4204
4264
|
this.logger.info(loggedInUserId, this.fetchSessions.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchSessions.name} Called`, {
|
|
4205
4265
|
request
|
|
@@ -4240,6 +4300,25 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4240
4300
|
throw err;
|
|
4241
4301
|
}
|
|
4242
4302
|
}
|
|
4303
|
+
async fetchSession(request, integration, loggedInUserId) {
|
|
4304
|
+
this.logger.info(loggedInUserId, this.fetchSession.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchSession.name} Called`, {
|
|
4305
|
+
request
|
|
4306
|
+
});
|
|
4307
|
+
try {
|
|
4308
|
+
const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
|
|
4309
|
+
const siteId = validatedIntegration.config.integrationConfig.siteId;
|
|
4310
|
+
const apiUrl = `/shop/session-types/${request.sessionId}?site_id=${siteId}`;
|
|
4311
|
+
return await this.trafficGatewayService.executeIntegrationRequest({
|
|
4312
|
+
apiMethod: HTTP_METHOD.GET,
|
|
4313
|
+
url: apiUrl,
|
|
4314
|
+
baseUrl: validatedIntegration.config.platformConfig.baseUrl,
|
|
4315
|
+
headers: validatedIntegration.headers
|
|
4316
|
+
}, validatedIntegration, loggedInUserId);
|
|
4317
|
+
} catch (err) {
|
|
4318
|
+
this.logger.error(loggedInUserId, this.fetchSession.name, this.fileName, "Error fetching Trybe session", err);
|
|
4319
|
+
throw err;
|
|
4320
|
+
}
|
|
4321
|
+
}
|
|
4243
4322
|
async fetchCourses(request, integration, loggedInUserId) {
|
|
4244
4323
|
this.logger.info(loggedInUserId, this.fetchCourses.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchCourses.name} Called`, {
|
|
4245
4324
|
request
|
|
@@ -4280,6 +4359,29 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4280
4359
|
throw err;
|
|
4281
4360
|
}
|
|
4282
4361
|
}
|
|
4362
|
+
async fetchCourse(request, integration, loggedInUserId) {
|
|
4363
|
+
this.logger.info(loggedInUserId, this.fetchCourse.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchCourse.name} Called`, {
|
|
4364
|
+
request
|
|
4365
|
+
});
|
|
4366
|
+
try {
|
|
4367
|
+
const validatedIntegration = this.trybeAuthService.validateConfig(integration, loggedInUserId);
|
|
4368
|
+
const organisationId = validatedIntegration.config.integrationConfig.organisationId;
|
|
4369
|
+
const apiUrl = `/shop/course-types/${request.courseId}?organisation_id=${organisationId}`;
|
|
4370
|
+
const response = await this.trafficGatewayService.executeIntegrationRequest({
|
|
4371
|
+
apiMethod: HTTP_METHOD.GET,
|
|
4372
|
+
url: apiUrl,
|
|
4373
|
+
baseUrl: validatedIntegration.config.platformConfig.baseUrl,
|
|
4374
|
+
headers: validatedIntegration.headers
|
|
4375
|
+
}, validatedIntegration, loggedInUserId);
|
|
4376
|
+
this.logger.info(loggedInUserId, this.fetchCourse.name, this.fileName, "Successfully fetched Trybe course", {
|
|
4377
|
+
courseId: request.courseId
|
|
4378
|
+
});
|
|
4379
|
+
return response;
|
|
4380
|
+
} catch (err) {
|
|
4381
|
+
this.logger.error(loggedInUserId, this.fetchCourse.name, this.fileName, "Error fetching Trybe course", err);
|
|
4382
|
+
throw err;
|
|
4383
|
+
}
|
|
4384
|
+
}
|
|
4283
4385
|
async fetchPractitioners(request, integration, loggedInUserId) {
|
|
4284
4386
|
this.logger.info(loggedInUserId, this.fetchPractitioners.name, this.fileName, `${_TrybeWellnessManagement.name} -> ${this.fetchPractitioners.name} Called`, {
|
|
4285
4387
|
request
|
|
@@ -4429,6 +4531,18 @@ exports.TrybeWellnessManagement = class _TrybeWellnessManagement {
|
|
|
4429
4531
|
throw err;
|
|
4430
4532
|
}
|
|
4431
4533
|
}
|
|
4534
|
+
mapTrybeOfferingTypeToBookableItemType(offeringType) {
|
|
4535
|
+
switch (offeringType) {
|
|
4536
|
+
case "appointment":
|
|
4537
|
+
return BOOKABLE_ITEM_TYPE_ENUM.APPOINTMENT;
|
|
4538
|
+
case "session":
|
|
4539
|
+
return BOOKABLE_ITEM_TYPE_ENUM.SESSION;
|
|
4540
|
+
case "course":
|
|
4541
|
+
return BOOKABLE_ITEM_TYPE_ENUM.COURSE;
|
|
4542
|
+
default:
|
|
4543
|
+
throw new Error(`Unsupported offering type: ${offeringType}`);
|
|
4544
|
+
}
|
|
4545
|
+
}
|
|
4432
4546
|
};
|
|
4433
4547
|
exports.TrybeWellnessManagement = _ts_decorate18([
|
|
4434
4548
|
common.Injectable(),
|