@driveflux/api-functions 1.0.70 → 1.0.72

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/auth/confirm.js +29 -24
  2. package/dist/auth/emails.js +13 -12
  3. package/dist/auth/formatter.js +5 -5
  4. package/dist/auth/otp.js +50 -66
  5. package/dist/auth/register.js +34 -42
  6. package/dist/auth/tokens.d.ts +3 -3
  7. package/dist/auth/tokens.js +55 -58
  8. package/dist/auth/verifications.js +52 -53
  9. package/dist/constants.js +1 -0
  10. package/dist/create-logger.js +2 -1
  11. package/dist/mailjet/calls/manage-contacts-in-list.js +6 -5
  12. package/dist/mailjet/calls/manage-subscription-status.js +5 -4
  13. package/dist/mailjet/calls/request-service.js +6 -7
  14. package/dist/mailjet/refresh-email-preferences.js +12 -11
  15. package/dist/mailjet/set-contact.js +12 -11
  16. package/dist/mailjet/types.js +2 -1
  17. package/dist/mailjet/utils/convert-to-array.js +6 -8
  18. package/dist/mailjet/utils/extract-email-preferences.js +15 -14
  19. package/dist/mailjet/utils/lists.js +8 -7
  20. package/dist/mailjet/utils/update-email-references.js +15 -16
  21. package/dist/notion/client.js +19 -22
  22. package/dist/notion/helpful.js +9 -6
  23. package/dist/notion/schemas/block.js +48 -42
  24. package/dist/notion/schemas/common.js +14 -9
  25. package/dist/notion/schemas/database.d.ts +3 -3
  26. package/dist/notion/schemas/database.js +60 -62
  27. package/dist/notion/schemas/emoji.js +2 -1
  28. package/dist/notion/schemas/file.d.ts +1 -1
  29. package/dist/notion/schemas/file.js +9 -9
  30. package/dist/notion/schemas/kb.d.ts +4 -4
  31. package/dist/notion/schemas/kb.js +6 -5
  32. package/dist/notion/schemas/page.d.ts +4 -4
  33. package/dist/notion/schemas/page.js +61 -72
  34. package/dist/notion/schemas/parent.js +5 -4
  35. package/dist/notion/schemas/user.js +19 -18
  36. package/dist/reservation/agree.d.ts +308 -1
  37. package/dist/reservation/agree.js +7 -6
  38. package/dist/reservation/checks.d.ts +1 -1
  39. package/dist/reservation/checks.js +4 -3
  40. package/dist/reservation/display-vehicle.d.ts +21 -16
  41. package/dist/reservation/display-vehicle.d.ts.map +1 -1
  42. package/dist/reservation/display-vehicle.js +74 -66
  43. package/dist/reservation/display-vehicle.js.map +1 -1
  44. package/dist/reservation/ensure-user-billing-address.js +11 -9
  45. package/dist/reservation/fetch-or-create.d.ts +2 -2
  46. package/dist/reservation/fetch-or-create.d.ts.map +1 -1
  47. package/dist/reservation/fetch-or-create.js +102 -83
  48. package/dist/reservation/fetch-or-create.js.map +1 -1
  49. package/dist/reservation/invoice.d.ts +3 -3
  50. package/dist/reservation/invoice.d.ts.map +1 -1
  51. package/dist/reservation/invoice.js +125 -76
  52. package/dist/reservation/invoice.js.map +1 -1
  53. package/dist/reservation/payer.js +6 -5
  54. package/dist/reservation/payment-intent-sync.js +6 -4
  55. package/dist/reservation/reserve.d.ts.map +1 -1
  56. package/dist/reservation/reserve.js +5 -3
  57. package/dist/reservation/reserve.js.map +1 -1
  58. package/dist/reservation/types.d.ts +1 -0
  59. package/dist/reservation/types.d.ts.map +1 -1
  60. package/dist/reservation/types.js +2 -1
  61. package/dist/reservation/vehicle.js +16 -13
  62. package/dist/slack.js +29 -24
  63. package/dist/validation.js +79 -77
  64. package/dist/vehicle/vehicle-pricing/constants.js +19 -22
  65. package/dist/vehicle/vehicle-pricing/index.js +42 -28
  66. package/dist/vehicle/vehicle-pricing/types.js +2 -1
  67. package/package.json +11 -10
@@ -1,75 +1,73 @@
1
1
  import { config } from '@driveflux/config/backend';
2
- import { prisma } from '@driveflux/db';
2
+ import { prisma, } from '@driveflux/db';
3
3
  import { generateId } from '@driveflux/db/id';
4
4
  import { createPricingController } from '@driveflux/db/models/vehicle';
5
- import { getFluxExcessMileage, getFluxPiceMatrix, getHostExcessMileage, getHostsMatrix, getRecommendedMotorcycleDeposit, getStartFeeMatrix } from '../vehicle/vehicle-pricing/index.js';
6
- export const fetchDisplayVehicle = async (displayVehicle)=>{
7
- return typeof displayVehicle === 'string' ? await prisma.displayVehicle.findFirst({
8
- where: {
9
- id: displayVehicle
10
- }
11
- }) : displayVehicle;
5
+ import { getFluxExcessMileage, getFluxPiceMatrix, getHostExcessMileage, getHostsMatrix, getRecommendedMotorcycleDeposit, getStartFeeMatrix, } from '../vehicle/vehicle-pricing/index.js';
6
+ export const fetchDisplayVehicle = async (displayVehicle) => {
7
+ return typeof displayVehicle === 'string'
8
+ ? await prisma.displayVehicle.findFirst({ where: { id: displayVehicle } })
9
+ : displayVehicle;
12
10
  };
13
- export const createVehicleFromDisplayVehicle = async (displayVehicle, selectedColor)=>{
11
+ export const createVehicleFromDisplayVehicle = async (displayVehicle, selectedColor) => {
14
12
  const dv = await fetchDisplayVehicle(displayVehicle);
15
- if (!dv || typeof dv !== 'object') return;
16
- if (!dv.details) return;
17
- const mainImage = dv.images.main.find((m)=>m.variant === selectedColor)?.url;
13
+ if (!dv || typeof dv !== 'object')
14
+ return;
15
+ if (!dv.details)
16
+ return;
17
+ const mainImage = dv.images.main.find((m) => m.variant === selectedColor)?.url;
18
18
  const vehicleData = {
19
19
  id: generateId('Vehicle'),
20
20
  ...transformBasicVehicleData(dv),
21
21
  images: [
22
- ...mainImage ? [
23
- transfromSingleImage(mainImage)
24
- ] : [],
25
- ...transformImages(dv.images)
22
+ ...(mainImage ? [transfromSingleImage(mainImage)] : []),
23
+ ...transformImages(dv.images),
26
24
  ],
27
25
  ...transformBasePrices(dv.pricing),
28
26
  pricing: transformPriceMatrix(dv.type, dv.pricing),
29
27
  details: transformDetails(dv.details, selectedColor),
30
28
  host: {
31
29
  connect: {
32
- id: dv.defaultHostId
33
- }
30
+ id: dv.defaultHostId,
31
+ },
34
32
  },
35
33
  displayVehicle: {
36
34
  connect: {
37
- id: dv.id
38
- }
39
- }
35
+ id: dv.id,
36
+ },
37
+ },
40
38
  };
41
39
  return await prisma.vehicle.create({
42
40
  data: vehicleData,
43
41
  include: {
44
- host: true
45
- }
42
+ host: true,
43
+ },
46
44
  });
47
45
  };
48
- export const transfromVehicleDisplayToVehicle = async (displayVehicle, selectedColor)=>{
46
+ export const transfromVehicleDisplayToVehicle = async (displayVehicle, selectedColor) => {
49
47
  const dv = await fetchDisplayVehicle(displayVehicle);
50
- if (!dv || typeof dv !== 'object') return;
51
- if (!dv.details) return;
52
- const mainImage = dv.images.main.find((m)=>m.variant === selectedColor)?.url;
48
+ if (!dv || typeof dv !== 'object')
49
+ return;
50
+ if (!dv.details)
51
+ return;
52
+ const mainImage = dv.images.main.find((m) => m.variant === selectedColor)?.url;
53
53
  return {
54
54
  id: dv.id,
55
55
  ...transformBasicVehicleData(dv),
56
56
  images: [
57
- ...mainImage ? [
58
- transfromSingleImage(mainImage)
59
- ] : [],
60
- ...transformImages(dv.images)
57
+ ...(mainImage ? [transfromSingleImage(mainImage)] : []),
58
+ ...transformImages(dv.images),
61
59
  ],
62
60
  ...transformBasePrices(dv.pricing),
63
61
  pricing: transformPriceMatrix(dv.type, dv.pricing),
64
62
  details: transformDetails(dv.details, selectedColor),
65
63
  host: {
66
64
  address: {
67
- state: 'Kuala Lumpur'
68
- }
69
- }
65
+ state: 'Kuala Lumpur',
66
+ },
67
+ },
70
68
  };
71
69
  };
72
- export const transformBasicVehicleData = (dv)=>{
70
+ export const transformBasicVehicleData = (dv) => {
73
71
  return {
74
72
  registrationNumber: null,
75
73
  featured: false,
@@ -87,17 +85,17 @@ export const transformBasicVehicleData = (dv)=>{
87
85
  type: dv.type,
88
86
  niceName: `${dv.make} ${dv.vehicleModel} ${dv.variant} ${dv.year}`,
89
87
  niceNameShort: `${dv.make} ${dv.vehicleModel}`,
90
- appliedCoupon: dv.appliedCoupon
88
+ appliedCoupon: dv.appliedCoupon,
91
89
  };
92
90
  };
93
- export const transformImages = (images)=>{
91
+ export const transformImages = (images) => {
94
92
  return [
95
93
  transfromSingleImage(images.exterior[0].url, 'exterior'),
96
94
  transfromSingleImage(images.interior[0].url, 'interior'),
97
- ...images.gallery.map((i)=>transfromSingleImage(i.url))
95
+ ...images.gallery.map((i) => transfromSingleImage(i.url)),
98
96
  ];
99
97
  };
100
- const transfromSingleImage = (imageUrl, inspectionType)=>{
98
+ const transfromSingleImage = (imageUrl, inspectionType) => {
101
99
  return {
102
100
  default: imageUrl,
103
101
  blurBase64: null,
@@ -108,20 +106,20 @@ const transfromSingleImage = (imageUrl, inspectionType)=>{
108
106
  description: null,
109
107
  inspection: !!inspectionType,
110
108
  inspectionType: inspectionType || null,
111
- notActualPhoto: true
109
+ notActualPhoto: true,
112
110
  };
113
111
  };
114
- const transformBasePrices = (pricing)=>{
112
+ const transformBasePrices = (pricing) => {
115
113
  return {
116
114
  basePrice: pricing.matrix.plan36.lite,
117
115
  basePricePlan1: pricing.matrix.plan1.lite,
118
116
  basePricePlan12: pricing.matrix.plan12.lite,
119
117
  basePricePlan24: pricing.matrix.plan24.lite,
120
118
  basePricePlan36: pricing.matrix.plan36.lite,
121
- basePricePlan60: pricing.matrix.plan60.lite
119
+ basePricePlan60: pricing.matrix.plan60.lite,
122
120
  };
123
121
  };
124
- const transformPriceMatrix = (vehicleType, pricing)=>{
122
+ const transformPriceMatrix = (vehicleType, pricing) => {
125
123
  const baseline = pricing?.matrix.plan36.lite;
126
124
  const ultraTier = 'tier1';
127
125
  const fluxPriceCoefficient = 25;
@@ -134,14 +132,18 @@ const transformPriceMatrix = (vehicleType, pricing)=>{
134
132
  const { availablePlans, availableMileagePackages } = getNonZeroKeys(priceMatrix);
135
133
  const pricingController = createPricingController({
136
134
  coefficient: fluxPriceCoefficient,
137
- vehicleType
135
+ vehicleType,
138
136
  });
139
137
  const startFeeMatrix = excludeServiceFeesFrom(getStartFeeMatrix(pricingController, baseline, flatPricing));
140
138
  const hostMatrix = excludeServiceFeesFrom(getHostsMatrix(pricingController, baseline, ultraTier, flatPricing));
141
139
  const hostExcessMileage = getHostExcessMileage(pricingController, baseline);
142
- const fluxPriceMatrix = excludeServiceFeesFrom(getFluxPiceMatrix(pricingController, vehicleType, baseline, hostMatrix, ultraTier, flatPricing));
140
+ const fluxPriceMatrix = pricing.keepPricingIntact
141
+ ? priceMatrix
142
+ : excludeServiceFeesFrom(getFluxPiceMatrix(pricingController, vehicleType, baseline, hostMatrix, ultraTier, flatPricing));
143
143
  const fluxExcessMileage = getFluxExcessMileage(pricingController, baseline);
144
- const recommendedDeposit = pricing.refundableDeposit || vehicleType === 'motorcycle' ? getRecommendedMotorcycleDeposit(baseline) : null;
144
+ const recommendedDeposit = pricing.refundableDeposit || vehicleType === 'motorcycle'
145
+ ? getRecommendedMotorcycleDeposit(baseline)
146
+ : null;
145
147
  return {
146
148
  tmv,
147
149
  gfv,
@@ -160,31 +162,31 @@ const transformPriceMatrix = (vehicleType, pricing)=>{
160
162
  excessMileage: fluxExcessMileage,
161
163
  originalExcessMileage: fluxExcessMileage,
162
164
  matrixComments: null,
163
- add: null
165
+ add: null,
164
166
  },
165
167
  hostTake: {
166
168
  matrix: hostMatrix,
167
169
  originalMatrix: hostMatrix,
168
170
  excessMileage: hostExcessMileage,
169
171
  originalExcessMileage: hostExcessMileage,
170
- matrixComments: null
172
+ matrixComments: null,
171
173
  },
172
174
  startFee: {
173
175
  matrix: startFeeMatrix,
174
176
  originalMatrix: startFeeMatrix,
175
- matrixComments: null
176
- }
177
+ matrixComments: null,
178
+ },
177
179
  };
178
180
  };
179
- const getNonZeroKeys = (matrix)=>{
181
+ const getNonZeroKeys = (matrix) => {
180
182
  const planKeys = new Set();
181
183
  const mileageKeys = new Set();
182
- for (const [plan, mileageMap] of Object.entries(matrix)){
184
+ for (const [plan, mileageMap] of Object.entries(matrix)) {
183
185
  const entries = Object.entries(mileageMap ?? {});
184
- const hasNonZero = entries.some(([_, value])=>(value ?? 0) > 0);
186
+ const hasNonZero = entries.some(([_, value]) => (value ?? 0) > 0);
185
187
  if (hasNonZero) {
186
188
  planKeys.add(plan);
187
- for (const [mileage, value] of entries){
189
+ for (const [mileage, value] of entries) {
188
190
  if ((value ?? 0) > 0) {
189
191
  mileageKeys.add(mileage);
190
192
  }
@@ -193,20 +195,20 @@ const getNonZeroKeys = (matrix)=>{
193
195
  }
194
196
  return {
195
197
  availablePlans: Array.from(planKeys),
196
- availableMileagePackages: Array.from(mileageKeys)
198
+ availableMileagePackages: Array.from(mileageKeys),
197
199
  };
198
200
  };
199
- const _getInspection = ()=>{
201
+ const _getInspection = () => {
200
202
  return {
201
203
  exterior: 5,
202
204
  interior: 5,
203
205
  engine: 5,
204
206
  frame: 5,
205
207
  total: 5,
206
- comment: 'COMMENT HERE'
208
+ comment: 'COMMENT HERE',
207
209
  };
208
210
  };
209
- const transformDetails = (details, selectColor)=>{
211
+ const transformDetails = (details, selectColor) => {
210
212
  const color = selectColor || details.colors[0].name || '';
211
213
  return {
212
214
  numberOfSeats: details.numberOfSeats,
@@ -214,25 +216,31 @@ const transformDetails = (details, selectColor)=>{
214
216
  bodyType: details.bodyType,
215
217
  transmission: details.transmission,
216
218
  engineType: details.fuelType,
217
- engineCapacity: details.fuelType === 'electric' ? details.batteryCapacity : details.engineCapacity,
219
+ engineCapacity: details.fuelType === 'electric'
220
+ ? details.batteryCapacity
221
+ : details.engineCapacity,
218
222
  drivetrain: details.drivetrain,
219
223
  accelerationTo100km: details.accelerationTo100km,
220
224
  fuelConsumptionLitersPer100Km: details.fuelConsumptionLitersPer100Km,
221
225
  color,
222
226
  features: details.features,
223
- condition: 'new'
227
+ condition: 'new',
224
228
  };
225
229
  };
226
- const excludeServiceFeesFrom = (originalMatrix)=>{
230
+ const excludeServiceFeesFrom = (originalMatrix) => {
227
231
  const matrix = {};
228
- for (const [planKey, planValue] of Object.entries(originalMatrix)){
229
- if (!planValue) continue;
230
- if (!matrix[planKey]) matrix[planKey] = {};
231
- for (const [mileageKey, price] of Object.entries(planValue)){
232
+ for (const [planKey, planValue] of Object.entries(originalMatrix)) {
233
+ if (!planValue)
234
+ continue;
235
+ if (!matrix[planKey])
236
+ matrix[planKey] = {};
237
+ for (const [mileageKey, price] of Object.entries(planValue)) {
232
238
  if (typeof price === 'number') {
233
- matrix[planKey][mileageKey] = price / (1 + config.taxRate);
239
+ matrix[planKey][mileageKey] =
240
+ price / (1 + config.taxRate);
234
241
  }
235
242
  }
236
243
  }
237
244
  return matrix;
238
245
  };
246
+ //# sourceMappingURL=display-vehicle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"display-vehicle.js","sourceRoot":"","sources":["../../src/reservation/display-vehicle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"display-vehicle.js","sourceRoot":"","sources":["../../src/reservation/display-vehicle.ts"],"names":[],"mappings":"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"}
@@ -3,27 +3,29 @@ import { makeProblem, PROBLEM_INTERNAL } from '@driveflux/problem';
3
3
  import { Err, Ok } from '@driveflux/result';
4
4
  import { createScopedLogger } from '../create-logger.js';
5
5
  const log = createScopedLogger('reservation:ensure-user-billing-address');
6
- export const ensureUserBillingAddress = async (userOrBusiness, deliveryAddresses)=>{
6
+ export const ensureUserBillingAddress = async (userOrBusiness, deliveryAddresses) => {
7
7
  if (userOrBusiness.addresses?.billing) {
8
8
  return new Ok(userOrBusiness);
9
9
  }
10
10
  try {
11
11
  const fullQuery = {
12
- where: {
13
- id: userOrBusiness.id
14
- },
12
+ where: { id: userOrBusiness.id },
15
13
  data: {
16
14
  addresses: {
17
15
  home: deliveryAddresses.home,
18
- billing: deliveryAddresses.billing
19
- }
20
- }
16
+ billing: deliveryAddresses.billing,
17
+ },
18
+ },
21
19
  };
22
20
  // Use the delivery addresses
23
- const updatedUserOrBusiness = userOrBusiness.object === 'user' ? await prisma.user.update(fullQuery) : await prisma.business.update(fullQuery);
21
+ const updatedUserOrBusiness = userOrBusiness.object === 'user'
22
+ ? await prisma.user.update(fullQuery)
23
+ : await prisma.business.update(fullQuery);
24
24
  return new Ok(updatedUserOrBusiness);
25
- } catch (error) {
25
+ }
26
+ catch (error) {
26
27
  log.error(error, 'Failed to ensure user billing address');
27
28
  return new Err(makeProblem(PROBLEM_INTERNAL, 'Failed to ensure user billing address'));
28
29
  }
29
30
  };
31
+ //# sourceMappingURL=ensure-user-billing-address.js.map
@@ -2,9 +2,9 @@ import { type Business, type Invoice, type SubscriptionReservation, type User, t
2
2
  import { type PromisedResult } from '@driveflux/result';
3
3
  import type { ReserveVehicleParams } from './types.js';
4
4
  type FetchOrCreateReservationParams = {
5
- vehicle: Pick<Vehicle, 'id' | 'make' | 'vehicleModel' | 'variant' | 'year' | 'type'>;
5
+ vehicle: Pick<Vehicle, 'id' | 'make' | 'vehicleModel' | 'variant' | 'year' | 'type' | 'pricing'>;
6
6
  payer: User | Business;
7
- body: Pick<ReserveVehicleParams, 'subscribingUser' | 'plan' | 'mileagePackage' | 'couponCode' | 'referralCode' | 'asBusiness' | 'source' | 'paymentIntentId' | 'analytics' | 'deliveryAddresses' | 'deliveryDate' | 'requestUser' | 'ipAddress' | 'freeReservation' | 'freeReservationReason'>;
7
+ body: Pick<ReserveVehicleParams, 'subscribingUser' | 'plan' | 'mileagePackage' | 'couponCode' | 'referralCode' | 'asBusiness' | 'source' | 'paymentIntentId' | 'analytics' | 'deliveryAddresses' | 'deliveryDate' | 'requestUser' | 'ipAddress' | 'freeReservation' | 'freeReservationReason' | 'fullBooking'>;
8
8
  };
9
9
  export declare const fetchOrCreateReservation: ({ vehicle, payer, body, }: FetchOrCreateReservationParams) => PromisedResult<SubscriptionReservation & {
10
10
  invoice: Invoice;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-or-create.d.ts","sourceRoot":"","sources":["../../src/reservation/fetch-or-create.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,OAAO,EAGZ,KAAK,uBAAuB,EAC5B,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,MAAM,eAAe,CAAA;AAGtB,OAAO,EAAM,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAM3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,KAAK,8BAA8B,GAAG;IACrC,OAAO,EAAE,IAAI,CACZ,OAAO,EACP,IAAI,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAC5D,CAAA;IACD,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAA;IACtB,IAAI,EAAE,IAAI,CACT,oBAAoB,EAClB,iBAAiB,GACjB,MAAM,GACN,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,WAAW,GACX,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,uBAAuB,CACzB,CAAA;CACD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,2BAI5C,8BAA8B,KAAG,cAAc,CACjD,uBAAuB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAmJ9C,CAAA"}
1
+ {"version":3,"file":"fetch-or-create.d.ts","sourceRoot":"","sources":["../../src/reservation/fetch-or-create.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,OAAO,EAGZ,KAAK,uBAAuB,EAC5B,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,MAAM,eAAe,CAAA;AAItB,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMhE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,KAAK,8BAA8B,GAAG;IACrC,OAAO,EAAE,IAAI,CACZ,OAAO,EACP,IAAI,GAAG,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CACxE,CAAA;IACD,KAAK,EAAE,IAAI,GAAG,QAAQ,CAAA;IACtB,IAAI,EAAE,IAAI,CACT,oBAAoB,EAClB,iBAAiB,GACjB,MAAM,GACN,gBAAgB,GAChB,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,QAAQ,GACR,iBAAiB,GACjB,WAAW,GACX,mBAAmB,GACnB,cAAc,GACd,aAAa,GACb,WAAW,GACX,iBAAiB,GACjB,uBAAuB,GACvB,aAAa,CACf,CAAA;CACD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,2BAI5C,8BAA8B,KAAG,cAAc,CACjD,uBAAuB,GAAG;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAmK9C,CAAA"}
@@ -1,11 +1,12 @@
1
- import { prisma } from '@driveflux/db';
1
+ import { prisma, } from '@driveflux/db';
2
2
  import { generateId } from '@driveflux/db/id';
3
+ import { makeProblem, PROBLEM_UNKNOWN } from '@driveflux/problem';
3
4
  import { reportError } from '@driveflux/reporter';
4
- import { Ok } from '@driveflux/result';
5
+ import { Err, Ok } from '@driveflux/result';
5
6
  import { slackLater } from '../slack.js';
6
- import { createReservationInvoice, updateReservationInvoiceIfNeeded } from './invoice.js';
7
- export const fetchOrCreateReservation = async ({ vehicle, payer, body })=>{
8
- const { subscribingUser, plan, mileagePackage, couponCode, referralCode, asBusiness, source, deliveryAddresses, deliveryDate, analytics, paymentIntentId, freeReservation, freeReservationReason } = body;
7
+ import { createReservationInvoice, updateReservationInvoiceIfNeeded, } from './invoice.js';
8
+ export const fetchOrCreateReservation = async ({ vehicle, payer, body, }) => {
9
+ const { subscribingUser, plan, mileagePackage, couponCode, referralCode, asBusiness, source, deliveryAddresses, deliveryDate, analytics, paymentIntentId, freeReservation, freeReservationReason, fullBooking, } = body;
9
10
  try {
10
11
  const previousReservation = await prisma.subscriptionReservation.findFirst({
11
12
  where: {
@@ -19,15 +20,17 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body })=>{
19
20
  source,
20
21
  // If the subscription ID was populated, this means that this reservation was consumed into a subsription,
21
22
  // so we shouldn't re-use it
22
- subscription: null
23
+ subscription: null,
23
24
  },
24
25
  orderBy: {
25
- updatedAt: 'desc'
26
+ updatedAt: 'desc',
26
27
  },
27
28
  include: {
28
- invoice: true
29
- }
29
+ invoice: true,
30
+ },
30
31
  });
32
+ console.log('Previous reservation', previousReservation);
33
+ console.log('Previous reservation amount', previousReservation?.invoice.total);
31
34
  if (previousReservation) {
32
35
  if (previousReservation.invoice.voided) {
33
36
  return recreateReservationInvoiceAndUpdateReservation(previousReservation, body, vehicle, payer);
@@ -39,7 +42,7 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body })=>{
39
42
  'partiallyPaid',
40
43
  'partiallyRefunded',
41
44
  'refunded',
42
- 'pendingRefund'
45
+ 'pendingRefund',
43
46
  ];
44
47
  if (wrongStatuses.includes(previousReservation.invoice.status)) {
45
48
  const updatedReservation = await recreateReservationInvoiceAndUpdateReservation(previousReservation, body, vehicle, payer);
@@ -52,16 +55,16 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body })=>{
52
55
  text: {
53
56
  type: 'plain_text',
54
57
  text: '‼️ Reservation invoice in wrong status',
55
- emoji: true
56
- }
58
+ emoji: true,
59
+ },
57
60
  },
58
61
  {
59
62
  type: 'section',
60
63
  text: {
61
64
  type: 'plain_text',
62
- text: `The reservation invoice ${previousReservation.invoice.id} was in a wrong status (${previousReservation.invoice.status}), it was discarded and a new invoice (${updatedReservation.val.id}) was created, however, investigate the issue.`
63
- }
64
- }
65
+ text: `The reservation invoice ${previousReservation.invoice.id} was in a wrong status (${previousReservation.invoice.status}), it was discarded and a new invoice (${updatedReservation.val.id}) was created, however, investigate the issue.`,
66
+ },
67
+ },
65
68
  ]);
66
69
  return updatedReservation;
67
70
  }
@@ -73,104 +76,119 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body })=>{
73
76
  // Otherwise, we need to create a new reservation
74
77
  return new Ok(previousReservation);
75
78
  }
76
- } catch (error) {
79
+ }
80
+ catch (error) {
77
81
  // We couldn't fetch the reservation, so we create a new one and just log this
78
82
  await reportError(error);
79
83
  }
80
- const reservationId = generateId('SubscriptionReservation');
81
- // Create the reservation invoice
82
- const invoiceResult = await createReservationInvoice({
83
- invoiceId: generateId('Invoice'),
84
- couponCode,
85
- plan,
86
- mileagePackage,
87
- referralCode,
88
- reservationId,
89
- paymentIntentId,
90
- freeReservation,
91
- freeReservationReason,
92
- analytics,
93
- vehicle,
94
- payer,
95
- subscribingUser
96
- });
97
- if (invoiceResult.err) {
98
- return invoiceResult;
84
+ try {
85
+ const reservationId = generateId('SubscriptionReservation');
86
+ // Create the reservation invoice
87
+ const invoiceResult = await createReservationInvoice({
88
+ invoiceId: generateId('Invoice'),
89
+ couponCode,
90
+ plan,
91
+ mileagePackage,
92
+ referralCode,
93
+ reservationId,
94
+ paymentIntentId,
95
+ freeReservation,
96
+ freeReservationReason,
97
+ analytics,
98
+ vehicle,
99
+ payer,
100
+ subscribingUser,
101
+ fullBooking,
102
+ });
103
+ if (invoiceResult.err) {
104
+ return invoiceResult;
105
+ }
106
+ const reservation = await createReservation({
107
+ reservationId,
108
+ invoiceId: invoiceResult.val.id,
109
+ subscribingUserId: subscribingUser.id,
110
+ vehicleId: vehicle.id,
111
+ businessId: payer.object === 'business' ? payer.id : undefined,
112
+ plan,
113
+ mileagePackage,
114
+ couponCode,
115
+ referralCode,
116
+ analytics,
117
+ deliveryAddresses,
118
+ deliveryDate,
119
+ asBusiness,
120
+ source,
121
+ });
122
+ return new Ok(reservation);
123
+ }
124
+ catch (e) {
125
+ await reportError(e);
126
+ if (typeof e === 'object' && e && 'message' in e && e.message) {
127
+ return new Err(makeProblem(PROBLEM_UNKNOWN, e.message));
128
+ }
129
+ return new Err(makeProblem(PROBLEM_UNKNOWN, 'Unknown error'));
99
130
  }
100
- const reservation = await createReservation({
101
- reservationId,
102
- invoiceId: invoiceResult.val.id,
103
- subscribingUserId: subscribingUser.id,
104
- vehicleId: vehicle.id,
105
- businessId: payer.object === 'business' ? payer.id : undefined,
106
- plan,
107
- mileagePackage,
108
- couponCode,
109
- referralCode,
110
- analytics,
111
- deliveryAddresses,
112
- deliveryDate,
113
- asBusiness,
114
- source
115
- });
116
- return new Ok(reservation);
117
131
  };
118
- const createReservation = async ({ reservationId, invoiceId, subscribingUserId, vehicleId, businessId, plan, mileagePackage, couponCode, referralCode, analytics, deliveryAddresses, deliveryDate, asBusiness, source })=>{
132
+ const createReservation = async ({ reservationId, invoiceId, subscribingUserId, vehicleId, businessId, plan, mileagePackage, couponCode, referralCode, analytics, deliveryAddresses, deliveryDate, asBusiness, source, }) => {
119
133
  return await prisma.subscriptionReservation.create({
120
134
  data: {
121
135
  id: reservationId,
122
136
  invoice: {
123
137
  connect: {
124
- id: invoiceId
125
- }
138
+ id: invoiceId,
139
+ },
126
140
  },
127
141
  user: {
128
142
  connect: {
129
- id: subscribingUserId
130
- }
143
+ id: subscribingUserId,
144
+ },
131
145
  },
132
146
  vehicle: {
133
147
  connect: {
134
- id: vehicleId
135
- }
148
+ id: vehicleId,
149
+ },
136
150
  },
137
- ...businessId ? {
138
- business: {
139
- connect: {
140
- id: businessId
141
- }
151
+ ...(businessId
152
+ ? {
153
+ business: {
154
+ connect: {
155
+ id: businessId,
156
+ },
157
+ },
142
158
  }
143
- } : undefined,
159
+ : undefined),
144
160
  plan,
145
161
  mileagePackage,
146
162
  couponCode: couponCode,
147
163
  deliveryAddresses: deliveryAddresses,
148
164
  deliveryDate: deliveryDate,
149
- ...referralCode ? {
150
- referral: {
151
- connect: {
152
- id: referralCode
153
- }
165
+ ...(referralCode
166
+ ? {
167
+ referral: {
168
+ connect: {
169
+ id: referralCode,
170
+ },
171
+ },
154
172
  }
155
- } : undefined,
173
+ : undefined),
156
174
  asBusiness: !!asBusiness,
157
175
  source,
158
176
  metadata: {
159
- analytics
160
- }
177
+ analytics,
178
+ },
161
179
  },
162
180
  include: {
163
- invoice: true
164
- }
181
+ invoice: true,
182
+ },
165
183
  });
166
184
  };
167
- const recreateReservationInvoiceAndUpdateReservation = async (previousReservation, body, vehicle, payer)=>{
185
+ const recreateReservationInvoiceAndUpdateReservation = async (previousReservation, body, vehicle, payer) => {
168
186
  const invoiceResult = await createReservationInvoice({
169
187
  ...body,
170
188
  invoiceId: generateId('Invoice'),
171
189
  reservationId: previousReservation.id,
172
190
  vehicle,
173
- payer
191
+ payer,
174
192
  });
175
193
  if (!invoiceResult.ok) {
176
194
  return invoiceResult;
@@ -178,18 +196,19 @@ const recreateReservationInvoiceAndUpdateReservation = async (previousReservatio
178
196
  const invoice = invoiceResult.val;
179
197
  const updatedReservation = await prisma.subscriptionReservation.update({
180
198
  where: {
181
- id: previousReservation.id
199
+ id: previousReservation.id,
182
200
  },
183
201
  data: {
184
202
  invoice: {
185
203
  connect: {
186
- id: invoice.id
187
- }
188
- }
204
+ id: invoice.id,
205
+ },
206
+ },
189
207
  },
190
208
  include: {
191
- invoice: true
192
- }
209
+ invoice: true,
210
+ },
193
211
  });
194
212
  return new Ok(updatedReservation);
195
213
  };
214
+ //# sourceMappingURL=fetch-or-create.js.map