@myrjfa/state 2.2.0 → 2.3.2
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/LICENSE +201 -201
- package/README.md +20 -3
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/lib/actions/actions.d.ts +13 -13
- package/dist/lib/actions/actions.d.ts.map +1 -1
- package/dist/lib/actions/actions.js +5 -4
- package/dist/lib/actions/auth.d.ts +116 -7
- package/dist/lib/actions/auth.d.ts.map +1 -1
- package/dist/lib/actions/auth.js +59 -10
- package/dist/lib/actions/chat.d.ts +261 -24
- package/dist/lib/actions/chat.d.ts.map +1 -1
- package/dist/lib/actions/chat.js +525 -41
- package/dist/lib/actions/fetcher.d.ts.map +1 -1
- package/dist/lib/actions/fetcher.js +26 -9
- package/dist/lib/actions/serverActions.d.ts +1 -0
- package/dist/lib/actions/serverActions.d.ts.map +1 -1
- package/dist/lib/actions/serverActions.js +15 -0
- package/dist/lib/actions/socket.d.ts.map +1 -1
- package/dist/lib/actions/socket.js +5 -1
- package/dist/lib/actions.d.ts +26 -26
- package/dist/lib/actions.d.ts.map +1 -1
- package/dist/lib/actions.js +17 -12
- package/dist/lib/adminDashboardActions.d.ts +15 -3
- package/dist/lib/adminDashboardActions.d.ts.map +1 -1
- package/dist/lib/adminDashboardActions.js +16 -7
- package/dist/lib/authSessionManager.d.ts.map +1 -1
- package/dist/lib/authSessionManager.js +77 -12
- package/dist/lib/authSessionPolicy.d.ts +44 -0
- package/dist/lib/authSessionPolicy.d.ts.map +1 -0
- package/dist/lib/authSessionPolicy.js +61 -0
- package/dist/lib/authorizationActions.d.ts +77 -0
- package/dist/lib/authorizationActions.d.ts.map +1 -0
- package/dist/lib/authorizationActions.js +61 -0
- package/dist/lib/context/ChatContext.d.ts +25 -6
- package/dist/lib/context/ChatContext.d.ts.map +1 -1
- package/dist/lib/context/ChatContext.js +356 -245
- package/dist/lib/discountActions.d.ts +43 -0
- package/dist/lib/discountActions.d.ts.map +1 -0
- package/dist/lib/discountActions.js +69 -0
- package/dist/lib/loyaltyActions.d.ts +32 -0
- package/dist/lib/loyaltyActions.d.ts.map +1 -0
- package/dist/lib/loyaltyActions.js +92 -0
- package/dist/lib/models/adventure.d.ts +0 -2
- package/dist/lib/models/adventure.d.ts.map +1 -1
- package/dist/lib/models/authorization.d.ts +108 -0
- package/dist/lib/models/authorization.d.ts.map +1 -0
- package/dist/lib/models/authorization.js +266 -0
- package/dist/lib/models/blog.d.ts +6 -6
- package/dist/lib/models/booking.d.ts +7 -2
- package/dist/lib/models/booking.d.ts.map +1 -1
- package/dist/lib/models/chat.d.ts +418 -32
- package/dist/lib/models/chat.d.ts.map +1 -1
- package/dist/lib/models/chat.js +5 -1
- package/dist/lib/models/discount.d.ts +589 -138
- package/dist/lib/models/discount.d.ts.map +1 -1
- package/dist/lib/models/discount.js +118 -96
- package/dist/lib/models/guide.d.ts +0 -2
- package/dist/lib/models/guide.d.ts.map +1 -1
- package/dist/lib/models/loyalty.d.ts +88 -0
- package/dist/lib/models/loyalty.d.ts.map +1 -0
- package/dist/lib/models/loyalty.js +1 -0
- package/dist/lib/models/notifications.d.ts +6 -6
- package/dist/lib/models/opportunities/freelance.d.ts +66 -20
- package/dist/lib/models/opportunities/freelance.d.ts.map +1 -1
- package/dist/lib/models/opportunities/internship.d.ts +66 -20
- package/dist/lib/models/opportunities/internship.d.ts.map +1 -1
- package/dist/lib/models/opportunities/job.d.ts +66 -20
- package/dist/lib/models/opportunities/job.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.d.ts +66 -20
- package/dist/lib/models/opportunities/opportunity.d.ts.map +1 -1
- package/dist/lib/models/opportunities/opportunity.js +2 -0
- package/dist/lib/models/opportunities/volunteerJob.d.ts +66 -20
- package/dist/lib/models/opportunities/volunteerJob.d.ts.map +1 -1
- package/dist/lib/models/package.d.ts +77 -216
- package/dist/lib/models/package.d.ts.map +1 -1
- package/dist/lib/models/package.js +0 -2
- package/dist/lib/models/portfolio.d.ts +2 -2
- package/dist/lib/models/pricing.d.ts +12 -12
- package/dist/lib/models/props.d.ts +1 -1
- package/dist/lib/models/props.d.ts.map +1 -1
- package/dist/lib/models/rental.d.ts +0 -2
- package/dist/lib/models/rental.d.ts.map +1 -1
- package/dist/lib/models/review.d.ts +2 -2
- package/dist/lib/models/stay.d.ts +17 -17
- package/dist/lib/models/store.d.ts +71 -0
- package/dist/lib/models/store.d.ts.map +1 -0
- package/dist/lib/models/store.js +1 -0
- package/dist/lib/models/tile.d.ts +0 -2
- package/dist/lib/models/tile.d.ts.map +1 -1
- package/dist/lib/models/travelPackage.d.ts +211 -310
- package/dist/lib/models/travelPackage.d.ts.map +1 -1
- package/dist/lib/models/travelPackage.js +0 -2
- package/dist/lib/models/user.d.ts +32 -8
- package/dist/lib/models/user.d.ts.map +1 -1
- package/dist/lib/models/user.js +10 -1
- package/dist/lib/opportunityFormPage.d.ts +1 -0
- package/dist/lib/opportunityFormPage.d.ts.map +1 -1
- package/dist/lib/opportunityFormPage.js +1 -0
- package/dist/lib/rentalActions.js +0 -1
- package/dist/lib/rentalDummyData.d.ts.map +1 -1
- package/dist/lib/rentalDummyData.js +0 -35
- package/dist/lib/rentalFormPage.d.ts +0 -2
- package/dist/lib/rentalFormPage.d.ts.map +1 -1
- package/dist/lib/rentalFormPage.js +0 -3
- package/dist/lib/storeActions.d.ts +25 -0
- package/dist/lib/storeActions.d.ts.map +1 -0
- package/dist/lib/storeActions.js +46 -0
- package/dist/lib/storeDummyData.d.ts +2 -26
- package/dist/lib/storeDummyData.d.ts.map +1 -1
- package/dist/lib/userAtom.d.ts +178 -42
- package/dist/lib/userAtom.d.ts.map +1 -1
- package/dist/lib/userAtom.js +80 -52
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +1 -1
- package/package.json +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discount.d.ts","sourceRoot":"","sources":["../../../src/lib/models/discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB
|
|
1
|
+
{"version":3,"file":"discount.d.ts","sourceRoot":"","sources":["../../../src/lib/models/discount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,yBAAyB,kFAAgF,CAAC;AACvH,eAAO,MAAM,0BAA0B,oLAGrC,CAAC;AACH,eAAO,MAAM,oBAAoB,2DAAyD,CAAC;AAC3F,eAAO,MAAM,oBAAoB,0FAAwF,CAAC;AAC1H,eAAO,MAAM,2BAA2B,sEAAoE,CAAC;AAE7G,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAIhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBnC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBrC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC5F,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,CAAC;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,cAAuB,GAAG,gBAAgB,CAoB7F"}
|
|
@@ -1,106 +1,128 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
export const DiscountFeatureTypeSchema = z.enum(["stay", "rental", "adventure", "event", "package", "guide", "store"]);
|
|
3
|
+
export const DiscountStrategyTypeSchema = z.enum([
|
|
4
|
+
"duration", "early_booking", "last_minute", "scheduled", "recurring", "group", "quantity",
|
|
5
|
+
"coupon", "first_booking", "checkout_recovery", "payment_offer", "partner",
|
|
6
|
+
]);
|
|
7
|
+
export const DiscountOriginSchema = z.enum(["host", "staff_suggestion", "staff_campaign"]);
|
|
8
|
+
export const DiscountStatusSchema = z.enum(["draft", "suggested", "active", "paused", "rejected", "expired", "archived"]);
|
|
9
|
+
export const DiscountStackingGroupSchema = z.enum(["automatic", "coupon", "payment", "partner", "recovery"]);
|
|
10
|
+
export const DiscountFundingSchema = z.object({
|
|
11
|
+
hostPercentagePoints: z.number().min(0).default(0),
|
|
12
|
+
platformPercentagePoints: z.number().min(0).default(0),
|
|
13
|
+
partnerPercentagePoints: z.number().min(0).default(0),
|
|
14
|
+
});
|
|
15
|
+
export const DiscountConditionsSchema = z.object({
|
|
16
|
+
minUnits: z.number().min(0).nullable().optional(),
|
|
17
|
+
maxUnits: z.number().min(0).nullable().optional(),
|
|
18
|
+
minQuantity: z.number().min(0).nullable().optional(),
|
|
19
|
+
minParticipants: z.number().min(0).nullable().optional(),
|
|
20
|
+
minSubtotal: z.number().min(0).nullable().optional(),
|
|
21
|
+
bookingLeadMinMinutes: z.number().min(0).nullable().optional(),
|
|
22
|
+
bookingLeadMaxMinutes: z.number().min(0).nullable().optional(),
|
|
23
|
+
bookingStartsAt: z.string().nullable().optional(),
|
|
24
|
+
bookingEndsAt: z.string().nullable().optional(),
|
|
25
|
+
serviceStartsAt: z.string().nullable().optional(),
|
|
26
|
+
serviceEndsAt: z.string().nullable().optional(),
|
|
27
|
+
recurringDays: z.array(z.number().min(0).max(6)).default([]),
|
|
28
|
+
recurringStartTime: z.string().optional(),
|
|
29
|
+
recurringEndTime: z.string().optional(),
|
|
30
|
+
timezone: z.string().default("Asia/Kolkata"),
|
|
31
|
+
firstBookingOnly: z.boolean().default(false),
|
|
32
|
+
checkoutDelayMinutes: z.number().min(0).nullable().optional(),
|
|
33
|
+
paymentMethods: z.array(z.string()).default([]),
|
|
34
|
+
cardTypes: z.array(z.string()).default([]),
|
|
35
|
+
issuers: z.array(z.string()).default([]),
|
|
36
|
+
networks: z.array(z.string()).default([]),
|
|
37
|
+
partnerProgramIds: z.array(z.string()).default([]),
|
|
38
|
+
});
|
|
2
39
|
export const DiscountStrategySchema = z.object({
|
|
3
|
-
|
|
40
|
+
_id: z.string().optional(),
|
|
41
|
+
name: z.string().min(1),
|
|
42
|
+
description: z.string().default(""),
|
|
43
|
+
strategyType: DiscountStrategyTypeSchema,
|
|
44
|
+
origin: DiscountOriginSchema,
|
|
45
|
+
status: DiscountStatusSchema.default("draft"),
|
|
46
|
+
sourceStrategyId: z.string().nullable().optional(),
|
|
47
|
+
hostId: z.union([z.string(), z.object({ _id: z.string() })]).nullable().optional(),
|
|
48
|
+
targetScope: z.enum(["platform", "host", "listing", "subtarget"]).default("platform"),
|
|
49
|
+
featureTypes: z.array(DiscountFeatureTypeSchema).default([]),
|
|
50
|
+
targetId: z.string().nullable().optional(),
|
|
51
|
+
targetIds: z.array(z.string()).default([]),
|
|
52
|
+
subTargetId: z.string().nullable().optional(),
|
|
53
|
+
pricingStrategyIds: z.array(z.string()).default([]),
|
|
54
|
+
percentage: z.number().positive().max(100),
|
|
55
|
+
funding: DiscountFundingSchema,
|
|
56
|
+
conditions: DiscountConditionsSchema.default({}),
|
|
57
|
+
stacking: z.object({
|
|
58
|
+
group: DiscountStackingGroupSchema.default("automatic"),
|
|
59
|
+
priority: z.number().default(0),
|
|
60
|
+
compatibleGroups: z.array(DiscountStackingGroupSchema).default([]),
|
|
61
|
+
}).default({}),
|
|
62
|
+
usageLimits: z.object({ total: z.number().positive().nullable().optional(), perUser: z.number().positive().nullable().optional() }).default({}),
|
|
63
|
+
redemptionCount: z.number().min(0).default(0),
|
|
4
64
|
couponCode: z.string().optional(),
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
65
|
+
couponPreview: z.string().optional(),
|
|
66
|
+
razorpayOfferId: z.string().optional(),
|
|
67
|
+
createdAt: z.string().optional(),
|
|
68
|
+
updatedAt: z.string().optional(),
|
|
69
|
+
});
|
|
70
|
+
export const DiscountQuoteRequestSchema = z.object({
|
|
71
|
+
featureType: DiscountFeatureTypeSchema,
|
|
72
|
+
targetId: z.string(),
|
|
73
|
+
subTargetId: z.string().optional(),
|
|
74
|
+
pricingStrategyId: z.string().optional(),
|
|
75
|
+
selectedPricingIndex: z.number().optional(),
|
|
76
|
+
quantity: z.number().positive().optional(),
|
|
77
|
+
participants: z.number().positive().optional(),
|
|
15
78
|
startDate: z.string().optional(),
|
|
16
79
|
endDate: z.string().optional(),
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
80
|
+
startTime: z.string().optional(),
|
|
81
|
+
pickupTime: z.string().optional(),
|
|
82
|
+
orderType: z.enum(["purchase", "rental"]).optional(),
|
|
83
|
+
activityTotal: z.number().min(0).optional(),
|
|
84
|
+
couponCode: z.string().optional(),
|
|
85
|
+
checkoutStartedAt: z.string().optional(),
|
|
20
86
|
});
|
|
21
|
-
export const
|
|
22
|
-
|
|
87
|
+
export const DiscountQuoteSchema = z.object({
|
|
88
|
+
quoteId: z.string(),
|
|
89
|
+
currency: z.string(),
|
|
90
|
+
combinedPercentage: z.number(),
|
|
91
|
+
totalDiscount: z.number(),
|
|
92
|
+
funding: z.object({ host: z.number(), platform: z.number(), partner: z.number() }),
|
|
93
|
+
totalBeforeDiscount: z.number(),
|
|
94
|
+
totalAfterDiscount: z.number(),
|
|
95
|
+
grantId: z.string().nullable().optional(),
|
|
96
|
+
selected: z.array(z.object({
|
|
97
|
+
strategyId: z.string(), name: z.string(), description: z.string().optional(), strategyType: DiscountStrategyTypeSchema,
|
|
98
|
+
percentage: z.number(), amount: z.number(), funding: z.object({ host: z.number(), platform: z.number(), partner: z.number() }),
|
|
99
|
+
stackingGroup: DiscountStackingGroupSchema, razorpayOfferId: z.string().optional(),
|
|
100
|
+
paymentEligibility: z.object({
|
|
101
|
+
paymentMethods: z.array(z.string()).default([]), cardTypes: z.array(z.string()).default([]),
|
|
102
|
+
issuers: z.array(z.string()).default([]), networks: z.array(z.string()).default([]),
|
|
103
|
+
}).optional(),
|
|
104
|
+
})),
|
|
105
|
+
rejected: z.array(z.object({ strategyId: z.string().optional(), name: z.string(), reason: z.string() })),
|
|
106
|
+
createdAt: z.string().or(z.date()),
|
|
23
107
|
});
|
|
24
|
-
export function
|
|
108
|
+
export function createEmptyDiscountStrategy(origin = "host") {
|
|
25
109
|
return {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
type: "duration",
|
|
44
|
-
couponCode: "",
|
|
45
|
-
couponScope: "listing",
|
|
46
|
-
discountAppliesTo: "booking-total",
|
|
47
|
-
createdBy: "host",
|
|
48
|
-
minimumOrderValue: 0,
|
|
49
|
-
durationType: "fifteen-days",
|
|
50
|
-
minDays: 15,
|
|
51
|
-
discountType: "percentage",
|
|
52
|
-
discountValue: 0,
|
|
53
|
-
description: "15 day discount",
|
|
54
|
-
suggestedByPlatform: false,
|
|
55
|
-
active: true,
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
type: "duration",
|
|
59
|
-
couponCode: "",
|
|
60
|
-
couponScope: "listing",
|
|
61
|
-
discountAppliesTo: "booking-total",
|
|
62
|
-
createdBy: "host",
|
|
63
|
-
minimumOrderValue: 0,
|
|
64
|
-
durationType: "monthly",
|
|
65
|
-
minDays: 30,
|
|
66
|
-
discountType: "percentage",
|
|
67
|
-
discountValue: 0,
|
|
68
|
-
description: "Monthly discount",
|
|
69
|
-
suggestedByPlatform: false,
|
|
70
|
-
active: true,
|
|
71
|
-
},
|
|
72
|
-
],
|
|
110
|
+
name: "",
|
|
111
|
+
description: "",
|
|
112
|
+
strategyType: "scheduled",
|
|
113
|
+
origin,
|
|
114
|
+
status: "draft",
|
|
115
|
+
targetScope: "listing",
|
|
116
|
+
featureTypes: [],
|
|
117
|
+
targetIds: [],
|
|
118
|
+
pricingStrategyIds: [],
|
|
119
|
+
percentage: 10,
|
|
120
|
+
funding: origin === "staff_campaign"
|
|
121
|
+
? { hostPercentagePoints: 0, platformPercentagePoints: 10, partnerPercentagePoints: 0 }
|
|
122
|
+
: { hostPercentagePoints: 10, platformPercentagePoints: 0, partnerPercentagePoints: 0 },
|
|
123
|
+
conditions: { recurringDays: [], timezone: "Asia/Kolkata", firstBookingOnly: false, paymentMethods: [], cardTypes: [], issuers: [], networks: [], partnerProgramIds: [] },
|
|
124
|
+
stacking: { group: "automatic", priority: 0, compatibleGroups: [] },
|
|
125
|
+
usageLimits: {},
|
|
126
|
+
redemptionCount: 0,
|
|
73
127
|
};
|
|
74
128
|
}
|
|
75
|
-
export function normalizeDiscount(discount) {
|
|
76
|
-
return {
|
|
77
|
-
discountStrategies: discount?.discountStrategies || [],
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
export function calculateDiscountAmount(total, strategy) {
|
|
81
|
-
if (!strategy)
|
|
82
|
-
return 0;
|
|
83
|
-
const discountValue = Math.max(Number(strategy.discountValue) || 0, 0);
|
|
84
|
-
if (strategy.discountType === "flat") {
|
|
85
|
-
return Math.min(discountValue, total);
|
|
86
|
-
}
|
|
87
|
-
return Math.min(Math.round((total * discountValue) / 100), total);
|
|
88
|
-
}
|
|
89
|
-
export function getApplicableDiscountStrategy(discount, days, bookingDate = new Date(), couponCode = "") {
|
|
90
|
-
const normalizedCoupon = couponCode.trim().toUpperCase();
|
|
91
|
-
return (discount?.discountStrategies || [])
|
|
92
|
-
.filter((strategy) => {
|
|
93
|
-
if (!strategy.active)
|
|
94
|
-
return false;
|
|
95
|
-
if (Number(strategy.minDays || 0) > days)
|
|
96
|
-
return false;
|
|
97
|
-
if (strategy.startDate && bookingDate < new Date(strategy.startDate))
|
|
98
|
-
return false;
|
|
99
|
-
if (strategy.endDate && bookingDate > new Date(strategy.endDate))
|
|
100
|
-
return false;
|
|
101
|
-
if (strategy.type === "coupon" && (strategy.couponCode || "").trim().toUpperCase() !== normalizedCoupon)
|
|
102
|
-
return false;
|
|
103
|
-
return Number(strategy.discountValue || 0) > 0;
|
|
104
|
-
})
|
|
105
|
-
.sort((a, b) => Number(b.minDays || 0) - Number(a.minDays || 0))[0];
|
|
106
|
-
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Pricing } from "./pricing";
|
|
2
|
-
import { Discount } from "./discount";
|
|
3
2
|
export type GuideStatus = "draft" | "pending" | "open" | "closed" | "denied" | "archived";
|
|
4
3
|
export interface Guide {
|
|
5
4
|
_id: string;
|
|
@@ -14,7 +13,6 @@ export interface Guide {
|
|
|
14
13
|
specialties: string[];
|
|
15
14
|
experienceYears?: number;
|
|
16
15
|
pricing?: Pricing;
|
|
17
|
-
discount?: Discount;
|
|
18
16
|
operatingHours?: {
|
|
19
17
|
start: string;
|
|
20
18
|
end: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../../src/lib/models/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"guide.d.ts","sourceRoot":"","sources":["../../../src/lib/models/guide.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE1F,MAAM,WAAW,KAAK;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IAGpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,cAAc,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;IAGF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,WAAW,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,IAAI,CAAC;IAGlB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IAEF,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,CAAC;CACpB"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export type RewardWallet = {
|
|
2
|
+
account: {
|
|
3
|
+
pendingCoins: number;
|
|
4
|
+
availableCoins: number;
|
|
5
|
+
reservedCoins: number;
|
|
6
|
+
lifetimeEarnedCoins: number;
|
|
7
|
+
lifetimeSpentCoins: number;
|
|
8
|
+
} | null;
|
|
9
|
+
ledger: Array<{
|
|
10
|
+
_id: string;
|
|
11
|
+
entryType: string;
|
|
12
|
+
status: string;
|
|
13
|
+
coins: number;
|
|
14
|
+
reason?: string;
|
|
15
|
+
availableAt?: string;
|
|
16
|
+
expiresAt?: string;
|
|
17
|
+
createdAt: string;
|
|
18
|
+
}>;
|
|
19
|
+
settings: Record<string, unknown>;
|
|
20
|
+
};
|
|
21
|
+
export type ApplicationPassBalance = {
|
|
22
|
+
limit: number;
|
|
23
|
+
used: number;
|
|
24
|
+
};
|
|
25
|
+
export type UserMembershipProgress = {
|
|
26
|
+
membership: {
|
|
27
|
+
tier: "plus" | "premium";
|
|
28
|
+
startsAt: string;
|
|
29
|
+
endsAt: string;
|
|
30
|
+
} | null;
|
|
31
|
+
eligibility: {
|
|
32
|
+
eligible: boolean;
|
|
33
|
+
qualifyingBookingCount: number;
|
|
34
|
+
requiredBookings: number;
|
|
35
|
+
bookingsRemaining: number;
|
|
36
|
+
availableCoins: number;
|
|
37
|
+
requiredCoins: number;
|
|
38
|
+
coinsRemaining: number;
|
|
39
|
+
};
|
|
40
|
+
applicationPasses: {
|
|
41
|
+
normalToPlus: {
|
|
42
|
+
volunteer: ApplicationPassBalance;
|
|
43
|
+
paid: ApplicationPassBalance;
|
|
44
|
+
};
|
|
45
|
+
plusToPremium: {
|
|
46
|
+
volunteer: ApplicationPassBalance;
|
|
47
|
+
paid: ApplicationPassBalance;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
plan: Record<string, unknown>;
|
|
51
|
+
};
|
|
52
|
+
export type HostPremiumQuote = {
|
|
53
|
+
eligible: boolean;
|
|
54
|
+
score: number;
|
|
55
|
+
minimumScore: number;
|
|
56
|
+
cash: {
|
|
57
|
+
basePrice: number;
|
|
58
|
+
discountPercent: number;
|
|
59
|
+
payablePrice: number;
|
|
60
|
+
currency: string;
|
|
61
|
+
};
|
|
62
|
+
commission: {
|
|
63
|
+
enabled: boolean;
|
|
64
|
+
baseUpliftPercentagePoints: number;
|
|
65
|
+
reductionPercentagePoints: number;
|
|
66
|
+
upliftPercentagePoints: number;
|
|
67
|
+
};
|
|
68
|
+
durationDays: number;
|
|
69
|
+
};
|
|
70
|
+
export type PartnerCouponReveal = {
|
|
71
|
+
campaign: {
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
distributionPlatform: string;
|
|
75
|
+
termsUrl?: string;
|
|
76
|
+
};
|
|
77
|
+
coupon: {
|
|
78
|
+
code: string;
|
|
79
|
+
preview: string;
|
|
80
|
+
percentage: number;
|
|
81
|
+
featureTypes: string[];
|
|
82
|
+
expiresAt?: string;
|
|
83
|
+
name: string;
|
|
84
|
+
description?: string;
|
|
85
|
+
};
|
|
86
|
+
accountBinding: "none";
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=loyalty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loyalty.d.ts","sourceRoot":"","sources":["../../../src/lib/models/loyalty.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,MAAM,CAAC;KAC5B,GAAG,IAAI,CAAC;IACT,MAAM,EAAE,KAAK,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,MAAM,sBAAsB,GAAG;IACnC,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAClF,WAAW,EAAE;QACX,QAAQ,EAAE,OAAO,CAAC;QAClB,sBAAsB,EAAE,MAAM,CAAC;QAC/B,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,iBAAiB,EAAE;QACjB,YAAY,EAAE;YAAE,SAAS,EAAE,sBAAsB,CAAC;YAAC,IAAI,EAAE,sBAAsB,CAAA;SAAE,CAAC;QAClF,aAAa,EAAE;YAAE,SAAS,EAAE,sBAAsB,CAAC;YAAC,IAAI,EAAE,sBAAsB,CAAA;SAAE,CAAC;KACpF,CAAC;IACF,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,UAAU,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,0BAA0B,EAAE,MAAM,CAAC;QAAC,yBAAyB,EAAE,MAAM,CAAC;QAAC,sBAAsB,EAAE,MAAM,CAAA;KAAE,CAAC;IACxI,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxF,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9I,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -24,6 +24,7 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
24
24
|
}, "strip", z.ZodTypeAny, {
|
|
25
25
|
status?: string | undefined;
|
|
26
26
|
rating?: number | undefined;
|
|
27
|
+
title?: string | undefined;
|
|
27
28
|
conversationId?: string | undefined;
|
|
28
29
|
messageId?: string | undefined;
|
|
29
30
|
senderId?: string | undefined;
|
|
@@ -33,10 +34,10 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
33
34
|
expenseId?: string | undefined;
|
|
34
35
|
referenceId?: string | undefined;
|
|
35
36
|
referenceType?: string | undefined;
|
|
36
|
-
title?: string | undefined;
|
|
37
37
|
}, {
|
|
38
38
|
status?: string | undefined;
|
|
39
39
|
rating?: number | undefined;
|
|
40
|
+
title?: string | undefined;
|
|
40
41
|
conversationId?: string | undefined;
|
|
41
42
|
messageId?: string | undefined;
|
|
42
43
|
senderId?: string | undefined;
|
|
@@ -46,11 +47,10 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
46
47
|
expenseId?: string | undefined;
|
|
47
48
|
referenceId?: string | undefined;
|
|
48
49
|
referenceType?: string | undefined;
|
|
49
|
-
title?: string | undefined;
|
|
50
50
|
}>>;
|
|
51
51
|
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
message: string;
|
|
53
52
|
_id: string;
|
|
53
|
+
message: string;
|
|
54
54
|
read: boolean;
|
|
55
55
|
type?: "new_message" | "milestone_completed" | "expense_added" | "group_invite" | "mention" | "application_received" | "application_status" | "application_shortlisted" | "id_verification_request" | "id_verified" | "id_rejected" | "package_enquiry" | "package_approval" | "package_denial" | "package_rating" | "package_review" | "opportunity_assigned" | "opportunity_approval" | "opportunity_denial" | "opportunity_rating" | "opportunity_review" | "blog_like" | "blog_comment" | "blog_posted" | "blog_approval" | "blog_denial" | "booking_confirmed" | "system" | "general" | undefined;
|
|
56
56
|
userId?: string | undefined;
|
|
@@ -60,6 +60,7 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
60
60
|
metadata?: {
|
|
61
61
|
status?: string | undefined;
|
|
62
62
|
rating?: number | undefined;
|
|
63
|
+
title?: string | undefined;
|
|
63
64
|
conversationId?: string | undefined;
|
|
64
65
|
messageId?: string | undefined;
|
|
65
66
|
senderId?: string | undefined;
|
|
@@ -69,11 +70,10 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
69
70
|
expenseId?: string | undefined;
|
|
70
71
|
referenceId?: string | undefined;
|
|
71
72
|
referenceType?: string | undefined;
|
|
72
|
-
title?: string | undefined;
|
|
73
73
|
} | undefined;
|
|
74
74
|
}, {
|
|
75
|
-
message: string;
|
|
76
75
|
_id: string;
|
|
76
|
+
message: string;
|
|
77
77
|
read: boolean;
|
|
78
78
|
type?: "new_message" | "milestone_completed" | "expense_added" | "group_invite" | "mention" | "application_received" | "application_status" | "application_shortlisted" | "id_verification_request" | "id_verified" | "id_rejected" | "package_enquiry" | "package_approval" | "package_denial" | "package_rating" | "package_review" | "opportunity_assigned" | "opportunity_approval" | "opportunity_denial" | "opportunity_rating" | "opportunity_review" | "blog_like" | "blog_comment" | "blog_posted" | "blog_approval" | "blog_denial" | "booking_confirmed" | "system" | "general" | undefined;
|
|
79
79
|
userId?: string | undefined;
|
|
@@ -83,6 +83,7 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
83
83
|
metadata?: {
|
|
84
84
|
status?: string | undefined;
|
|
85
85
|
rating?: number | undefined;
|
|
86
|
+
title?: string | undefined;
|
|
86
87
|
conversationId?: string | undefined;
|
|
87
88
|
messageId?: string | undefined;
|
|
88
89
|
senderId?: string | undefined;
|
|
@@ -92,7 +93,6 @@ export declare const NotifSchema: z.ZodObject<{
|
|
|
92
93
|
expenseId?: string | undefined;
|
|
93
94
|
referenceId?: string | undefined;
|
|
94
95
|
referenceType?: string | undefined;
|
|
95
|
-
title?: string | undefined;
|
|
96
96
|
} | undefined;
|
|
97
97
|
}>;
|
|
98
98
|
export type Notif = z.infer<typeof NotifSchema>;
|