@bash-app/bash-common 30.274.0 → 30.276.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/__tests__/groupTicketUtils.test.d.ts +2 -0
- package/dist/__tests__/groupTicketUtils.test.d.ts.map +1 -0
- package/dist/__tests__/groupTicketUtils.test.js +38 -0
- package/dist/__tests__/groupTicketUtils.test.js.map +1 -0
- package/dist/competitionIdeas.d.ts +19 -0
- package/dist/competitionIdeas.d.ts.map +1 -0
- package/dist/competitionIdeas.js +405 -0
- package/dist/competitionIdeas.js.map +1 -0
- package/dist/competitionValidation.d.ts +10 -0
- package/dist/competitionValidation.d.ts.map +1 -0
- package/dist/competitionValidation.js +29 -0
- package/dist/competitionValidation.js.map +1 -0
- package/dist/definitions.d.ts +4 -0
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js.map +1 -1
- package/dist/extendedSchemas.d.ts +351 -1
- package/dist/extendedSchemas.d.ts.map +1 -1
- package/dist/extendedSchemas.js +15 -0
- package/dist/extendedSchemas.js.map +1 -1
- package/dist/groupTicketUtils.d.ts +19 -0
- package/dist/groupTicketUtils.d.ts.map +1 -0
- package/dist/groupTicketUtils.js +74 -0
- package/dist/groupTicketUtils.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/__tests__/guestSurface.test.js +13 -1
- package/dist/utils/__tests__/guestSurface.test.js.map +1 -1
- package/dist/utils/__tests__/paymentUtils.test.js +18 -0
- package/dist/utils/__tests__/paymentUtils.test.js.map +1 -1
- package/dist/utils/__tests__/ticketListUtils.test.js +10 -0
- package/dist/utils/__tests__/ticketListUtils.test.js.map +1 -1
- package/dist/utils/groupTicketCartUtils.d.ts +12 -0
- package/dist/utils/groupTicketCartUtils.d.ts.map +1 -0
- package/dist/utils/groupTicketCartUtils.js +30 -0
- package/dist/utils/groupTicketCartUtils.js.map +1 -0
- package/dist/utils/guestSurface.d.ts +9 -0
- package/dist/utils/guestSurface.d.ts.map +1 -1
- package/dist/utils/guestSurface.js +8 -0
- package/dist/utils/guestSurface.js.map +1 -1
- package/dist/utils/paymentUtils.d.ts +10 -0
- package/dist/utils/paymentUtils.d.ts.map +1 -1
- package/dist/utils/paymentUtils.js +37 -1
- package/dist/utils/paymentUtils.js.map +1 -1
- package/dist/utils/ticketListUtils.d.ts.map +1 -1
- package/dist/utils/ticketListUtils.js +15 -3
- package/dist/utils/ticketListUtils.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/competition-prize-catalog-entry-tier.sql +39 -0
- package/prisma/schema.prisma +92 -7
- package/src/__tests__/groupTicketUtils.test.ts +53 -0
- package/src/competitionIdeas.ts +429 -0
- package/src/competitionValidation.ts +42 -0
- package/src/definitions.ts +5 -0
- package/src/extendedSchemas.ts +47 -0
- package/src/groupTicketUtils.ts +101 -0
- package/src/index.ts +4 -0
- package/src/utils/__tests__/guestSurface.test.ts +21 -0
- package/src/utils/__tests__/paymentUtils.test.ts +19 -0
- package/src/utils/__tests__/ticketListUtils.test.ts +12 -0
- package/src/utils/groupTicketCartUtils.ts +36 -0
- package/src/utils/guestSurface.ts +17 -0
- package/src/utils/paymentUtils.ts +42 -1
- package/src/utils/ticketListUtils.ts +19 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymentUtils.d.ts","sourceRoot":"","sources":["../../src/utils/paymentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,UAAU,EACV,gBAAgB,IAAI,sBAAsB,EAC3C,MAAM,gBAAgB,CAAC;AAQxB,OAAO,EAGL,sBAAsB,EAEvB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,kBAAkB,GAAG,SAAS,GACxC,MAAM,CAeR;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,UAAU,EAAE,EACzB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAChD,MAAM,
|
|
1
|
+
{"version":3,"file":"paymentUtils.d.ts","sourceRoot":"","sources":["../../src/utils/paymentUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,41 @@ export function calculateDiscountFromPromoCode(totalInDollars, promoCode) {
|
|
|
19
19
|
}
|
|
20
20
|
return 0;
|
|
21
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Unit price in cents for checkout (supports pay-what-you-can tiers).
|
|
24
|
+
*/
|
|
25
|
+
export function effectiveTicketUnitPriceCents(tier, row) {
|
|
26
|
+
if (tier.isDonationTier === true && row.unitPriceCents != null) {
|
|
27
|
+
return Math.max(tier.price, row.unitPriceCents);
|
|
28
|
+
}
|
|
29
|
+
return tier.price;
|
|
30
|
+
}
|
|
31
|
+
export function validatePayWhatYouCanTicketList(ticketTiers, ticketList) {
|
|
32
|
+
for (const tier of ticketTiers) {
|
|
33
|
+
if (tier.isDonationTier !== true)
|
|
34
|
+
continue;
|
|
35
|
+
const rows = ticketList.get(tier.id);
|
|
36
|
+
if (!rows?.length)
|
|
37
|
+
continue;
|
|
38
|
+
for (const row of rows) {
|
|
39
|
+
if ((row.numberOfTickets ?? 0) <= 0)
|
|
40
|
+
continue;
|
|
41
|
+
if (row.unitPriceCents == null) {
|
|
42
|
+
return {
|
|
43
|
+
ok: false,
|
|
44
|
+
message: `Enter an amount for ${tier.title} (minimum $${convertCentsToDollars(tier.price).toFixed(2)}).`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (row.unitPriceCents < tier.price) {
|
|
48
|
+
return {
|
|
49
|
+
ok: false,
|
|
50
|
+
message: `${tier.title} requires at least $${convertCentsToDollars(tier.price).toFixed(2)} per ticket.`,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return { ok: true };
|
|
56
|
+
}
|
|
22
57
|
/**
|
|
23
58
|
* Returns the total price in USD cents based on a map where the keys are the ticketTierIds
|
|
24
59
|
* Only counts USD-priced tickets. BashPoints tickets are excluded (they have price=0).
|
|
@@ -32,7 +67,8 @@ export function calculateTotalPriceWithoutTax(ticketTiers, ticketList) {
|
|
|
32
67
|
if (tier.pricingType !== "BASHPOINTS") {
|
|
33
68
|
const ticketListNumAndDate = ticketList.get(tier.id);
|
|
34
69
|
ticketListNumAndDate?.forEach((numAndDate) => {
|
|
35
|
-
|
|
70
|
+
const unitCents = effectiveTicketUnitPriceCents(tier, numAndDate);
|
|
71
|
+
total += unitCents * (numAndDate.numberOfTickets ?? 0);
|
|
36
72
|
});
|
|
37
73
|
}
|
|
38
74
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paymentUtils.js","sourceRoot":"","sources":["../../src/utils/paymentUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAEd,gBAAgB,IAAI,sBAAsB,GAC3C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EAEnB,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAC5C,cAAsB,EACtB,SAAyC;IAEzC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC;YACpC,MAAM,iBAAiB,GAAG,qBAAqB,CAC7C,SAAS,CAAC,qBAAqB,CAChC,CAAC;YACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,0CAA0C;QACnF,CAAC;QACD,IAAI,SAAS,CAAC,wBAAwB,EAAE,CAAC;YACvC,MAAM,iBAAiB,GACrB,cAAc,GAAG,CAAC,SAAS,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;YAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC,CAAC,0CAA0C;QAChG,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC3C,WAAyB,EACzB,UAAiD;IAEjD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,WAAW,CAAC,OAAO,CAAC,CAAC,IAAgB,EAAE,EAAE;QACvC,qEAAqE;QACrE,IAAI,IAAI,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;YACtC,MAAM,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACrD,oBAAoB,EAAE,OAAO,CAAC,CAAC,UAAkC,EAAE,EAAE;gBACnE,
|
|
1
|
+
{"version":3,"file":"paymentUtils.js","sourceRoot":"","sources":["../../src/utils/paymentUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticketListUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AA4C3B;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAChD,MAAM,
|
|
1
|
+
{"version":3,"file":"ticketListUtils.d.ts","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EAKvB,MAAM,mBAAmB,CAAC;AA4C3B;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,GAChD,MAAM,CA2CR;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,GACpB,GAAG,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAyEvC"}
|
|
@@ -65,7 +65,10 @@ export function ticketListToString(ticketList) {
|
|
|
65
65
|
dateTimeStr = dateTime.toISO() || dateTimeStr;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
ticketArgs.push(`${ticketNumAndDates.numberOfTickets}${URL_PARAMS_TICKETS_DATE_DELIM}${dateTimeStr}
|
|
68
|
+
ticketArgs.push(`${ticketNumAndDates.numberOfTickets}${URL_PARAMS_TICKETS_DATE_DELIM}${dateTimeStr}${ticketNumAndDates.unitPriceCents != null &&
|
|
69
|
+
ticketNumAndDates.unitPriceCents > 0
|
|
70
|
+
? `${URL_PARAMS_TICKETS_DATE_DELIM}${ticketNumAndDates.unitPriceCents}`
|
|
71
|
+
: ""}`);
|
|
69
72
|
}
|
|
70
73
|
}
|
|
71
74
|
// Only include this tier if we found at least one ticket > 0
|
|
@@ -114,16 +117,25 @@ export function ticketListStrToTicketList(ticketListStr) {
|
|
|
114
117
|
.split(URL_PARAMS_NUMBER_OF_TICKETS_TICKETS_DATE_DELIM)
|
|
115
118
|
.filter((ticketNumAndDateStr) => !!ticketNumAndDateStr);
|
|
116
119
|
for (const ticketNumAndDateStr of ticketNumAndDates) {
|
|
117
|
-
// [numberOfTickets];;[date]
|
|
118
|
-
const
|
|
120
|
+
// [numberOfTickets];;[date];;[unitPriceCents?]
|
|
121
|
+
const segments = ticketNumAndDateStr.split(URL_PARAMS_TICKETS_DATE_DELIM);
|
|
122
|
+
const numberOfTickets = segments[0];
|
|
123
|
+
const ticketDateTimeStr = segments[1];
|
|
124
|
+
const unitPriceCentsRaw = segments[2];
|
|
119
125
|
const ticketDateTime = DateTime.fromISO(ticketDateTimeStr);
|
|
120
126
|
let ticketDateTimeFormattedStr = undefined;
|
|
121
127
|
if (ticketDateTime.isValid) {
|
|
122
128
|
ticketDateTimeFormattedStr = ticketDateTime.toISO() ?? undefined;
|
|
123
129
|
}
|
|
130
|
+
const unitPriceCents = unitPriceCentsRaw != null && unitPriceCentsRaw !== ""
|
|
131
|
+
? parseInt(unitPriceCentsRaw, 10)
|
|
132
|
+
: undefined;
|
|
124
133
|
ticketNumAndDatesArr.push({
|
|
125
134
|
numberOfTickets: parseInt(numberOfTickets),
|
|
126
135
|
ticketDateTime: ticketDateTimeFormattedStr,
|
|
136
|
+
...(unitPriceCents != null && !Number.isNaN(unitPriceCents)
|
|
137
|
+
? { unitPriceCents }
|
|
138
|
+
: {}),
|
|
127
139
|
});
|
|
128
140
|
}
|
|
129
141
|
ticketList.set(ticketTierId, ticketNumAndDatesArr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticketListUtils.js","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAEL,+CAA+C,EAC/C,4BAA4B,EAC5B,sDAAsD,EACtD,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,sBAAsB;QACtB,OAAO,IAAI,CAAC,GAAG,CAAC;aACb,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACpB,QAAQ,CAAC,QAAQ,CAAC;aAClB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,mBAAmB;IACnB,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC;IAChB,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,sBAAsB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAiD;IAEjD,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,KAAK,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAClE,MAAM,UAAU,GAAa;YAC3B,GAAG,YAAY,GAAG,sDAAsD,EAAE;SAC3E,CAAC;QACF,IAAI,aAAa,GAAG,KAAK,CAAC,CAAC,oDAAoD;QAE/E,KAAK,MAAM,iBAAiB,IAAI,cAAc,EAAE,CAAC;YAC/C,IAAI,iBAAiB,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBAC1C,aAAa,GAAG,IAAI,CAAC;gBAErB,oDAAoD;gBACpD,IAAI,WAAW,GAAG,iBAAiB,CAAC,cAAc,CAAC;gBACnD,IAAI,WAAW,EAAE,CAAC;oBAChB,2EAA2E;oBAC3E,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;oBAC/C,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACrB,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,WAAW,CAAC;oBAChD,CAAC;gBACH,CAAC;gBAED,UAAU,CAAC,IAAI,CACb,GAAG,iBAAiB,CAAC,eAAe,GAAG,6BAA6B,GAAG,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"ticketListUtils.js","sourceRoot":"","sources":["../../src/utils/ticketListUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
-- Competition prize catalog + entry ticket tier link
|
|
2
|
+
-- Safe additive migration — preserves all data
|
|
3
|
+
BEGIN;
|
|
4
|
+
|
|
5
|
+
-- Prize catalog fields
|
|
6
|
+
ALTER TABLE "Prize" ADD COLUMN IF NOT EXISTS "sponsorLabel" TEXT;
|
|
7
|
+
ALTER TABLE "Prize" ADD COLUMN IF NOT EXISTS "imageUrl" TEXT;
|
|
8
|
+
|
|
9
|
+
-- Competition entry ticket tier + host promotions acknowledgment
|
|
10
|
+
ALTER TABLE "Competition" ADD COLUMN IF NOT EXISTS "entryTicketTierId" TEXT;
|
|
11
|
+
ALTER TABLE "Competition" ADD COLUMN IF NOT EXISTS "hostPromotionsAckAt" TIMESTAMP(3);
|
|
12
|
+
|
|
13
|
+
DO $$
|
|
14
|
+
BEGIN
|
|
15
|
+
IF NOT EXISTS (
|
|
16
|
+
SELECT 1 FROM pg_constraint WHERE conname = 'Competition_entryTicketTierId_key'
|
|
17
|
+
) THEN
|
|
18
|
+
ALTER TABLE "Competition"
|
|
19
|
+
ADD CONSTRAINT "Competition_entryTicketTierId_key" UNIQUE ("entryTicketTierId");
|
|
20
|
+
END IF;
|
|
21
|
+
END $$;
|
|
22
|
+
|
|
23
|
+
DO $$
|
|
24
|
+
BEGIN
|
|
25
|
+
IF NOT EXISTS (
|
|
26
|
+
SELECT 1 FROM pg_constraint WHERE conname = 'Competition_entryTicketTierId_fkey'
|
|
27
|
+
) THEN
|
|
28
|
+
ALTER TABLE "Competition"
|
|
29
|
+
ADD CONSTRAINT "Competition_entryTicketTierId_fkey"
|
|
30
|
+
FOREIGN KEY ("entryTicketTierId") REFERENCES "TicketTier"("id")
|
|
31
|
+
ON DELETE SET NULL ON UPDATE CASCADE;
|
|
32
|
+
END IF;
|
|
33
|
+
END $$;
|
|
34
|
+
|
|
35
|
+
COMMIT;
|
|
36
|
+
|
|
37
|
+
-- Verification
|
|
38
|
+
-- SELECT column_name FROM information_schema.columns WHERE table_name = 'Prize' AND column_name IN ('sponsorLabel', 'imageUrl');
|
|
39
|
+
-- SELECT column_name FROM information_schema.columns WHERE table_name = 'Competition' AND column_name IN ('entryTicketTierId', 'hostPromotionsAckAt');
|
package/prisma/schema.prisma
CHANGED
|
@@ -239,12 +239,25 @@ model Competition {
|
|
|
239
239
|
bracketData Json? // Store bracket structure/metadata
|
|
240
240
|
bracketVisible Boolean @default(true)
|
|
241
241
|
|
|
242
|
+
/// Optional ticket tier required for competition entry (participation fee / game entry)
|
|
243
|
+
entryTicketTierId String? @unique
|
|
244
|
+
entryTicketTier TicketTier? @relation("CompetitionEntryTicketTier", fields: [entryTicketTierId], references: [id], onDelete: SetNull)
|
|
245
|
+
/// When the host acknowledged contests/promotions Terms at setup
|
|
246
|
+
hostPromotionsAckAt DateTime?
|
|
247
|
+
/// Minimum event donation (cents) that qualifies for game entry when no linked tier (or OR with tier).
|
|
248
|
+
entryMinDonationCents Int?
|
|
249
|
+
/// Optional fundraising goal for public progress display (participation revenue + donations).
|
|
250
|
+
fundraiserGoalCents Int?
|
|
251
|
+
/// Host accepts inbound prize contributions from users/businesses.
|
|
252
|
+
seekingPrizes Boolean @default(false)
|
|
253
|
+
|
|
242
254
|
createdAt DateTime @default(now())
|
|
243
255
|
updatedAt DateTime @updatedAt
|
|
244
256
|
bashEvent BashEvent @relation(fields: [bashEventId], references: [id], onDelete: Cascade)
|
|
245
257
|
owner User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
246
258
|
sponsor CompetitionSponsor[]
|
|
247
259
|
prizes Prize[]
|
|
260
|
+
prizeOffers CompetitionPrizeOffer[]
|
|
248
261
|
participants CompetitionParticipant[]
|
|
249
262
|
votes CompetitionVote[]
|
|
250
263
|
matches CompetitionMatch[]
|
|
@@ -289,13 +302,46 @@ model CompetitionJudgeScore {
|
|
|
289
302
|
}
|
|
290
303
|
|
|
291
304
|
model CompetitionSponsor {
|
|
292
|
-
id
|
|
293
|
-
competitionId
|
|
294
|
-
userId
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
305
|
+
id String @id @default(cuid())
|
|
306
|
+
competitionId String
|
|
307
|
+
userId String?
|
|
308
|
+
/// Optional link to a Sponsor marketplace service for discovery/branding
|
|
309
|
+
sourceServiceId String?
|
|
310
|
+
/// Display name when sponsor is not a platform user
|
|
311
|
+
sponsorName String?
|
|
312
|
+
logoUrl String?
|
|
313
|
+
description String?
|
|
314
|
+
paidOn String?
|
|
315
|
+
competition Competition @relation(fields: [competitionId], references: [id], onDelete: Cascade)
|
|
316
|
+
sponsor User? @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
317
|
+
sourceService Service? @relation("CompetitionSponsorSourceService", fields: [sourceServiceId], references: [id], onDelete: SetNull)
|
|
318
|
+
|
|
319
|
+
@@index([sourceServiceId])
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
/// Inbound prize contribution proposal (Bash matchmaker — host accepts → Prize row).
|
|
323
|
+
model CompetitionPrizeOffer {
|
|
324
|
+
id String @id @default(cuid())
|
|
325
|
+
competitionId String
|
|
326
|
+
offeredByUserId String
|
|
327
|
+
status CompetitionPrizeOfferStatus @default(PENDING)
|
|
328
|
+
name String
|
|
329
|
+
description String @db.Text
|
|
330
|
+
imageUrl String?
|
|
331
|
+
sponsorLabel String?
|
|
332
|
+
sourceServiceId String?
|
|
333
|
+
sourceSku String?
|
|
334
|
+
hostNote String?
|
|
335
|
+
createdAt DateTime @default(now())
|
|
336
|
+
updatedAt DateTime @updatedAt
|
|
337
|
+
respondedAt DateTime?
|
|
338
|
+
competition Competition @relation(fields: [competitionId], references: [id], onDelete: Cascade)
|
|
339
|
+
offeredBy User @relation("CompetitionPrizeOffersSubmitted", fields: [offeredByUserId], references: [id], onDelete: Cascade)
|
|
340
|
+
sourceService Service? @relation("CompetitionPrizeOfferSourceService", fields: [sourceServiceId], references: [id], onDelete: SetNull)
|
|
341
|
+
|
|
342
|
+
@@index([competitionId])
|
|
343
|
+
@@index([offeredByUserId])
|
|
344
|
+
@@index([status])
|
|
299
345
|
}
|
|
300
346
|
|
|
301
347
|
model CompetitionParticipant {
|
|
@@ -746,6 +792,8 @@ model BashEvent {
|
|
|
746
792
|
featuredGuestsHeadline String?
|
|
747
793
|
/// When true, bash detail shows the full privacy-filtered guest list to everyone (not just tier holders).
|
|
748
794
|
attendeeListPublic Boolean @default(false)
|
|
795
|
+
/// Preview = count + curated faces; Public = full list for everyone; TicketHolders = full list for ticket buyers only.
|
|
796
|
+
attendeeListAccess String @default("Preview")
|
|
749
797
|
showOrganizerTitles Boolean @default(false)
|
|
750
798
|
servicePreferences Json? // New tiered status: { "Entertainment": "need", "Sponsors": "booked_closed", ... }
|
|
751
799
|
bookedServices Json? // Booked service details: { "Entertainment": { serviceId: "...", providerId: "...", bookedAt: "..." }, ... }
|
|
@@ -2032,8 +2080,13 @@ model TicketTier {
|
|
|
2032
2080
|
bashPassEligible Boolean @default(false)
|
|
2033
2081
|
/// Max BashPass redemptions for this tier (null = unlimited within tier capacity).
|
|
2034
2082
|
bashPassMaxRedemptions Int?
|
|
2083
|
+
/// One checkout buys a fixed package (e.g. table); price is package total, not per-person.
|
|
2084
|
+
isGroupTicket Boolean @default(false)
|
|
2085
|
+
/// Headcount included per package when isGroupTicket (e.g. 6). Required when isGroupTicket.
|
|
2086
|
+
groupTicketSeatCount Int?
|
|
2035
2087
|
ticketGiftGrants TicketGiftGrant[]
|
|
2036
2088
|
tierReleaseReminders TierReleaseReminder[]
|
|
2089
|
+
entryCompetition Competition? @relation("CompetitionEntryTicketTier")
|
|
2037
2090
|
|
|
2038
2091
|
@@unique([bashEventId, title])
|
|
2039
2092
|
@@index([availableAt])
|
|
@@ -2111,6 +2164,8 @@ model Ticket {
|
|
|
2111
2164
|
waitlistUserId String?
|
|
2112
2165
|
/// Rotated when ticket is transferred; QR payload must match for check-in (null = legacy tickets, no strict check).
|
|
2113
2166
|
qrToken String?
|
|
2167
|
+
/// Actual unit price paid at checkout in cents (PWYC tiers; null = use tier.price for legacy rows).
|
|
2168
|
+
paidUnitPriceCents Int?
|
|
2114
2169
|
|
|
2115
2170
|
/// P2P Venmo/Zelle off-platform payment flow
|
|
2116
2171
|
p2pPaymentMethod String?
|
|
@@ -2468,6 +2523,8 @@ model Prize {
|
|
|
2468
2523
|
prizeType PrizeType
|
|
2469
2524
|
name String // Prize name (e.g., "$100 Cash", "Backpack")
|
|
2470
2525
|
placeName String? // Display name (e.g., "1st Place", "Winner")
|
|
2526
|
+
sponsorLabel String? // e.g. "Contributed by Acme Co"
|
|
2527
|
+
imageUrl String? // Optional prize photo
|
|
2471
2528
|
prizeLevel Int
|
|
2472
2529
|
description String
|
|
2473
2530
|
competitionId String?
|
|
@@ -2475,6 +2532,16 @@ model Prize {
|
|
|
2475
2532
|
winnerUserId String?
|
|
2476
2533
|
wonAt DateTime? // When the prize was awarded
|
|
2477
2534
|
claimedAt DateTime? // When the prize was claimed
|
|
2535
|
+
/// Platform user who donated this prize (optional)
|
|
2536
|
+
contributorUserId String?
|
|
2537
|
+
/// Sponsor marketplace service the prize was picked from (optional)
|
|
2538
|
+
sourceServiceId String?
|
|
2539
|
+
sourceSku String?
|
|
2540
|
+
/// Contributor marked their in-kind commitment fulfilled (off-platform delivery via host)
|
|
2541
|
+
contributorFulfilledAt DateTime?
|
|
2542
|
+
contributorFulfilledNote String?
|
|
2543
|
+
/// Host marked prize handed to winner
|
|
2544
|
+
hostDeliveredAt DateTime?
|
|
2478
2545
|
|
|
2479
2546
|
// Automatic payment fields
|
|
2480
2547
|
autoPayEnabled Boolean @default(false)
|
|
@@ -2495,10 +2562,14 @@ model Prize {
|
|
|
2495
2562
|
|
|
2496
2563
|
competition Competition? @relation(fields: [competitionId], references: [id], onDelete: Cascade)
|
|
2497
2564
|
winner User? @relation(fields: [winnerUserId], references: [id], onDelete: Cascade)
|
|
2565
|
+
contributor User? @relation("PrizeContributor", fields: [contributorUserId], references: [id], onDelete: SetNull)
|
|
2566
|
+
sourceService Service? @relation("PrizeSourceService", fields: [sourceServiceId], references: [id], onDelete: SetNull)
|
|
2498
2567
|
bashPointsTransaction BashCreditTransaction? @relation(fields: [bashPointsTransactionId], references: [id], onDelete: SetNull)
|
|
2499
2568
|
|
|
2500
2569
|
@@index([competitionId])
|
|
2501
2570
|
@@index([winnerUserId]) // For fetching user's wins
|
|
2571
|
+
@@index([contributorUserId])
|
|
2572
|
+
@@index([sourceServiceId])
|
|
2502
2573
|
@@index([bashPointsTransactionId])
|
|
2503
2574
|
}
|
|
2504
2575
|
|
|
@@ -2817,6 +2888,8 @@ model User {
|
|
|
2817
2888
|
clubMembers ClubMember[]
|
|
2818
2889
|
competitions Competition[]
|
|
2819
2890
|
competitionSponsorships CompetitionSponsor[]
|
|
2891
|
+
competitionPrizeOffersSubmitted CompetitionPrizeOffer[] @relation("CompetitionPrizeOffersSubmitted")
|
|
2892
|
+
prizesContributed Prize[] @relation("PrizeContributor")
|
|
2820
2893
|
competitionParticipations CompetitionParticipant[]
|
|
2821
2894
|
competitionVotes CompetitionVote[]
|
|
2822
2895
|
competitionJudgeAssignments CompetitionJudgeAssignment[] @relation("CompetitionJudgeAssignments")
|
|
@@ -3553,6 +3626,9 @@ model Service {
|
|
|
3553
3626
|
promotionBlastTemplates PromotionBlastTemplate[]
|
|
3554
3627
|
promotionBlastEntitlements PromotionBlastEntitlement[]
|
|
3555
3628
|
promotionBlasts PromotionBlast[]
|
|
3629
|
+
competitionPrizesSourced Prize[] @relation("PrizeSourceService")
|
|
3630
|
+
competitionSponsorCredits CompetitionSponsor[] @relation("CompetitionSponsorSourceService")
|
|
3631
|
+
competitionPrizeOffersSourced CompetitionPrizeOffer[] @relation("CompetitionPrizeOfferSourceService")
|
|
3556
3632
|
|
|
3557
3633
|
@@index([serviceListingStripeSubscriptionId])
|
|
3558
3634
|
@@index([paymentAccountId])
|
|
@@ -6106,6 +6182,13 @@ enum PrizePaymentMethod {
|
|
|
6106
6182
|
Manual
|
|
6107
6183
|
}
|
|
6108
6184
|
|
|
6185
|
+
enum CompetitionPrizeOfferStatus {
|
|
6186
|
+
PENDING
|
|
6187
|
+
ACCEPTED
|
|
6188
|
+
DECLINED
|
|
6189
|
+
WITHDRAWN
|
|
6190
|
+
}
|
|
6191
|
+
|
|
6109
6192
|
enum PrizePaymentStatus {
|
|
6110
6193
|
Pending
|
|
6111
6194
|
AwaitingPayment
|
|
@@ -9169,6 +9252,8 @@ model GroupMember {
|
|
|
9169
9252
|
userId String
|
|
9170
9253
|
status GroupMemberStatus @default(Invited)
|
|
9171
9254
|
ticketId String? // Set when status = Going
|
|
9255
|
+
/// Group leader marked this member as having reimbursed their share off-platform (Venmo, etc.)
|
|
9256
|
+
reimbursedLeaderAt DateTime?
|
|
9172
9257
|
joinedAt DateTime @default(now())
|
|
9173
9258
|
|
|
9174
9259
|
group EventGroup @relation(fields: [groupId], references: [id], onDelete: Cascade)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import {
|
|
2
|
+
formatGroupPackagePerPersonUsd,
|
|
3
|
+
groupPackageShareCents,
|
|
4
|
+
isGroupTicketTier,
|
|
5
|
+
packagesSoldFromTicketCount,
|
|
6
|
+
validateGroupTicketTierInput,
|
|
7
|
+
} from "../groupTicketUtils.js";
|
|
8
|
+
|
|
9
|
+
describe("isGroupTicketTier", () => {
|
|
10
|
+
it("returns true when flag and seat count are valid", () => {
|
|
11
|
+
expect(
|
|
12
|
+
isGroupTicketTier({ isGroupTicket: true, groupTicketSeatCount: 6 })
|
|
13
|
+
).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("returns false when seat count is below minimum", () => {
|
|
17
|
+
expect(
|
|
18
|
+
isGroupTicketTier({ isGroupTicket: true, groupTicketSeatCount: 1 })
|
|
19
|
+
).toBe(false);
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
describe("packagesSoldFromTicketCount", () => {
|
|
24
|
+
it("converts seat rows to package count", () => {
|
|
25
|
+
expect(packagesSoldFromTicketCount(12, 6)).toBe(2);
|
|
26
|
+
expect(packagesSoldFromTicketCount(7, 6)).toBe(2);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
describe("groupPackageShareCents", () => {
|
|
31
|
+
it("splits package price evenly in cents", () => {
|
|
32
|
+
expect(groupPackageShareCents(60000, 6)).toBe(10000);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
describe("formatGroupPackagePerPersonUsd", () => {
|
|
37
|
+
it("formats per-person USD", () => {
|
|
38
|
+
expect(formatGroupPackagePerPersonUsd(60000, 6)).toMatch(/\$100/);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
describe("validateGroupTicketTierInput", () => {
|
|
43
|
+
it("rejects donation group packages", () => {
|
|
44
|
+
const result = validateGroupTicketTierInput({
|
|
45
|
+
isGroupTicket: true,
|
|
46
|
+
groupTicketSeatCount: 6,
|
|
47
|
+
isDonationTier: true,
|
|
48
|
+
isWaitlistTier: false,
|
|
49
|
+
pricingType: "USD",
|
|
50
|
+
});
|
|
51
|
+
expect(result.ok).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
});
|