@bash-app/bash-common 30.50.1 → 30.52.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.
- package/README.md +0 -0
- package/dist/definitions.d.ts +668 -0
- package/dist/definitions.d.ts.map +1 -0
- package/dist/definitions.js +467 -0
- package/dist/definitions.js.map +1 -0
- package/dist/extendedSchemas.d.ts +2206 -0
- package/dist/extendedSchemas.d.ts.map +1 -0
- package/dist/extendedSchemas.js +429 -0
- package/dist/extendedSchemas.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/addressUtils.d.ts +14 -0
- package/dist/utils/addressUtils.d.ts.map +1 -0
- package/dist/utils/addressUtils.js +177 -0
- package/dist/utils/addressUtils.js.map +1 -0
- package/dist/utils/apiUtils.d.ts +14 -0
- package/dist/utils/apiUtils.d.ts.map +1 -0
- package/dist/utils/apiUtils.js +61 -0
- package/dist/utils/apiUtils.js.map +1 -0
- package/dist/utils/arrayUtils.d.ts +2 -0
- package/dist/utils/arrayUtils.d.ts.map +1 -0
- package/dist/utils/arrayUtils.js +5 -0
- package/dist/utils/arrayUtils.js.map +1 -0
- package/dist/utils/awsS3Utils.d.ts +10 -0
- package/dist/utils/awsS3Utils.d.ts.map +1 -0
- package/dist/utils/awsS3Utils.js +89 -0
- package/dist/utils/awsS3Utils.js.map +1 -0
- package/dist/utils/badgeUtils.d.ts +33 -0
- package/dist/utils/badgeUtils.d.ts.map +1 -0
- package/dist/utils/badgeUtils.js +57 -0
- package/dist/utils/badgeUtils.js.map +1 -0
- package/dist/utils/blog/blogDbUtils.d.ts +48 -0
- package/dist/utils/blog/blogDbUtils.d.ts.map +1 -0
- package/dist/utils/blog/blogDbUtils.js +218 -0
- package/dist/utils/blog/blogDbUtils.js.map +1 -0
- package/dist/utils/blogUtils.d.ts +19 -0
- package/dist/utils/blogUtils.d.ts.map +1 -0
- package/dist/utils/blogUtils.js +118 -0
- package/dist/utils/blogUtils.js.map +1 -0
- package/dist/utils/dateTimeUtils.d.ts +38 -0
- package/dist/utils/dateTimeUtils.d.ts.map +1 -0
- package/dist/utils/dateTimeUtils.js +207 -0
- package/dist/utils/dateTimeUtils.js.map +1 -0
- package/dist/utils/entityUtils.d.ts +5 -0
- package/dist/utils/entityUtils.d.ts.map +1 -0
- package/dist/utils/entityUtils.js +5 -0
- package/dist/utils/entityUtils.js.map +1 -0
- package/dist/utils/generalDateTimeUtils.d.ts +15 -0
- package/dist/utils/generalDateTimeUtils.d.ts.map +1 -0
- package/dist/utils/generalDateTimeUtils.js +38 -0
- package/dist/utils/generalDateTimeUtils.js.map +1 -0
- package/dist/utils/luxonUtils.d.ts +95 -0
- package/dist/utils/luxonUtils.d.ts.map +1 -0
- package/dist/utils/luxonUtils.js +623 -0
- package/dist/utils/luxonUtils.js.map +1 -0
- package/dist/utils/mathUtils.d.ts +2 -0
- package/dist/utils/mathUtils.d.ts.map +1 -0
- package/dist/utils/mathUtils.js +4 -0
- package/dist/utils/mathUtils.js.map +1 -0
- package/dist/utils/objUtils.d.ts +3 -0
- package/dist/utils/objUtils.d.ts.map +1 -0
- package/dist/utils/objUtils.js +29 -0
- package/dist/utils/objUtils.js.map +1 -0
- package/dist/utils/paymentUtils.d.ts +18 -0
- package/dist/utils/paymentUtils.d.ts.map +1 -0
- package/dist/utils/paymentUtils.js +50 -0
- package/dist/utils/paymentUtils.js.map +1 -0
- package/dist/utils/promoCodesUtils.d.ts +6 -0
- package/dist/utils/promoCodesUtils.d.ts.map +1 -0
- package/dist/utils/promoCodesUtils.js +23 -0
- package/dist/utils/promoCodesUtils.js.map +1 -0
- package/dist/utils/qrCodeUtils.d.ts +4 -0
- package/dist/utils/qrCodeUtils.d.ts.map +1 -0
- package/dist/utils/qrCodeUtils.js +22 -0
- package/dist/utils/qrCodeUtils.js.map +1 -0
- package/dist/utils/recurrenceUtils.d.ts +8 -0
- package/dist/utils/recurrenceUtils.d.ts.map +1 -0
- package/dist/utils/recurrenceUtils.js +153 -0
- package/dist/utils/recurrenceUtils.js.map +1 -0
- package/dist/utils/reviewUtils.d.ts +29 -0
- package/dist/utils/reviewUtils.d.ts.map +1 -0
- package/dist/utils/reviewUtils.js +65 -0
- package/dist/utils/reviewUtils.js.map +1 -0
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts +21 -0
- package/dist/utils/service/apiServiceBookingApiUtils.d.ts.map +1 -0
- package/dist/utils/service/apiServiceBookingApiUtils.js +131 -0
- package/dist/utils/service/apiServiceBookingApiUtils.js.map +1 -0
- package/dist/utils/service/attendeeOptionUtils.d.ts +11 -0
- package/dist/utils/service/attendeeOptionUtils.d.ts.map +1 -0
- package/dist/utils/service/attendeeOptionUtils.js +9 -0
- package/dist/utils/service/attendeeOptionUtils.js.map +1 -0
- package/dist/utils/service/frontendServiceBookingUtils.d.ts +53 -0
- package/dist/utils/service/frontendServiceBookingUtils.d.ts.map +1 -0
- package/dist/utils/service/frontendServiceBookingUtils.js +134 -0
- package/dist/utils/service/frontendServiceBookingUtils.js.map +1 -0
- package/dist/utils/service/regexUtils.d.ts +6 -0
- package/dist/utils/service/regexUtils.d.ts.map +1 -0
- package/dist/utils/service/regexUtils.js +16 -0
- package/dist/utils/service/regexUtils.js.map +1 -0
- package/dist/utils/service/serviceBookingStatusUtils.d.ts +21 -0
- package/dist/utils/service/serviceBookingStatusUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceBookingStatusUtils.js +130 -0
- package/dist/utils/service/serviceBookingStatusUtils.js.map +1 -0
- package/dist/utils/service/serviceBookingTypes.d.ts +19 -0
- package/dist/utils/service/serviceBookingTypes.d.ts.map +1 -0
- package/dist/utils/service/serviceBookingTypes.js +2 -0
- package/dist/utils/service/serviceBookingTypes.js.map +1 -0
- package/dist/utils/service/serviceDBUtils.d.ts +5 -0
- package/dist/utils/service/serviceDBUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceDBUtils.js +48 -0
- package/dist/utils/service/serviceDBUtils.js.map +1 -0
- package/dist/utils/service/serviceRateDBUtils.d.ts +1 -0
- package/dist/utils/service/serviceRateDBUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceRateDBUtils.js +159 -0
- package/dist/utils/service/serviceRateDBUtils.js.map +1 -0
- package/dist/utils/service/serviceRateTypes.d.ts +9 -0
- package/dist/utils/service/serviceRateTypes.d.ts.map +1 -0
- package/dist/utils/service/serviceRateTypes.js +2 -0
- package/dist/utils/service/serviceRateTypes.js.map +1 -0
- package/dist/utils/service/serviceRateUtils.d.ts +24 -0
- package/dist/utils/service/serviceRateUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceRateUtils.js +183 -0
- package/dist/utils/service/serviceRateUtils.js.map +1 -0
- package/dist/utils/service/serviceUtils.d.ts +83 -0
- package/dist/utils/service/serviceUtils.d.ts.map +1 -0
- package/dist/utils/service/serviceUtils.js +311 -0
- package/dist/utils/service/serviceUtils.js.map +1 -0
- package/dist/utils/service/venueUtils.d.ts +13 -0
- package/dist/utils/service/venueUtils.d.ts.map +1 -0
- package/dist/utils/service/venueUtils.js +18 -0
- package/dist/utils/service/venueUtils.js.map +1 -0
- package/dist/utils/slugUtils.d.ts +9 -0
- package/dist/utils/slugUtils.d.ts.map +1 -0
- package/dist/utils/slugUtils.js +47 -0
- package/dist/utils/slugUtils.js.map +1 -0
- package/dist/utils/sortUtils.d.ts +7 -0
- package/dist/utils/sortUtils.d.ts.map +1 -0
- package/dist/utils/sortUtils.js +26 -0
- package/dist/utils/sortUtils.js.map +1 -0
- package/dist/utils/stringUtils.d.ts +2 -0
- package/dist/utils/stringUtils.d.ts.map +1 -0
- package/dist/utils/stringUtils.js +6 -0
- package/dist/utils/stringUtils.js.map +1 -0
- package/dist/utils/stripeAccountUtils.d.ts +3 -0
- package/dist/utils/stripeAccountUtils.d.ts.map +1 -0
- package/dist/utils/stripeAccountUtils.js +10 -0
- package/dist/utils/stripeAccountUtils.js.map +1 -0
- package/dist/utils/ticketListUtils.d.ts +12 -0
- package/dist/utils/ticketListUtils.d.ts.map +1 -0
- package/dist/utils/ticketListUtils.js +78 -0
- package/dist/utils/ticketListUtils.js.map +1 -0
- package/dist/utils/typeUtils.d.ts +11 -0
- package/dist/utils/typeUtils.d.ts.map +1 -0
- package/dist/utils/typeUtils.js +8 -0
- package/dist/utils/typeUtils.js.map +1 -0
- package/dist/utils/urlUtils.d.ts +10 -0
- package/dist/utils/urlUtils.d.ts.map +1 -0
- package/dist/utils/urlUtils.js +66 -0
- package/dist/utils/urlUtils.js.map +1 -0
- package/dist/utils/userPromoCodeUtils.d.ts +21 -0
- package/dist/utils/userPromoCodeUtils.d.ts.map +1 -0
- package/dist/utils/userPromoCodeUtils.js +13 -0
- package/dist/utils/userPromoCodeUtils.js.map +1 -0
- package/dist/utils/userSubscriptionUtils.d.ts +36 -0
- package/dist/utils/userSubscriptionUtils.d.ts.map +1 -0
- package/dist/utils/userSubscriptionUtils.js +56 -0
- package/dist/utils/userSubscriptionUtils.js.map +1 -0
- package/dist/utils/userUtils.d.ts +2 -0
- package/dist/utils/userUtils.d.ts.map +1 -0
- package/dist/utils/userUtils.js +2 -0
- package/dist/utils/userUtils.js.map +1 -0
- package/package.json +4 -2
- package/prisma/schema.prisma +247 -94
- package/src/definitions.ts +52 -1
- package/src/extendedSchemas.ts +180 -13
- package/src/index.ts +32 -21
- package/src/utils/apiUtils.ts +0 -0
- package/src/utils/arrayUtils.ts +0 -0
- package/src/utils/awsS3Utils.ts +0 -0
- package/src/utils/blog/blogDbUtils.ts +343 -0
- package/src/utils/blogUtils.ts +134 -0
- package/src/utils/entityUtils.ts +0 -0
- package/src/utils/generalDateTimeUtils.ts +0 -0
- package/src/utils/mathUtils.ts +0 -0
- package/src/utils/objUtils.ts +0 -0
- package/src/utils/paymentUtils.ts +0 -0
- package/src/utils/promoCodesUtils.ts +0 -0
- package/src/utils/qrCodeUtils.ts +4 -2
- package/src/utils/service/attendeeOptionUtils.ts +0 -0
- package/src/utils/service/regexUtils.ts +0 -0
- package/src/utils/service/serviceBookingStatusUtils.ts +6 -18
- package/src/utils/service/serviceDBUtils.ts +0 -0
- package/src/utils/service/serviceRateDBUtils.ts +0 -0
- package/src/utils/service/serviceUtils.ts +0 -0
- package/src/utils/service/venueUtils.ts +0 -0
- package/src/utils/slugUtils.ts +60 -0
- package/src/utils/sortUtils.ts +0 -0
- package/src/utils/stringUtils.ts +0 -0
- package/src/utils/stripeAccountUtils.ts +0 -0
- package/src/utils/ticketListUtils.ts +24 -6
- package/src/utils/urlUtils.ts +0 -0
- package/src/utils/userPromoCodeUtils.ts +0 -0
- package/src/utils/userSubscriptionUtils.ts +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// import {
|
|
2
|
+
// specialRateConvertToDb,
|
|
3
|
+
// generalRatesConvertRatesToDB,
|
|
4
|
+
// specialRateConvertFromDb,
|
|
5
|
+
// generalRatesConvertRatesFromDB,
|
|
6
|
+
// } from "./serviceRateDBUtils";
|
|
7
|
+
export function serviceToDb(service) {
|
|
8
|
+
if (service.serviceRatesAssociation) {
|
|
9
|
+
// service.serviceRatesAssociation.serviceSpecialRates =
|
|
10
|
+
// service.serviceRatesAssociation.serviceSpecialRates?.map(
|
|
11
|
+
// (
|
|
12
|
+
// serviceSpecialRate: Partial<ServiceSpecialRatesExt>
|
|
13
|
+
// ): ServiceSpecialRatesExt => {
|
|
14
|
+
// return specialRateConvertToDb(
|
|
15
|
+
// serviceSpecialRate
|
|
16
|
+
// ) as ServiceSpecialRatesExt;
|
|
17
|
+
// }
|
|
18
|
+
// );
|
|
19
|
+
// if (service.serviceRatesAssociation.serviceGeneralRates) {
|
|
20
|
+
// service.serviceRatesAssociation.serviceGeneralRates =
|
|
21
|
+
// generalRatesConvertRatesToDB(
|
|
22
|
+
// service.serviceRatesAssociation.serviceGeneralRates
|
|
23
|
+
// ) as ServiceRate;
|
|
24
|
+
// }
|
|
25
|
+
}
|
|
26
|
+
return service;
|
|
27
|
+
}
|
|
28
|
+
export function serviceFromDb(service) {
|
|
29
|
+
if (service.serviceRatesAssociation) {
|
|
30
|
+
// service.serviceRatesAssociation.serviceSpecialRates =
|
|
31
|
+
// service.serviceRatesAssociation.serviceSpecialRates?.map(
|
|
32
|
+
// (
|
|
33
|
+
// serviceSpecialRate: ServiceSpecialRatesExt
|
|
34
|
+
// ): ServiceSpecialRatesExt => {
|
|
35
|
+
// return specialRateConvertFromDb(serviceSpecialRate);
|
|
36
|
+
// }
|
|
37
|
+
// );
|
|
38
|
+
if (service.serviceRatesAssociation.serviceGeneralRates) {
|
|
39
|
+
// console.log("updating general rates from db");
|
|
40
|
+
// service.serviceRatesAssociation.serviceGeneralRates =
|
|
41
|
+
// generalRatesConvertRatesFromDB(
|
|
42
|
+
// service.serviceRatesAssociation.serviceGeneralRates
|
|
43
|
+
// );
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return service;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=serviceDBUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceDBUtils.js","sourceRoot":"","sources":["../../../src/utils/service/serviceDBUtils.ts"],"names":[],"mappings":"AAEA,WAAW;AACX,4BAA4B;AAC5B,kCAAkC;AAClC,8BAA8B;AAC9B,oCAAoC;AACpC,iCAAiC;AAEjC,MAAM,UAAU,WAAW,CACzB,OAAgC;IAEhC,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,wDAAwD;QACxD,8DAA8D;QAC9D,QAAQ;QACR,4DAA4D;QAC5D,qCAAqC;QACrC,uCAAuC;QACvC,6BAA6B;QAC7B,qCAAqC;QACrC,QAAQ;QACR,OAAO;QACP,6DAA6D;QAC7D,0DAA0D;QAC1D,oCAAoC;QACpC,4DAA4D;QAC5D,wBAAwB;QACxB,IAAI;IACN,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAmB;IAC/C,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;QACpC,wDAAwD;QACxD,8DAA8D;QAC9D,QAAQ;QACR,mDAAmD;QACnD,qCAAqC;QACrC,6DAA6D;QAC7D,QAAQ;QACR,OAAO;QACP,IAAI,OAAO,CAAC,uBAAuB,CAAC,mBAAmB,EAAE,CAAC;YACxD,iDAAiD;YACjD,wDAAwD;YACxD,oCAAoC;YACpC,0DAA0D;YAC1D,OAAO;QACT,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=serviceRateDBUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateDBUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceRateDBUtils.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// import { ServiceRate } from "@prisma/client";
|
|
3
|
+
// import { ApiResult } from "../../definitions";
|
|
4
|
+
// import { ServiceSpecialRatesExt } from "../../extendedSchemas";
|
|
5
|
+
// import { convertDollarsToCents, convertCentsToDollars } from "../paymentUtils";
|
|
6
|
+
// export function specialRateConvertToDb(
|
|
7
|
+
// specialRate: Partial<ServiceSpecialRatesExt>
|
|
8
|
+
// ): Partial<ServiceSpecialRatesExt> {
|
|
9
|
+
// return specialRateConvertRatesToDB(
|
|
10
|
+
// specialRateConvertDateStringsToDb(structuredClone(specialRate))
|
|
11
|
+
// );
|
|
12
|
+
// }
|
|
13
|
+
// export function specialRateConvertFromDb(
|
|
14
|
+
// specialRate: ServiceSpecialRatesExt
|
|
15
|
+
// ): ServiceSpecialRatesExt {
|
|
16
|
+
// // console.log(`specialRateConvertFromDb`);
|
|
17
|
+
// return specialRateConvertRatesFromDB(
|
|
18
|
+
// specialRateConvertDateStringsFromDb(specialRate)
|
|
19
|
+
// );
|
|
20
|
+
// }
|
|
21
|
+
// function specialRateConvertDateStringsToDb(
|
|
22
|
+
// specialRate: Partial<ServiceSpecialRatesExt>
|
|
23
|
+
// ): Partial<ServiceSpecialRatesExt> {
|
|
24
|
+
// // const oldStart = new Date(specialRate.startDate!);
|
|
25
|
+
// // const oldEnd = new Date(specialRate.endDate!);
|
|
26
|
+
// // specialRate.startDate = dateTimeLocalToUTCDate(specialRate.startDate!);
|
|
27
|
+
// // specialRate.endDate = dateTimeLocalToUTCDate(specialRate.endDate!);
|
|
28
|
+
// // specialRate.startDate = normalizeDate(specialRate.startDate!);
|
|
29
|
+
// // specialRate.endDate = normalizeDate(specialRate.endDate!);
|
|
30
|
+
// // const localStart = dateTimeLocalFromUTCDate(new Date(specialRate.startDate!));
|
|
31
|
+
// // const localEnd = dateTimeLocalFromUTCDate(new Date(specialRate.endDate!));
|
|
32
|
+
// // console.log(
|
|
33
|
+
// // `specialRateConvertDateStringsToDb oldStart: ${oldStart?.toString()}`
|
|
34
|
+
// // );
|
|
35
|
+
// // console.log(
|
|
36
|
+
// // `specialRateConvertDateStringsToDb oldEnd: ${oldEnd?.toString()}`
|
|
37
|
+
// // );
|
|
38
|
+
// // console.log(
|
|
39
|
+
// // `specialRateConvertDateStringsToDb specialRate.startDate: ${specialRate.startDate?.toString()}`
|
|
40
|
+
// // );
|
|
41
|
+
// // console.log(
|
|
42
|
+
// // `specialRateConvertDateStringsToDb specialRate.endDate: ${specialRate.endDate?.toString()}`
|
|
43
|
+
// // );
|
|
44
|
+
// // console.log(
|
|
45
|
+
// // `specialRateConvertDateStringsToDb localStart: ${localStart?.toString()}`
|
|
46
|
+
// // );
|
|
47
|
+
// // console.log(
|
|
48
|
+
// // `specialRateConvertDateStringsToDb localEnd: ${localEnd?.toString()}`
|
|
49
|
+
// // );
|
|
50
|
+
// // const a = 3 + 4;
|
|
51
|
+
// // specialRate.startDate = specialRate.startDate.toISOString();
|
|
52
|
+
// // specialRate.endDate = specialRate.endDate.toISOString();
|
|
53
|
+
// // return specialRate;
|
|
54
|
+
// return specialRate;
|
|
55
|
+
// }
|
|
56
|
+
// function specialRateConvertDateStringsFromDb(
|
|
57
|
+
// specialRate: ServiceSpecialRatesExt
|
|
58
|
+
// ): ServiceSpecialRatesExt {
|
|
59
|
+
// // specialRate.startDate = localDateToUTC(new Date(specialRate.startDate));
|
|
60
|
+
// // specialRate.endDate = localDateToUTC(new Date(specialRate.endDate));
|
|
61
|
+
// //this shouldnt even be necessary as javascript dates are always stored in UTC timezone (they lack timezone information)
|
|
62
|
+
// // specialRate.startDate = ensureDateTimeIsLocalDateTime(
|
|
63
|
+
// // new Date(specialRate.startDate)
|
|
64
|
+
// // ).toDate();
|
|
65
|
+
// // specialRate.endDate = ensureDateTimeIsLocalDateTime(
|
|
66
|
+
// // new Date(specialRate.endDate)
|
|
67
|
+
// // ).toDate();
|
|
68
|
+
// specialRate.startDate = new Date(specialRate.startDate);
|
|
69
|
+
// specialRate.endDate = new Date(specialRate.endDate);
|
|
70
|
+
// // const oldStart = new Date(specialRate.startDate!);
|
|
71
|
+
// // const oldEnd = new Date(specialRate.endDate!);
|
|
72
|
+
// // specialRate.startDate = dateTimeLocalFromUTCDate(
|
|
73
|
+
// // new Date(specialRate.startDate)
|
|
74
|
+
// // );
|
|
75
|
+
// // specialRate.endDate = dateTimeLocalFromUTCDate(new Date(specialRate.endDate));
|
|
76
|
+
// // // specialRate.startDate = ensureDateTimeIsLocalDateTime(
|
|
77
|
+
// // // new Date(specialRate.startDate)
|
|
78
|
+
// // // ).toDate();
|
|
79
|
+
// // // specialRate.endDate = ensureDateTimeIsLocalDateTime(
|
|
80
|
+
// // // new Date(specialRate.endDate)
|
|
81
|
+
// // // ).toDate();
|
|
82
|
+
// // // specialRate.startDate = localDateToUTC(new Date(specialRate.startDate));
|
|
83
|
+
// // // specialRate.endDate = localDateToUTC(new Date(specialRate.endDate));
|
|
84
|
+
// // const date2 = normalizeDate(specialRate.startDate)!;
|
|
85
|
+
// // const date3 = normalizeDate(specialRate.endDate)!;
|
|
86
|
+
// // const a = 3 + 4;
|
|
87
|
+
// return specialRate;
|
|
88
|
+
// }
|
|
89
|
+
// function specialRateConvertRatesToDB(
|
|
90
|
+
// specialRate: Partial<ServiceSpecialRatesExt>
|
|
91
|
+
// ): Partial<ServiceSpecialRatesExt> {
|
|
92
|
+
// if (specialRate.serviceRate) {
|
|
93
|
+
// specialRate.serviceRate = generalRatesConvertRatesToDB(
|
|
94
|
+
// specialRate.serviceRate
|
|
95
|
+
// ) as ServiceRate;
|
|
96
|
+
// }
|
|
97
|
+
// return specialRate;
|
|
98
|
+
// }
|
|
99
|
+
// function specialRateConvertRatesFromDB(
|
|
100
|
+
// specialRate: ServiceSpecialRatesExt
|
|
101
|
+
// ): ServiceSpecialRatesExt {
|
|
102
|
+
// if (specialRate.serviceRate) {
|
|
103
|
+
// specialRate.serviceRate = generalRatesConvertRatesFromDB(
|
|
104
|
+
// specialRate.serviceRate
|
|
105
|
+
// );
|
|
106
|
+
// }
|
|
107
|
+
// return specialRate;
|
|
108
|
+
// }
|
|
109
|
+
// export function generalRatesConvertRatesToDB(
|
|
110
|
+
// generalRate: ServiceRate
|
|
111
|
+
// ): ServiceRate {
|
|
112
|
+
// return generalRatesConvertRatesToDBHelper(structuredClone(generalRate));
|
|
113
|
+
// }
|
|
114
|
+
// export function generalRatesConvertRatesToDBHelper(
|
|
115
|
+
// generalRate: ServiceRate
|
|
116
|
+
// ): ServiceRate {
|
|
117
|
+
// // console.log(
|
|
118
|
+
// // `generalRatesConvertRatesToDBHelper A: ${JSON.stringify(generalRate)}`
|
|
119
|
+
// // );
|
|
120
|
+
// if (generalRate?.dailyRate) {
|
|
121
|
+
// generalRate.dailyRate = convertDollarsToCents(generalRate.dailyRate);
|
|
122
|
+
// }
|
|
123
|
+
// if (generalRate?.hourlyRate) {
|
|
124
|
+
// generalRate.hourlyRate = convertDollarsToCents(generalRate.hourlyRate);
|
|
125
|
+
// }
|
|
126
|
+
// if (generalRate?.cleaningFeePerBooking) {
|
|
127
|
+
// generalRate.cleaningFeePerBooking = convertDollarsToCents(
|
|
128
|
+
// generalRate.cleaningFeePerBooking
|
|
129
|
+
// );
|
|
130
|
+
// }
|
|
131
|
+
// // console.log(
|
|
132
|
+
// // `generalRatesConvertRatesToDBHelper B: ${JSON.stringify(generalRate)}`
|
|
133
|
+
// // );
|
|
134
|
+
// return generalRate;
|
|
135
|
+
// }
|
|
136
|
+
// export function generalRatesConvertRatesFromDB(
|
|
137
|
+
// generalRate: ServiceRate
|
|
138
|
+
// ): ServiceRate {
|
|
139
|
+
// // console.log(
|
|
140
|
+
// // `generalRatesConvertRatesFromDB A: ${JSON.stringify(generalRate)}`
|
|
141
|
+
// // );
|
|
142
|
+
// // console.log(`specialRateConvertRatesFromDB`);
|
|
143
|
+
// if (generalRate?.dailyRate) {
|
|
144
|
+
// generalRate.dailyRate = convertCentsToDollars(generalRate.dailyRate);
|
|
145
|
+
// }
|
|
146
|
+
// if (generalRate?.hourlyRate) {
|
|
147
|
+
// generalRate.hourlyRate = convertCentsToDollars(generalRate.hourlyRate);
|
|
148
|
+
// }
|
|
149
|
+
// if (generalRate?.cleaningFeePerBooking) {
|
|
150
|
+
// generalRate.cleaningFeePerBooking = convertCentsToDollars(
|
|
151
|
+
// generalRate.cleaningFeePerBooking
|
|
152
|
+
// );
|
|
153
|
+
// }
|
|
154
|
+
// // console.log(
|
|
155
|
+
// // `generalRatesConvertRatesFromDB B: ${JSON.stringify(generalRate)}`
|
|
156
|
+
// // );
|
|
157
|
+
// return generalRate;
|
|
158
|
+
// }
|
|
159
|
+
//# sourceMappingURL=serviceRateDBUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateDBUtils.js","sourceRoot":"","sources":["../../../src/utils/service/serviceRateDBUtils.ts"],"names":[],"mappings":";AAAA,gDAAgD;AAChD,iDAAiD;AACjD,kEAAkE;AAClE,kFAAkF;AAElF,0CAA0C;AAC1C,iDAAiD;AACjD,uCAAuC;AACvC,wCAAwC;AACxC,sEAAsE;AACtE,OAAO;AACP,IAAI;AAEJ,4CAA4C;AAC5C,wCAAwC;AACxC,8BAA8B;AAC9B,gDAAgD;AAChD,0CAA0C;AAC1C,uDAAuD;AACvD,OAAO;AACP,IAAI;AAEJ,8CAA8C;AAC9C,iDAAiD;AACjD,uCAAuC;AACvC,0DAA0D;AAC1D,sDAAsD;AAEtD,+EAA+E;AAC/E,2EAA2E;AAC3E,sEAAsE;AACtE,kEAAkE;AAElE,sFAAsF;AACtF,kFAAkF;AAElF,oBAAoB;AACpB,+EAA+E;AAC/E,UAAU;AACV,oBAAoB;AACpB,2EAA2E;AAC3E,UAAU;AACV,oBAAoB;AACpB,yGAAyG;AACzG,UAAU;AACV,oBAAoB;AACpB,qGAAqG;AACrG,UAAU;AACV,oBAAoB;AACpB,mFAAmF;AACnF,UAAU;AACV,oBAAoB;AACpB,+EAA+E;AAC/E,UAAU;AAEV,wBAAwB;AAExB,oEAAoE;AACpE,gEAAgE;AAChE,2BAA2B;AAC3B,wBAAwB;AACxB,IAAI;AAEJ,gDAAgD;AAChD,wCAAwC;AACxC,8BAA8B;AAC9B,gFAAgF;AAChF,4EAA4E;AAE5E,6HAA6H;AAC7H,8DAA8D;AAC9D,yCAAyC;AACzC,mBAAmB;AACnB,4DAA4D;AAC5D,uCAAuC;AACvC,mBAAmB;AAEnB,6DAA6D;AAC7D,yDAAyD;AAEzD,0DAA0D;AAC1D,sDAAsD;AAEtD,yDAAyD;AACzD,yCAAyC;AACzC,UAAU;AACV,sFAAsF;AAEtF,iEAAiE;AACjE,4CAA4C;AAC5C,sBAAsB;AACtB,+DAA+D;AAC/D,0CAA0C;AAC1C,sBAAsB;AAEtB,mFAAmF;AACnF,+EAA+E;AAE/E,4DAA4D;AAC5D,0DAA0D;AAE1D,wBAAwB;AACxB,wBAAwB;AACxB,IAAI;AAEJ,wCAAwC;AACxC,iDAAiD;AACjD,uCAAuC;AACvC,mCAAmC;AACnC,8DAA8D;AAC9D,gCAAgC;AAChC,wBAAwB;AACxB,MAAM;AACN,wBAAwB;AACxB,IAAI;AAEJ,0CAA0C;AAC1C,wCAAwC;AACxC,8BAA8B;AAC9B,mCAAmC;AACnC,gEAAgE;AAChE,gCAAgC;AAChC,SAAS;AACT,MAAM;AACN,wBAAwB;AACxB,IAAI;AAEJ,gDAAgD;AAChD,6BAA6B;AAC7B,mBAAmB;AACnB,6EAA6E;AAC7E,IAAI;AAEJ,sDAAsD;AACtD,6BAA6B;AAC7B,mBAAmB;AACnB,sBAAsB;AACtB,kFAAkF;AAClF,YAAY;AACZ,kCAAkC;AAClC,4EAA4E;AAC5E,MAAM;AACN,mCAAmC;AACnC,8EAA8E;AAC9E,MAAM;AACN,8CAA8C;AAC9C,iEAAiE;AACjE,0CAA0C;AAC1C,SAAS;AACT,MAAM;AACN,sBAAsB;AACtB,kFAAkF;AAClF,YAAY;AACZ,wBAAwB;AACxB,IAAI;AAEJ,kDAAkD;AAClD,6BAA6B;AAC7B,mBAAmB;AACnB,sBAAsB;AACtB,8EAA8E;AAC9E,YAAY;AACZ,qDAAqD;AACrD,kCAAkC;AAClC,4EAA4E;AAC5E,MAAM;AACN,mCAAmC;AACnC,8EAA8E;AAC9E,MAAM;AACN,8CAA8C;AAC9C,iEAAiE;AACjE,0CAA0C;AAC1C,SAAS;AACT,MAAM;AACN,sBAAsB;AACtB,8EAA8E;AAC9E,YAAY;AACZ,wBAAwB;AACxB,IAAI"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ServiceDailyRatesExt, ServiceSpecialRatesExt } from "../../extendedSchemas";
|
|
2
|
+
import { LuxonDateRange } from "../luxonUtils";
|
|
3
|
+
export type ServiceDailyRatesExtT = Omit<ServiceDailyRatesExt, "startDate" | "endDate"> & {
|
|
4
|
+
dateTimeRange: LuxonDateRange;
|
|
5
|
+
};
|
|
6
|
+
export type ServiceSpecialRatesExtT = Omit<ServiceSpecialRatesExt, "startDate" | "endDate"> & {
|
|
7
|
+
dateTimeRange: LuxonDateRange;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=serviceRateTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateTypes.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceRateTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,sBAAsB,EACtB,WAAW,GAAG,SAAS,CACxB,GAAG;IACF,aAAa,EAAE,cAAc,CAAC;CAC/B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateTypes.js","sourceRoot":"","sources":["../../../src/utils/service/serviceRateTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ServiceRate } from "@prisma/client";
|
|
2
|
+
import { ServiceDailyRatesExt, ServiceRatesAssociationExt, ServiceSpecialRatesExt } from "../../extendedSchemas";
|
|
3
|
+
import { LuxonDateRange } from "../luxonUtils";
|
|
4
|
+
import { ServiceBookingPriceBreakdownBaseT } from "./serviceBookingTypes";
|
|
5
|
+
import { ServiceDailyRatesExtT, ServiceSpecialRatesExtT } from "./serviceRateTypes";
|
|
6
|
+
export declare const SERVICE_DAILY_RATE_HOURS_MIN = 8;
|
|
7
|
+
export declare function serviceRateToLuxonRate(rate: ServiceDailyRatesExt | ServiceSpecialRatesExt, timezone: string | undefined | null): ServiceDailyRatesExtT | ServiceSpecialRatesExtT;
|
|
8
|
+
export declare function serviceBookingPriceBreakdownGetTypeText(pricingInfo: ServiceBookingPriceBreakdownBaseT): string;
|
|
9
|
+
export declare function serviceBookingCalcDayPriceBreakdown(dateTimeRange: LuxonDateRange, serviceRates: (ServiceRate | null | undefined)[], isFullDay: boolean, hoursRemaining: number): ServiceBookingPriceBreakdownBaseT;
|
|
10
|
+
export declare function getServiceRatePricingInfo(dateTimeRange: LuxonDateRange, generalRate: ServiceRate | null | undefined, dailyRates: ServiceDailyRatesExtT[], //filtered to remove unavailable dates
|
|
11
|
+
specialRates: ServiceSpecialRatesExtT[], //filtered to remove unavailable dates
|
|
12
|
+
timezone: string | null | undefined, hoursRemaining: number): ServiceBookingPriceBreakdownBaseT;
|
|
13
|
+
export interface ServiceRatesLuxon {
|
|
14
|
+
generalRate: ServiceRate | null | undefined;
|
|
15
|
+
specialRates: ServiceSpecialRatesExtT[];
|
|
16
|
+
dailyRates: ServiceDailyRatesExtT[];
|
|
17
|
+
}
|
|
18
|
+
export declare function serviceGetFilteredRates(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, dateTimeRanges: LuxonDateRange[], timezone: string | null | undefined): ServiceRatesLuxon;
|
|
19
|
+
export declare function serviceRatesFilter(rates: ServiceRatesLuxon, dateTimeRanges: LuxonDateRange[]): ServiceRatesLuxon;
|
|
20
|
+
export declare function serviceRatesHasRates(rates: ServiceRatesLuxon): boolean | null | undefined;
|
|
21
|
+
export declare function serviceRatesToLuxonRates(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, dateTimeRanges: LuxonDateRange[], timezone: string | null | undefined): ServiceRatesLuxon;
|
|
22
|
+
export declare function serviceRatesAssociationGetBlockedDates(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, timezone: string | undefined | null): LuxonDateRange[];
|
|
23
|
+
export declare function serviceRatesAssociationGetSpecialRates(serviceRatesAssociation: ServiceRatesAssociationExt | null | undefined, timezone: string | undefined | null, filterPastDates?: boolean): ServiceSpecialRatesExtT[];
|
|
24
|
+
//# sourceMappingURL=serviceRateUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceRateUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,cAAc,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iCAAiC,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,GAAG,sBAAsB,EACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAClC,qBAAqB,GAAG,uBAAuB,CAUjD;AAED,wBAAgB,uCAAuC,CACrD,WAAW,EAAE,iCAAiC,UAG/C;AAED,wBAAgB,mCAAmC,CACjD,aAAa,EAAE,cAAc,EAC7B,YAAY,EAAE,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,EAChD,SAAS,EAAE,OAAO,EAClB,cAAc,EAAE,MAAM,GACrB,iCAAiC,CAoFnC;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,cAAc,EAC7B,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,EAC3C,UAAU,EAAE,qBAAqB,EAAE,EAAE,sCAAsC;AAC3E,YAAY,EAAE,uBAAuB,EAAE,EAAE,sCAAsC;AAE/E,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACnC,cAAc,EAAE,MAAM,GACrB,iCAAiC,CAkCnC;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,YAAY,EAAE,uBAAuB,EAAE,CAAC;IACxC,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAED,wBAAgB,uBAAuB,CACrC,uBAAuB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,EACtE,cAAc,EAAE,cAAc,EAAE,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,iBAAiB,CAKnB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,iBAAiB,EACxB,cAAc,EAAE,cAAc,EAAE,GAC/B,iBAAiB,CA+BnB;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,8BAsB5D;AAED,wBAAgB,wBAAwB,CACtC,uBAAuB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,EACtE,cAAc,EAAE,cAAc,EAAE,EAChC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAClC,iBAAiB,CAiCnB;AAED,wBAAgB,sCAAsC,CACpD,uBAAuB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,EACtE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,oBAmBpC;AAED,wBAAgB,sCAAsC,CACpD,uBAAuB,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,EACtE,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EACnC,eAAe,GAAE,OAAe,6BAkBjC"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
import { ServiceRatePricingType, ServiceRateType, } from "@prisma/client";
|
|
2
|
+
import { DateTime } from "luxon";
|
|
3
|
+
import { dateRangeNormalizeToMWY, dateTimeFromDate, dateTimeRangeIntersection, } from "../luxonUtils";
|
|
4
|
+
export const SERVICE_DAILY_RATE_HOURS_MIN = 8;
|
|
5
|
+
export function serviceRateToLuxonRate(rate, timezone) {
|
|
6
|
+
const { startDate, endDate, ...rest } = rate;
|
|
7
|
+
return {
|
|
8
|
+
...rest,
|
|
9
|
+
dateTimeRange: {
|
|
10
|
+
start: dateTimeFromDate(startDate, undefined, timezone ?? undefined),
|
|
11
|
+
end: dateTimeFromDate(endDate, undefined, timezone ?? undefined),
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function serviceBookingPriceBreakdownGetTypeText(pricingInfo) {
|
|
16
|
+
return `${pricingInfo.rateType} ${pricingInfo.pricingType}`;
|
|
17
|
+
}
|
|
18
|
+
export function serviceBookingCalcDayPriceBreakdown(dateTimeRange, serviceRates, isFullDay, hoursRemaining) {
|
|
19
|
+
let pricingInfo = {
|
|
20
|
+
rateType: "General",
|
|
21
|
+
pricingType: "Hourly",
|
|
22
|
+
hours: 0,
|
|
23
|
+
piTotalCents: 0,
|
|
24
|
+
rateCents: 0,
|
|
25
|
+
unitCount: 0,
|
|
26
|
+
dateTimeRange: dateTimeRange,
|
|
27
|
+
// cleaningFee: 0,
|
|
28
|
+
// minimumTimeBlockHours: 0,
|
|
29
|
+
};
|
|
30
|
+
// First check if any service rate has a flat rate - this takes precedence
|
|
31
|
+
const flatRateService = serviceRates.find((rate) => rate != null && (rate.flatRateCents ?? 0) > 0);
|
|
32
|
+
if (flatRateService) {
|
|
33
|
+
pricingInfo.rateType = flatRateService.rateType ?? ServiceRateType.General;
|
|
34
|
+
pricingInfo.pricingType = "Flat";
|
|
35
|
+
pricingInfo.unitCount = 1; // Flat rate is always a single unit
|
|
36
|
+
pricingInfo.hours = hoursRemaining; // Use all remaining hours
|
|
37
|
+
pricingInfo.rateCents = flatRateService.flatRateCents ?? 0;
|
|
38
|
+
pricingInfo.piTotalCents = pricingInfo.rateCents; // Total is just the flat rate
|
|
39
|
+
pricingInfo.dateTimeRange = {
|
|
40
|
+
start: dateTimeRange.start,
|
|
41
|
+
end: dateTimeRange.start.plus({ hours: pricingInfo.hours }),
|
|
42
|
+
};
|
|
43
|
+
return pricingInfo;
|
|
44
|
+
}
|
|
45
|
+
// If no flat rate, proceed with the existing logic for hourly/daily rates
|
|
46
|
+
// Find the first serviceRate where dailyRate or hourlyRate is not null based on isFullDay
|
|
47
|
+
const validServiceRate = serviceRates.find((rate) => rate != null &&
|
|
48
|
+
((isFullDay && rate.dailyRateCents != null) ||
|
|
49
|
+
(!isFullDay && rate.hourlyRateCents != null)));
|
|
50
|
+
if (isFullDay && !validServiceRate) {
|
|
51
|
+
return serviceBookingCalcDayPriceBreakdown(
|
|
52
|
+
//default to non-daily rate if it is null
|
|
53
|
+
dateTimeRange, serviceRates, false, hoursRemaining);
|
|
54
|
+
}
|
|
55
|
+
if (!validServiceRate) {
|
|
56
|
+
return pricingInfo; // Return default if no valid serviceRate is found
|
|
57
|
+
}
|
|
58
|
+
// Set values based on the found serviceRate
|
|
59
|
+
// pricingInfo.cleaningFee = validServiceRate.cleaningFeePerBooking ?? 0;
|
|
60
|
+
// pricingInfo.minimumTimeBlockHours =
|
|
61
|
+
// validServiceRate.minimumTimeBlockHours ?? 0;
|
|
62
|
+
pricingInfo.rateType = validServiceRate.rateType ?? ServiceRateType.General;
|
|
63
|
+
if (isFullDay) {
|
|
64
|
+
pricingInfo.pricingType = ServiceRatePricingType.Daily;
|
|
65
|
+
const days = Math.floor(hoursRemaining / SERVICE_DAILY_RATE_HOURS_MIN);
|
|
66
|
+
pricingInfo.unitCount = days;
|
|
67
|
+
pricingInfo.hours = pricingInfo.unitCount * SERVICE_DAILY_RATE_HOURS_MIN;
|
|
68
|
+
pricingInfo.rateCents = validServiceRate.dailyRateCents ?? 0;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
pricingInfo.pricingType = ServiceRatePricingType.Hourly;
|
|
72
|
+
pricingInfo.unitCount = hoursRemaining;
|
|
73
|
+
pricingInfo.hours = pricingInfo.unitCount;
|
|
74
|
+
pricingInfo.rateCents = validServiceRate.hourlyRateCents ?? 0;
|
|
75
|
+
}
|
|
76
|
+
pricingInfo.piTotalCents = pricingInfo.unitCount * pricingInfo.rateCents;
|
|
77
|
+
pricingInfo.dateTimeRange = {
|
|
78
|
+
start: dateTimeRange.start,
|
|
79
|
+
end: dateTimeRange.start.plus({ hours: pricingInfo.hours }),
|
|
80
|
+
};
|
|
81
|
+
return pricingInfo;
|
|
82
|
+
}
|
|
83
|
+
export function getServiceRatePricingInfo(dateTimeRange, generalRate, dailyRates, //filtered to remove unavailable dates
|
|
84
|
+
specialRates, //filtered to remove unavailable dates
|
|
85
|
+
// overlappingBusinessHours: LuxonDateRange[] | null,
|
|
86
|
+
timezone, hoursRemaining) {
|
|
87
|
+
const specialRate = specialRates?.at(-1); //last element
|
|
88
|
+
const dailyRate = dailyRates?.at(-1); //last element
|
|
89
|
+
// const specialRate = findRateByDate(specialRates, dateTimeRange, timezone) as
|
|
90
|
+
// | ServiceSpecialRatesExt
|
|
91
|
+
// | undefined;
|
|
92
|
+
// const dailyRate = findRateByDate(dailyRates, dateTimeRange, timezone) as
|
|
93
|
+
// | ServiceDailyRatesExt
|
|
94
|
+
// | undefined;
|
|
95
|
+
// const isFullDay =
|
|
96
|
+
// dateTimeRange != null &&
|
|
97
|
+
// overlappingBusinessHours != null &&
|
|
98
|
+
// overlappingBusinessHours.length == 1
|
|
99
|
+
// ? dateRangeDurationMatch(dateTimeRange, overlappingBusinessHours[0])
|
|
100
|
+
// : false;
|
|
101
|
+
// const isFullDay =
|
|
102
|
+
// dateTimeRangeHours(dateTimeRange) >= SERVICE_DAILY_RATE_HOURS_MIN;
|
|
103
|
+
const isFullDay = hoursRemaining >= SERVICE_DAILY_RATE_HOURS_MIN;
|
|
104
|
+
//prefer specialRate over daily, and aily over general, etc...
|
|
105
|
+
const rates = [
|
|
106
|
+
specialRate?.serviceRate,
|
|
107
|
+
dailyRate?.serviceRate,
|
|
108
|
+
generalRate,
|
|
109
|
+
].filter((rate) => !!rate);
|
|
110
|
+
return serviceBookingCalcDayPriceBreakdown(dateTimeRange, rates, isFullDay, hoursRemaining);
|
|
111
|
+
}
|
|
112
|
+
export function serviceGetFilteredRates(serviceRatesAssociation, dateTimeRanges, timezone) {
|
|
113
|
+
return serviceRatesFilter(serviceRatesToLuxonRates(serviceRatesAssociation, dateTimeRanges, timezone), dateTimeRanges);
|
|
114
|
+
}
|
|
115
|
+
export function serviceRatesFilter(rates, dateTimeRanges) {
|
|
116
|
+
const generalRate = rates.generalRate;
|
|
117
|
+
const intersectsWithAnyRange = (rateRange) => dateTimeRanges.some((range) => dateTimeRangeIntersection(rateRange, range) != null);
|
|
118
|
+
const specialRatesLuxon = rates.specialRates
|
|
119
|
+
.filter((rate) => rate.isAvailable && intersectsWithAnyRange(rate.dateTimeRange))
|
|
120
|
+
.sort((a, b) => b.dateTimeRange.start.toMillis() - a.dateTimeRange.start.toMillis()) ?? [];
|
|
121
|
+
const dailyRatesLuxon = rates.dailyRates
|
|
122
|
+
.filter((rate) => intersectsWithAnyRange(rate.dateTimeRange))
|
|
123
|
+
.sort((a, b) => b.dateTimeRange.start.toMillis() - a.dateTimeRange.start.toMillis()) ?? [];
|
|
124
|
+
return {
|
|
125
|
+
generalRate: generalRate,
|
|
126
|
+
specialRates: specialRatesLuxon,
|
|
127
|
+
dailyRates: dailyRatesLuxon,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export function serviceRatesHasRates(rates) {
|
|
131
|
+
//check that we have rates with prices
|
|
132
|
+
const isValidSpecialOrDailyRate = (rate) => rate?.serviceRate &&
|
|
133
|
+
((rate.serviceRate?.dailyRateCents ?? 0) > 0 ||
|
|
134
|
+
(rate.serviceRate?.hourlyRateCents ?? 0) > 0 ||
|
|
135
|
+
(rate.serviceRate?.flatRateCents ?? 0) > 0);
|
|
136
|
+
const isValidGeneralRate = (rate) => rate && ((rate.dailyRateCents ?? 0) > 0 ||
|
|
137
|
+
(rate.hourlyRateCents ?? 0) > 0 ||
|
|
138
|
+
(rate.flatRateCents ?? 0) > 0);
|
|
139
|
+
return (rates.specialRates?.some(isValidSpecialOrDailyRate) ||
|
|
140
|
+
rates.dailyRates?.some(isValidSpecialOrDailyRate) ||
|
|
141
|
+
isValidGeneralRate(rates.generalRate));
|
|
142
|
+
}
|
|
143
|
+
export function serviceRatesToLuxonRates(serviceRatesAssociation, dateTimeRanges, timezone) {
|
|
144
|
+
const generalRate = serviceRatesAssociation?.serviceGeneralRates;
|
|
145
|
+
const specialRatesLuxon = serviceRatesAssociation?.serviceSpecialRates
|
|
146
|
+
?.filter((specialRate) => specialRate.isAvailable)
|
|
147
|
+
?.map((rate) => serviceRateToLuxonRate(rate, timezone)) ?? [];
|
|
148
|
+
const dailyRatesLuxon = serviceRatesAssociation?.serviceDailyRates?.map((rate) => {
|
|
149
|
+
const newRate = serviceRateToLuxonRate(rate, timezone);
|
|
150
|
+
dateTimeRanges.forEach((range) => {
|
|
151
|
+
newRate.dateTimeRange = dateRangeNormalizeToMWY(newRate.dateTimeRange, range);
|
|
152
|
+
});
|
|
153
|
+
return newRate;
|
|
154
|
+
}) ?? [];
|
|
155
|
+
return {
|
|
156
|
+
generalRate: generalRate,
|
|
157
|
+
specialRates: specialRatesLuxon,
|
|
158
|
+
dailyRates: dailyRatesLuxon,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export function serviceRatesAssociationGetBlockedDates(serviceRatesAssociation, timezone) {
|
|
162
|
+
return (serviceRatesAssociation?.serviceSpecialRates
|
|
163
|
+
?.filter((rate) => !rate.isAvailable)
|
|
164
|
+
.map((rate) => {
|
|
165
|
+
const rateRange = {
|
|
166
|
+
start: dateTimeFromDate(rate.startDate, undefined, timezone ?? undefined),
|
|
167
|
+
end: dateTimeFromDate(rate.endDate, undefined, timezone ?? undefined),
|
|
168
|
+
};
|
|
169
|
+
return rateRange;
|
|
170
|
+
// return dateRangeNormalizeToMWY(rateRange, referenceRange);
|
|
171
|
+
}) ?? []);
|
|
172
|
+
}
|
|
173
|
+
export function serviceRatesAssociationGetSpecialRates(serviceRatesAssociation, timezone, filterPastDates = false) {
|
|
174
|
+
return (serviceRatesAssociation?.serviceSpecialRates
|
|
175
|
+
?.filter((rate) => rate.isAvailable)
|
|
176
|
+
.map((rate) => {
|
|
177
|
+
return serviceRateToLuxonRate(rate, timezone);
|
|
178
|
+
})
|
|
179
|
+
.filter((rate) => !filterPastDates ||
|
|
180
|
+
(rate.dateTimeRange.start >= DateTime.now() &&
|
|
181
|
+
rate.dateTimeRange.end >= DateTime.now())) ?? []);
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=serviceRateUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceRateUtils.js","sourceRoot":"","sources":["../../../src/utils/service/serviceRateUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Service, ServiceCancellationPolicy as ServiceCancellationPolicyOption, ServiceSubscriptionStatus, ServiceTypes } from "@prisma/client";
|
|
2
|
+
import { ServiceExt, ServiceExtNoIds, ServiceExtNonSpecific } from "../../extendedSchemas";
|
|
3
|
+
export type ServiceCancellationRefundPolicy = {
|
|
4
|
+
days?: number;
|
|
5
|
+
hours?: number;
|
|
6
|
+
refundPercentage: number;
|
|
7
|
+
};
|
|
8
|
+
export type ServiceCancellationPolicyData = {
|
|
9
|
+
name: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
refundPolicy: ServiceCancellationRefundPolicy[];
|
|
12
|
+
};
|
|
13
|
+
export type ServiceCancellationPolicyMap = {
|
|
14
|
+
[key in ServiceCancellationPolicyOption]: ServiceCancellationPolicyData;
|
|
15
|
+
};
|
|
16
|
+
export declare const SERVICE_CANCELLATION_POLICY_DATA: ServiceCancellationPolicyMap;
|
|
17
|
+
export declare function serviceSubscriptionIsActive(status: ServiceSubscriptionStatus): boolean;
|
|
18
|
+
export interface ServiceSpecificTypeInfo {
|
|
19
|
+
serviceId: string;
|
|
20
|
+
serviceType: ServiceTypes;
|
|
21
|
+
specificFieldName: ServiceSpecificName;
|
|
22
|
+
specificId: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function serviceGetSpecificType<BookingType extends Service>(service: BookingType): ServiceSpecificTypeInfo | null;
|
|
25
|
+
export declare function serviceDetailUrl(serviceId: string, serviceType: string, specificId: string): string;
|
|
26
|
+
export declare function serviceWizardUrl(serviceId: string, serviceType: string, specificId: string, step?: number, substep?: number): string;
|
|
27
|
+
export declare function serviceCheckoutUrl(serviceId: string, serviceType: string, specificId: string): string;
|
|
28
|
+
declare const serviceKeysObject: {
|
|
29
|
+
readonly eventService: true;
|
|
30
|
+
readonly entertainmentService: true;
|
|
31
|
+
readonly vendor: true;
|
|
32
|
+
readonly exhibitor: true;
|
|
33
|
+
readonly sponsor: true;
|
|
34
|
+
readonly venue: true;
|
|
35
|
+
readonly organization: true;
|
|
36
|
+
};
|
|
37
|
+
export type ServiceSpecificName = keyof typeof serviceKeysObject;
|
|
38
|
+
export declare const serviceKeysArray: string[];
|
|
39
|
+
export type ServiceSpecificType = ServiceExt[ServiceSpecificName];
|
|
40
|
+
export declare const specificServiceMap: Record<ServiceTypes, ServiceSpecificName>;
|
|
41
|
+
export declare const serviceTypeToField: (serviceType: ServiceTypes) => ServiceSpecificName;
|
|
42
|
+
type ServiceExtKeyMap = {
|
|
43
|
+
EventServices: "eventService";
|
|
44
|
+
EntertainmentServices: "entertainmentService";
|
|
45
|
+
Vendors: "vendor";
|
|
46
|
+
Exhibitors: "exhibitor";
|
|
47
|
+
Sponsors: "sponsor";
|
|
48
|
+
Venues: "venue";
|
|
49
|
+
Organizations: "organization";
|
|
50
|
+
};
|
|
51
|
+
export type ServiceFieldType = "string" | "integer" | "float" | "boolean" | "date";
|
|
52
|
+
export type ServiceExtKey<T extends ServiceTypes> = ServiceExtKeyMap[T];
|
|
53
|
+
export type ServiceAIInfo = {
|
|
54
|
+
description: string;
|
|
55
|
+
example: string;
|
|
56
|
+
type: ServiceFieldType;
|
|
57
|
+
isArray: boolean;
|
|
58
|
+
};
|
|
59
|
+
export type ServiceSpecificInfoAIMap<T> = {
|
|
60
|
+
[P in keyof T]: ServiceAIInfo;
|
|
61
|
+
};
|
|
62
|
+
export type SpecificServiceInfoAIMap = {
|
|
63
|
+
[K in ServiceTypes]: ServiceSpecificInfoAIMap<Partial<ServiceExt[ServiceExtKey<K>]>>;
|
|
64
|
+
};
|
|
65
|
+
export type ServiceInfoAIMap = {
|
|
66
|
+
[key in keyof ServiceExtNonSpecific]: ServiceAIInfo;
|
|
67
|
+
};
|
|
68
|
+
export declare function aiServiceInfoToInfoString(field: string, info: ServiceAIInfo): string;
|
|
69
|
+
export declare function aiServiceInfoToExampleString(field: string, info: ServiceAIInfo): string;
|
|
70
|
+
export declare const serviceGetInfoAI: (serviceType: ServiceTypes) => Partial<ServiceInfoAIMap>;
|
|
71
|
+
export declare const serviceSpecificInfoAI: SpecificServiceInfoAIMap;
|
|
72
|
+
/**
|
|
73
|
+
* Builds a formatted string of AI context fields, handling optional schemas and types.
|
|
74
|
+
*/
|
|
75
|
+
export declare function buildAIFieldsString<T extends Record<string, unknown>>(data: Partial<T>, info: Partial<Record<keyof T, ServiceAIInfo>>): string;
|
|
76
|
+
export declare function serviceExcludeIds(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
77
|
+
export declare function serviceExcludeOwners(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
78
|
+
export declare function serviceExcludeRates(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
79
|
+
export declare function serviceExcludeDates(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
80
|
+
export declare function serviceExcludeMiscData(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
81
|
+
export declare function serviceRelevantData(service: Partial<ServiceExt>): Partial<ServiceExtNoIds>;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=serviceUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serviceUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/service/serviceUtils.ts"],"names":[],"mappings":"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"}
|