@driveflux/api-functions 0.0.7-next.6 → 0.0.7-next.8
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/auth/confirm.js +24 -29
- package/dist/auth/emails.js +12 -13
- package/dist/auth/formatter.js +5 -5
- package/dist/auth/otp.js +66 -50
- package/dist/auth/register.js +43 -35
- package/dist/auth/register.js.map +1 -1
- package/dist/auth/tokens.js +58 -55
- package/dist/auth/verifications.js +53 -52
- package/dist/constants.js +0 -1
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts +1 -1
- package/dist/mailjet/calls/manage-contacts-in-list.d.ts.map +1 -1
- package/dist/mailjet/calls/manage-contacts-in-list.js +6 -7
- package/dist/mailjet/calls/manage-contacts-in-list.js.map +1 -1
- package/dist/mailjet/calls/manage-subscription-status.d.ts +1 -1
- package/dist/mailjet/calls/manage-subscription-status.d.ts.map +1 -1
- package/dist/mailjet/calls/manage-subscription-status.js +5 -6
- package/dist/mailjet/calls/manage-subscription-status.js.map +1 -1
- package/dist/mailjet/calls/request-service.js +7 -6
- package/dist/mailjet/refresh-email-preferences.js +11 -12
- package/dist/mailjet/set-contact.js +11 -12
- package/dist/mailjet/types.js +1 -2
- package/dist/mailjet/utils/convert-to-array.d.ts +1 -1
- package/dist/mailjet/utils/convert-to-array.d.ts.map +1 -1
- package/dist/mailjet/utils/convert-to-array.js +8 -6
- package/dist/mailjet/utils/extract-email-preferences.d.ts +1 -1
- package/dist/mailjet/utils/extract-email-preferences.d.ts.map +1 -1
- package/dist/mailjet/utils/extract-email-preferences.js +14 -15
- package/dist/mailjet/utils/lists.js +7 -8
- package/dist/mailjet/utils/update-email-references.d.ts +1 -1
- package/dist/mailjet/utils/update-email-references.d.ts.map +1 -1
- package/dist/mailjet/utils/update-email-references.js +16 -15
- package/dist/notion/client.js +22 -19
- package/dist/notion/helpful.js +6 -9
- package/dist/notion/schemas/block.js +42 -48
- package/dist/notion/schemas/common.js +9 -14
- package/dist/notion/schemas/database.js +62 -60
- package/dist/notion/schemas/emoji.js +1 -2
- package/dist/notion/schemas/file.js +9 -9
- package/dist/notion/schemas/kb.js +5 -6
- package/dist/notion/schemas/page.js +72 -61
- package/dist/notion/schemas/parent.js +4 -5
- package/dist/notion/schemas/user.js +18 -19
- package/dist/reservation/agree.js +6 -7
- package/dist/reservation/checks.js +3 -4
- package/dist/reservation/display-vehicle.js +65 -71
- package/dist/reservation/display-vehicle.js.map +1 -1
- package/dist/reservation/fetch-or-create.d.ts +1 -1
- package/dist/reservation/fetch-or-create.d.ts.map +1 -1
- package/dist/reservation/fetch-or-create.js +11 -3
- package/dist/reservation/fetch-or-create.js.map +1 -1
- package/dist/reservation/invoice.d.ts +2 -2
- package/dist/reservation/invoice.d.ts.map +1 -1
- package/dist/reservation/invoice.js +3 -3
- package/dist/reservation/invoice.js.map +1 -1
- package/dist/reservation/payer.js +5 -6
- package/dist/reservation/reserve.js +3 -4
- package/dist/reservation/types.d.ts +1 -0
- package/dist/reservation/types.d.ts.map +1 -1
- package/dist/reservation/vehicle.js +13 -16
- package/dist/slack.js +24 -29
- package/dist/validation.js +69 -71
- package/dist/vehicle/vehicle-pricing/constants.js +22 -19
- package/dist/vehicle/vehicle-pricing/index.js +28 -42
- package/dist/vehicle/vehicle-pricing/types.js +1 -2
- package/package.json +9 -9
|
@@ -1,73 +1,75 @@
|
|
|
1
1
|
import { config } from '@driveflux/config/backend';
|
|
2
|
-
import { prisma
|
|
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
|
|
6
|
-
export const fetchDisplayVehicle = async (displayVehicle)
|
|
7
|
-
return typeof displayVehicle === 'string'
|
|
8
|
-
|
|
9
|
-
|
|
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;
|
|
10
12
|
};
|
|
11
|
-
export const createVehicleFromDisplayVehicle = async (displayVehicle, selectedColor)
|
|
13
|
+
export const createVehicleFromDisplayVehicle = async (displayVehicle, selectedColor)=>{
|
|
12
14
|
const dv = await fetchDisplayVehicle(displayVehicle);
|
|
13
|
-
if (!dv || typeof dv !== 'object')
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return;
|
|
17
|
-
const mainImage = dv.images.main.find((m) => m.variant === selectedColor)?.url;
|
|
15
|
+
if (!dv || typeof dv !== 'object') return;
|
|
16
|
+
if (!dv.details) 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
|
-
...
|
|
23
|
-
|
|
22
|
+
...mainImage ? [
|
|
23
|
+
transfromSingleImage(mainImage)
|
|
24
|
+
] : [],
|
|
25
|
+
...transformImages(dv.images)
|
|
24
26
|
],
|
|
25
27
|
...transformBasePrices(dv.pricing),
|
|
26
28
|
pricing: transformPriceMatrix(dv.type, dv.pricing),
|
|
27
29
|
details: transformDetails(dv.details, selectedColor),
|
|
28
30
|
host: {
|
|
29
31
|
connect: {
|
|
30
|
-
id: dv.defaultHostId
|
|
31
|
-
}
|
|
32
|
+
id: dv.defaultHostId
|
|
33
|
+
}
|
|
32
34
|
},
|
|
33
35
|
displayVehicle: {
|
|
34
36
|
connect: {
|
|
35
|
-
id: dv.id
|
|
36
|
-
}
|
|
37
|
-
}
|
|
37
|
+
id: dv.id
|
|
38
|
+
}
|
|
39
|
+
}
|
|
38
40
|
};
|
|
39
41
|
return await prisma.vehicle.create({
|
|
40
42
|
data: vehicleData,
|
|
41
43
|
include: {
|
|
42
|
-
host: true
|
|
43
|
-
}
|
|
44
|
+
host: true
|
|
45
|
+
}
|
|
44
46
|
});
|
|
45
47
|
};
|
|
46
|
-
export const transfromVehicleDisplayToVehicle = async (displayVehicle, selectedColor)
|
|
48
|
+
export const transfromVehicleDisplayToVehicle = async (displayVehicle, selectedColor)=>{
|
|
47
49
|
const dv = await fetchDisplayVehicle(displayVehicle);
|
|
48
|
-
if (!dv || typeof dv !== 'object')
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
return;
|
|
52
|
-
const mainImage = dv.images.main.find((m) => m.variant === selectedColor)?.url;
|
|
50
|
+
if (!dv || typeof dv !== 'object') return;
|
|
51
|
+
if (!dv.details) 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
|
-
...
|
|
58
|
-
|
|
57
|
+
...mainImage ? [
|
|
58
|
+
transfromSingleImage(mainImage)
|
|
59
|
+
] : [],
|
|
60
|
+
...transformImages(dv.images)
|
|
59
61
|
],
|
|
60
62
|
...transformBasePrices(dv.pricing),
|
|
61
63
|
pricing: transformPriceMatrix(dv.type, dv.pricing),
|
|
62
64
|
details: transformDetails(dv.details, selectedColor),
|
|
63
65
|
host: {
|
|
64
66
|
address: {
|
|
65
|
-
state: 'Kuala Lumpur'
|
|
66
|
-
}
|
|
67
|
-
}
|
|
67
|
+
state: 'Kuala Lumpur'
|
|
68
|
+
}
|
|
69
|
+
}
|
|
68
70
|
};
|
|
69
71
|
};
|
|
70
|
-
export const transformBasicVehicleData = (dv)
|
|
72
|
+
export const transformBasicVehicleData = (dv)=>{
|
|
71
73
|
return {
|
|
72
74
|
registrationNumber: null,
|
|
73
75
|
featured: false,
|
|
@@ -85,17 +87,17 @@ export const transformBasicVehicleData = (dv) => {
|
|
|
85
87
|
type: dv.type,
|
|
86
88
|
niceName: `${dv.make} ${dv.vehicleModel} ${dv.variant} ${dv.year}`,
|
|
87
89
|
niceNameShort: `${dv.make} ${dv.vehicleModel}`,
|
|
88
|
-
appliedCoupon: dv.appliedCoupon
|
|
90
|
+
appliedCoupon: dv.appliedCoupon
|
|
89
91
|
};
|
|
90
92
|
};
|
|
91
|
-
export const transformImages = (images)
|
|
93
|
+
export const transformImages = (images)=>{
|
|
92
94
|
return [
|
|
93
95
|
transfromSingleImage(images.exterior[0].url, 'exterior'),
|
|
94
96
|
transfromSingleImage(images.interior[0].url, 'interior'),
|
|
95
|
-
...images.gallery.map((i)
|
|
97
|
+
...images.gallery.map((i)=>transfromSingleImage(i.url))
|
|
96
98
|
];
|
|
97
99
|
};
|
|
98
|
-
const transfromSingleImage = (imageUrl, inspectionType)
|
|
100
|
+
const transfromSingleImage = (imageUrl, inspectionType)=>{
|
|
99
101
|
return {
|
|
100
102
|
default: imageUrl,
|
|
101
103
|
blurBase64: null,
|
|
@@ -106,20 +108,20 @@ const transfromSingleImage = (imageUrl, inspectionType) => {
|
|
|
106
108
|
description: null,
|
|
107
109
|
inspection: !!inspectionType,
|
|
108
110
|
inspectionType: inspectionType || null,
|
|
109
|
-
notActualPhoto: true
|
|
111
|
+
notActualPhoto: true
|
|
110
112
|
};
|
|
111
113
|
};
|
|
112
|
-
const transformBasePrices = (pricing)
|
|
114
|
+
const transformBasePrices = (pricing)=>{
|
|
113
115
|
return {
|
|
114
116
|
basePrice: pricing.matrix.plan36.lite,
|
|
115
117
|
basePricePlan1: pricing.matrix.plan1.lite,
|
|
116
118
|
basePricePlan12: pricing.matrix.plan12.lite,
|
|
117
119
|
basePricePlan24: pricing.matrix.plan24.lite,
|
|
118
120
|
basePricePlan36: pricing.matrix.plan36.lite,
|
|
119
|
-
basePricePlan60: pricing.matrix.plan60.lite
|
|
121
|
+
basePricePlan60: pricing.matrix.plan60.lite
|
|
120
122
|
};
|
|
121
123
|
};
|
|
122
|
-
const transformPriceMatrix = (vehicleType, pricing)
|
|
124
|
+
const transformPriceMatrix = (vehicleType, pricing)=>{
|
|
123
125
|
const baseline = pricing?.matrix.plan36.lite;
|
|
124
126
|
const ultraTier = 'tier1';
|
|
125
127
|
const fluxPriceCoefficient = 25;
|
|
@@ -132,16 +134,14 @@ const transformPriceMatrix = (vehicleType, pricing) => {
|
|
|
132
134
|
const { availablePlans, availableMileagePackages } = getNonZeroKeys(priceMatrix);
|
|
133
135
|
const pricingController = createPricingController({
|
|
134
136
|
coefficient: fluxPriceCoefficient,
|
|
135
|
-
vehicleType
|
|
137
|
+
vehicleType
|
|
136
138
|
});
|
|
137
139
|
const startFeeMatrix = excludeServiceFeesFrom(getStartFeeMatrix(pricingController, baseline, flatPricing));
|
|
138
140
|
const hostMatrix = excludeServiceFeesFrom(getHostsMatrix(pricingController, baseline, ultraTier, flatPricing));
|
|
139
141
|
const hostExcessMileage = getHostExcessMileage(pricingController, baseline);
|
|
140
142
|
const fluxPriceMatrix = excludeServiceFeesFrom(getFluxPiceMatrix(pricingController, vehicleType, baseline, hostMatrix, ultraTier, flatPricing));
|
|
141
143
|
const fluxExcessMileage = getFluxExcessMileage(pricingController, baseline);
|
|
142
|
-
const recommendedDeposit = pricing.refundableDeposit || vehicleType === 'motorcycle'
|
|
143
|
-
? getRecommendedMotorcycleDeposit(baseline)
|
|
144
|
-
: null;
|
|
144
|
+
const recommendedDeposit = pricing.refundableDeposit || vehicleType === 'motorcycle' ? getRecommendedMotorcycleDeposit(baseline) : null;
|
|
145
145
|
return {
|
|
146
146
|
tmv,
|
|
147
147
|
gfv,
|
|
@@ -160,31 +160,31 @@ const transformPriceMatrix = (vehicleType, pricing) => {
|
|
|
160
160
|
excessMileage: fluxExcessMileage,
|
|
161
161
|
originalExcessMileage: fluxExcessMileage,
|
|
162
162
|
matrixComments: null,
|
|
163
|
-
add: null
|
|
163
|
+
add: null
|
|
164
164
|
},
|
|
165
165
|
hostTake: {
|
|
166
166
|
matrix: hostMatrix,
|
|
167
167
|
originalMatrix: hostMatrix,
|
|
168
168
|
excessMileage: hostExcessMileage,
|
|
169
169
|
originalExcessMileage: hostExcessMileage,
|
|
170
|
-
matrixComments: null
|
|
170
|
+
matrixComments: null
|
|
171
171
|
},
|
|
172
172
|
startFee: {
|
|
173
173
|
matrix: startFeeMatrix,
|
|
174
174
|
originalMatrix: startFeeMatrix,
|
|
175
|
-
matrixComments: null
|
|
176
|
-
}
|
|
175
|
+
matrixComments: null
|
|
176
|
+
}
|
|
177
177
|
};
|
|
178
178
|
};
|
|
179
|
-
const getNonZeroKeys = (matrix)
|
|
179
|
+
const getNonZeroKeys = (matrix)=>{
|
|
180
180
|
const planKeys = new Set();
|
|
181
181
|
const mileageKeys = new Set();
|
|
182
|
-
for (const [plan, mileageMap] of Object.entries(matrix))
|
|
182
|
+
for (const [plan, mileageMap] of Object.entries(matrix)){
|
|
183
183
|
const entries = Object.entries(mileageMap ?? {});
|
|
184
|
-
const hasNonZero = entries.some(([_, value])
|
|
184
|
+
const hasNonZero = entries.some(([_, value])=>(value ?? 0) > 0);
|
|
185
185
|
if (hasNonZero) {
|
|
186
186
|
planKeys.add(plan);
|
|
187
|
-
for (const [mileage, value] of entries)
|
|
187
|
+
for (const [mileage, value] of entries){
|
|
188
188
|
if ((value ?? 0) > 0) {
|
|
189
189
|
mileageKeys.add(mileage);
|
|
190
190
|
}
|
|
@@ -193,20 +193,20 @@ const getNonZeroKeys = (matrix) => {
|
|
|
193
193
|
}
|
|
194
194
|
return {
|
|
195
195
|
availablePlans: Array.from(planKeys),
|
|
196
|
-
availableMileagePackages: Array.from(mileageKeys)
|
|
196
|
+
availableMileagePackages: Array.from(mileageKeys)
|
|
197
197
|
};
|
|
198
198
|
};
|
|
199
|
-
const _getInspection = ()
|
|
199
|
+
const _getInspection = ()=>{
|
|
200
200
|
return {
|
|
201
201
|
exterior: 5,
|
|
202
202
|
interior: 5,
|
|
203
203
|
engine: 5,
|
|
204
204
|
frame: 5,
|
|
205
205
|
total: 5,
|
|
206
|
-
comment: 'COMMENT HERE'
|
|
206
|
+
comment: 'COMMENT HERE'
|
|
207
207
|
};
|
|
208
208
|
};
|
|
209
|
-
const transformDetails = (details, selectColor)
|
|
209
|
+
const transformDetails = (details, selectColor)=>{
|
|
210
210
|
const color = selectColor || details.colors[0].name || '';
|
|
211
211
|
return {
|
|
212
212
|
numberOfSeats: details.numberOfSeats,
|
|
@@ -214,31 +214,25 @@ const transformDetails = (details, selectColor) => {
|
|
|
214
214
|
bodyType: details.bodyType,
|
|
215
215
|
transmission: details.transmission,
|
|
216
216
|
engineType: details.fuelType,
|
|
217
|
-
engineCapacity: details.fuelType === 'electric'
|
|
218
|
-
? details.batteryCapacity
|
|
219
|
-
: details.engineCapacity,
|
|
217
|
+
engineCapacity: details.fuelType === 'electric' ? details.batteryCapacity : details.engineCapacity,
|
|
220
218
|
drivetrain: details.drivetrain,
|
|
221
219
|
accelerationTo100km: details.accelerationTo100km,
|
|
222
220
|
fuelConsumptionLitersPer100Km: details.fuelConsumptionLitersPer100Km,
|
|
223
221
|
color,
|
|
224
222
|
features: details.features,
|
|
225
|
-
condition: 'new'
|
|
223
|
+
condition: 'new'
|
|
226
224
|
};
|
|
227
225
|
};
|
|
228
|
-
const excludeServiceFeesFrom = (originalMatrix)
|
|
226
|
+
const excludeServiceFeesFrom = (originalMatrix)=>{
|
|
229
227
|
const matrix = {};
|
|
230
|
-
for (const [planKey, planValue] of Object.entries(originalMatrix))
|
|
231
|
-
if (!planValue)
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
matrix[planKey] = {};
|
|
235
|
-
for (const [mileageKey, price] of Object.entries(planValue)) {
|
|
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)){
|
|
236
232
|
if (typeof price === 'number') {
|
|
237
|
-
matrix[planKey][mileageKey] =
|
|
238
|
-
price / (1 + config.serviceRate);
|
|
233
|
+
matrix[planKey][mileageKey] = price / (1 + config.serviceRate);
|
|
239
234
|
}
|
|
240
235
|
}
|
|
241
236
|
}
|
|
242
237
|
return matrix;
|
|
243
238
|
};
|
|
244
|
-
//# sourceMappingURL=display-vehicle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"display-vehicle.js","sourceRoot":"","sources":["../../src/reservation/display-vehicle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAMN,MAAM,GAMN,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AACtE,OAAO,EACN,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,+BAA+B,EAC/B,iBAAiB,GACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"display-vehicle.js","sourceRoot":"","sources":["../../src/reservation/display-vehicle.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { ReserveVehicleParams } from './types.js';
|
|
|
4
4
|
type FetchOrCreateReservationParams = {
|
|
5
5
|
vehicle: Pick<Vehicle, 'id' | 'make' | 'vehicleModel' | 'variant' | 'year' | 'type'>;
|
|
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' | 'invoiceId'>;
|
|
8
8
|
};
|
|
9
9
|
export declare const fetchOrCreateReservation: ({ vehicle, payer, body, }: FetchOrCreateReservationParams) => PromisedResult<SubscriptionReservation>;
|
|
10
10
|
export {};
|
|
@@ -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,EAGb,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,
|
|
1
|
+
{"version":3,"file":"fetch-or-create.d.ts","sourceRoot":"","sources":["../../src/reservation/fetch-or-create.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,QAAQ,EAGb,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,GACvB,WAAW,CACb,CAAA;CACD,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,2BAI5C,8BAA8B,KAAG,cAAc,CAAC,uBAAuB,CAwKzE,CAAA"}
|
|
@@ -2,10 +2,10 @@ import { prisma, } from '@driveflux/db';
|
|
|
2
2
|
import { generateId } from '@driveflux/db/id';
|
|
3
3
|
import { reportError } from '@driveflux/reporter';
|
|
4
4
|
import { Ok } from '@driveflux/result';
|
|
5
|
-
import { slackLater } from '../slack';
|
|
5
|
+
import { slackLater } from '../slack.js';
|
|
6
6
|
import { createReservationInvoice, updateReservationInvoiceIfNeeded, } from './invoice.js';
|
|
7
7
|
export const fetchOrCreateReservation = async ({ vehicle, payer, body, }) => {
|
|
8
|
-
const { subscribingUser, plan, mileagePackage, couponCode, referralCode, asBusiness, source, deliveryAddresses, deliveryDate, analytics, paymentIntentId, freeReservation, freeReservationReason, } = body;
|
|
8
|
+
const { subscribingUser, plan, mileagePackage, couponCode, referralCode, asBusiness, source, deliveryAddresses, deliveryDate, analytics, paymentIntentId, freeReservation, freeReservationReason, invoiceId, } = body;
|
|
9
9
|
try {
|
|
10
10
|
const previousReservation = await prisma.subscriptionReservation.findFirst({
|
|
11
11
|
where: {
|
|
@@ -25,6 +25,13 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body, }) => {
|
|
|
25
25
|
updatedAt: 'desc',
|
|
26
26
|
},
|
|
27
27
|
include: {
|
|
28
|
+
...(invoiceId
|
|
29
|
+
? {
|
|
30
|
+
where: {
|
|
31
|
+
id: invoiceId,
|
|
32
|
+
},
|
|
33
|
+
}
|
|
34
|
+
: {}),
|
|
28
35
|
invoice: {
|
|
29
36
|
select: {
|
|
30
37
|
id: true,
|
|
@@ -95,6 +102,7 @@ export const fetchOrCreateReservation = async ({ vehicle, payer, body, }) => {
|
|
|
95
102
|
const reservationId = generateId('SubscriptionReservation');
|
|
96
103
|
// Create the reservation invoice
|
|
97
104
|
const invoiceResult = await createReservationInvoice({
|
|
105
|
+
invoiceId,
|
|
98
106
|
couponCode,
|
|
99
107
|
plan,
|
|
100
108
|
mileagePackage,
|
|
@@ -179,7 +187,7 @@ const createReservation = async ({ reservationId, invoiceId, subscribingUserId,
|
|
|
179
187
|
},
|
|
180
188
|
});
|
|
181
189
|
};
|
|
182
|
-
const recreateReservationInvoiceAndUpdateReservation = async (previousReservation, body, vehicle, payer) => {
|
|
190
|
+
const recreateReservationInvoiceAndUpdateReservation = async (previousReservation, { invoiceId, ...body }, vehicle, payer) => {
|
|
183
191
|
const invoiceResult = await createReservationInvoice({
|
|
184
192
|
...body,
|
|
185
193
|
reservationId: previousReservation.id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-or-create.js","sourceRoot":"","sources":["../../src/reservation/fetch-or-create.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,MAAM,GAIN,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"fetch-or-create.js","sourceRoot":"","sources":["../../src/reservation/fetch-or-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { type Business, type Invoice, type User, type Vehicle } from '@driveflux/db';
|
|
2
2
|
import { type PromisedResult } from '@driveflux/result';
|
|
3
3
|
import type { ReserveVehicleParams } from './types.js';
|
|
4
|
-
type CreateReservationInvoiceParams = Pick<ReserveVehicleParams, 'couponCode' | 'plan' | 'mileagePackage' | 'referralCode' | 'paymentIntentId' | 'freeReservation' | 'freeReservationReason' | 'analytics' | 'subscribingUser'> & {
|
|
4
|
+
type CreateReservationInvoiceParams = Pick<ReserveVehicleParams, 'couponCode' | 'plan' | 'mileagePackage' | 'referralCode' | 'paymentIntentId' | 'freeReservation' | 'freeReservationReason' | 'analytics' | 'subscribingUser' | 'invoiceId'> & {
|
|
5
5
|
reservationId?: string;
|
|
6
6
|
vehicle: Pick<Vehicle, 'id' | 'make' | 'vehicleModel' | 'variant' | 'year' | 'type'>;
|
|
7
7
|
payer: User | Business;
|
|
8
8
|
};
|
|
9
9
|
export declare const updateReservationInvoiceIfNeeded: (oldReservationInvoice: Pick<Invoice, "id" | "couponCode" | "stripePaymentIntentId" | "lines" | "payerId" | "discountIds" | "lockedAt">, newParams: Pick<CreateReservationInvoiceParams, "couponCode" | "paymentIntentId">) => PromisedResult<Invoice>;
|
|
10
|
-
export declare const createReservationInvoice: ({ couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser, }: CreateReservationInvoiceParams) => PromisedResult<Invoice>;
|
|
10
|
+
export declare const createReservationInvoice: ({ invoiceId, couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser, }: CreateReservationInvoiceParams) => PromisedResult<Invoice>;
|
|
11
11
|
export {};
|
|
12
12
|
//# sourceMappingURL=invoice.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,OAAO,EAEZ,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,MAAM,eAAe,CAAA;AAQtB,OAAO,EAAM,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAI3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,KAAK,8BAA8B,GAAG,IAAI,CACzC,oBAAoB,EAClB,YAAY,GACZ,MAAM,GACN,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,WAAW,GACX,iBAAiB,
|
|
1
|
+
{"version":3,"file":"invoice.d.ts","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,KAAK,QAAQ,EACb,KAAK,OAAO,EAEZ,KAAK,IAAI,EACT,KAAK,OAAO,EACZ,MAAM,eAAe,CAAA;AAQtB,OAAO,EAAM,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAI3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEtD,KAAK,8BAA8B,GAAG,IAAI,CACzC,oBAAoB,EAClB,YAAY,GACZ,MAAM,GACN,gBAAgB,GAChB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,uBAAuB,GACvB,WAAW,GACX,iBAAiB,GACjB,WAAW,CACb,GAAG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,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;CACtB,CAAA;AAED,eAAO,MAAM,gCAAgC,GAC5C,uBAAuB,IAAI,CAC1B,OAAO,EACL,IAAI,GACJ,YAAY,GACZ,uBAAuB,GACvB,OAAO,GACP,SAAS,GACT,aAAa,GACb,UAAU,CACZ,EACD,WAAW,IAAI,CACd,8BAA8B,EAC9B,YAAY,GAAG,iBAAiB,CAChC,KACC,cAAc,CAAC,OAAO,CAuGxB,CAAA;AAED,eAAO,MAAM,wBAAwB,GAAU,oLAc5C,8BAA8B,KAAG,cAAc,CAAC,OAAO,CA6GzD,CAAA"}
|
|
@@ -13,7 +13,6 @@ import { format } from '@driveflux/time';
|
|
|
13
13
|
import { isAfter } from 'date-fns/isAfter';
|
|
14
14
|
import { subMinutes } from 'date-fns/subMinutes';
|
|
15
15
|
export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, newParams) => {
|
|
16
|
-
console.log('UPDATING INVOICE IF NEEDED');
|
|
17
16
|
const couponIsDifferent = oldReservationInvoice.couponCode !== newParams.couponCode;
|
|
18
17
|
if (!couponIsDifferent &&
|
|
19
18
|
oldReservationInvoice.stripePaymentIntentId === newParams.paymentIntentId) {
|
|
@@ -75,7 +74,6 @@ export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, ne
|
|
|
75
74
|
}
|
|
76
75
|
}
|
|
77
76
|
let updated = await wrapInResult(biller.updateInvoice(oldReservationInvoice.id, update));
|
|
78
|
-
console.log('Updating invoice result', updated);
|
|
79
77
|
// If the invoice was locked due to pending status and we're more than 1 minute old, we unlock it
|
|
80
78
|
if (updated.err && updated.val.code === 'invoice_pending') {
|
|
81
79
|
if ((oldReservationInvoice.lockedAt &&
|
|
@@ -96,10 +94,11 @@ export const updateReservationInvoiceIfNeeded = async (oldReservationInvoice, ne
|
|
|
96
94
|
}
|
|
97
95
|
return new Ok(updated.val);
|
|
98
96
|
};
|
|
99
|
-
export const createReservationInvoice = async ({ couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser, }) => {
|
|
97
|
+
export const createReservationInvoice = async ({ invoiceId, couponCode, plan, mileagePackage, referralCode, reservationId, paymentIntentId, freeReservation, freeReservationReason, analytics, vehicle, payer, subscribingUser, }) => {
|
|
100
98
|
if (freeReservation) {
|
|
101
99
|
// It's a free reservation, so we don't need to add a coupon code
|
|
102
100
|
return await wrapInResult(biller.createInvoice(getInvoiceCreateDetails({
|
|
101
|
+
invoiceId,
|
|
103
102
|
payer,
|
|
104
103
|
vehicle,
|
|
105
104
|
plan,
|
|
@@ -132,6 +131,7 @@ export const createReservationInvoice = async ({ couponCode, plan, mileagePackag
|
|
|
132
131
|
// We leave adding the coupon code applyCouponToUnsavedInvoice()
|
|
133
132
|
let invoiceCreateDetails = {
|
|
134
133
|
...getInvoiceCreateDetails({
|
|
134
|
+
invoiceId,
|
|
135
135
|
payer,
|
|
136
136
|
vehicle,
|
|
137
137
|
plan,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoice.js","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAGN,MAAM,GAGN,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAA;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,EAAE,EAAuB,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"invoice.js","sourceRoot":"","sources":["../../src/reservation/invoice.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { prisma } from '@driveflux/db';
|
|
2
|
-
import { makeProblem, PROBLEM_CONDITION_FAILED, PROBLEM_NOT_FOUND
|
|
2
|
+
import { makeProblem, PROBLEM_CONDITION_FAILED, PROBLEM_NOT_FOUND } from '@driveflux/problem';
|
|
3
3
|
import { Err, Ok } from '@driveflux/result';
|
|
4
|
-
export const getPayer = async ({ subscribingUser, asBusiness
|
|
4
|
+
export const getPayer = async ({ subscribingUser, asBusiness })=>{
|
|
5
5
|
let business = null;
|
|
6
6
|
let payer = subscribingUser;
|
|
7
7
|
if (asBusiness) {
|
|
@@ -11,8 +11,8 @@ export const getPayer = async ({ subscribingUser, asBusiness, }) => {
|
|
|
11
11
|
// load business
|
|
12
12
|
business = await prisma.business.findUnique({
|
|
13
13
|
where: {
|
|
14
|
-
id: subscribingUser.businessId
|
|
15
|
-
}
|
|
14
|
+
id: subscribingUser.businessId
|
|
15
|
+
}
|
|
16
16
|
});
|
|
17
17
|
if (!business) {
|
|
18
18
|
return new Err(makeProblem(PROBLEM_NOT_FOUND, `The business ${subscribingUser.businessId} was not found.`));
|
|
@@ -26,7 +26,7 @@ export const getPayer = async ({ subscribingUser, asBusiness, }) => {
|
|
|
26
26
|
}
|
|
27
27
|
return new Ok(payer);
|
|
28
28
|
};
|
|
29
|
-
const checkPayerObjectSanity = (subscriber)
|
|
29
|
+
const checkPayerObjectSanity = (subscriber)=>{
|
|
30
30
|
if (!subscriber.email) {
|
|
31
31
|
return new Err(makeProblem(PROBLEM_CONDITION_FAILED, `Subscriber ${subscriber.id} has no email. Please add a verified email first.`));
|
|
32
32
|
}
|
|
@@ -35,4 +35,3 @@ const checkPayerObjectSanity = (subscriber) => {
|
|
|
35
35
|
}
|
|
36
36
|
return new Ok(true);
|
|
37
37
|
};
|
|
38
|
-
//# sourceMappingURL=payer.js.map
|
|
@@ -4,14 +4,14 @@ import { checkIfUserCanReserve } from './checks.js';
|
|
|
4
4
|
import { fetchOrCreateReservation } from './fetch-or-create.js';
|
|
5
5
|
import { getPayer } from './payer.js';
|
|
6
6
|
import { getVehicle } from './vehicle.js';
|
|
7
|
-
const processBody = (body)
|
|
7
|
+
const processBody = (body)=>{
|
|
8
8
|
// Switch mileage package
|
|
9
9
|
if (body.plan === 'plan1' || body.plan === 'planWeekly') {
|
|
10
10
|
body.mileagePackage = 'unlimited';
|
|
11
11
|
}
|
|
12
12
|
return body;
|
|
13
13
|
};
|
|
14
|
-
export const reserveVehicle = async (vehicleId, unprocessed)
|
|
14
|
+
export const reserveVehicle = async (vehicleId, unprocessed)=>{
|
|
15
15
|
const body = processBody(unprocessed);
|
|
16
16
|
// Agree to terms if not done yet
|
|
17
17
|
await handleAgreeToTerms(body);
|
|
@@ -33,7 +33,7 @@ export const reserveVehicle = async (vehicleId, unprocessed) => {
|
|
|
33
33
|
const reservationResult = await fetchOrCreateReservation({
|
|
34
34
|
vehicle,
|
|
35
35
|
payer,
|
|
36
|
-
body
|
|
36
|
+
body
|
|
37
37
|
});
|
|
38
38
|
if (reservationResult.err) {
|
|
39
39
|
return reservationResult;
|
|
@@ -41,4 +41,3 @@ export const reserveVehicle = async (vehicleId, unprocessed) => {
|
|
|
41
41
|
const reservation = reservationResult.val;
|
|
42
42
|
return new Ok(reservation);
|
|
43
43
|
};
|
|
44
|
-
//# sourceMappingURL=reserve.js.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { MileagePackage, PlanType, ReservationSource, User } from '@driveflux/db';
|
|
2
2
|
import type { Address } from '@driveflux/db/types/helpers';
|
|
3
3
|
export type ReserveVehicleParams = {
|
|
4
|
+
invoiceId?: string;
|
|
4
5
|
plan: PlanType;
|
|
5
6
|
mileagePackage: MileagePackage;
|
|
6
7
|
asBusiness?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reservation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,IAAI,EACJ,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAE1D,MAAM,MAAM,oBAAoB,GAAG;IAClC,IAAI,EAAE,QAAQ,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,iBAAiB,CAAC,EAAE;QACnB,IAAI,EAAE,OAAO,CAAA;QACb,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,MAAM,EAAE,iBAAiB,CAAA;IACzB,eAAe,EAAE,IAAI,CAAA;IACrB,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/reservation/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,IAAI,EACJ,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAE1D,MAAM,MAAM,oBAAoB,GAAG;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,QAAQ,CAAA;IACd,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE;QACX,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,WAAW,CAAC,EAAE,MAAM,CAAA;KACpB,CAAA;IACD,iBAAiB,CAAC,EAAE;QACnB,IAAI,EAAE,OAAO,CAAA;QACb,OAAO,EAAE,OAAO,CAAA;KAChB,CAAA;IACD,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,MAAM,EAAE,iBAAiB,CAAA;IACzB,eAAe,EAAE,IAAI,CAAA;IACrB,WAAW,EAAE,IAAI,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA"}
|
|
@@ -4,21 +4,19 @@ import { makeProblem, PROBLEM_NOT_FOUND } from '@driveflux/problem';
|
|
|
4
4
|
import { Err, Ok } from '@driveflux/result';
|
|
5
5
|
import { checkIfVehicleIsAvailableForReservation } from './checks.js';
|
|
6
6
|
import { createVehicleFromDisplayVehicle } from './display-vehicle.js';
|
|
7
|
-
export const getVehicle = async (id, { selectedColor, plan, requestUser
|
|
8
|
-
const vehicle = id.startsWith('DV_')
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
},
|
|
21
|
-
});
|
|
7
|
+
export const getVehicle = async (id, { selectedColor, plan, requestUser }, requesterAbility)=>{
|
|
8
|
+
const vehicle = id.startsWith('DV_') ? await createVehicleFromDisplayVehicle(id, selectedColor || undefined) : await prisma.vehicle.findUnique({
|
|
9
|
+
where: {
|
|
10
|
+
id
|
|
11
|
+
},
|
|
12
|
+
include: {
|
|
13
|
+
host: {
|
|
14
|
+
select: {
|
|
15
|
+
id: true
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
});
|
|
22
20
|
if (!vehicle) {
|
|
23
21
|
return new Err(makeProblem(PROBLEM_NOT_FOUND, 'Vehicle not found'));
|
|
24
22
|
}
|
|
@@ -29,4 +27,3 @@ export const getVehicle = async (id, { selectedColor, plan, requestUser, }, requ
|
|
|
29
27
|
}
|
|
30
28
|
return new Ok(vehicle);
|
|
31
29
|
};
|
|
32
|
-
//# sourceMappingURL=vehicle.js.map
|