@mohasinac/appkit 2.7.52 → 2.7.54
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/_internal/client/features/layout/DashboardLayoutClient.js +1 -1
- package/dist/_internal/server/jobs/core/auctionSettlement.js +6 -3
- package/dist/_internal/server/jobs/core/bundleStockSync.js +9 -7
- package/dist/_internal/server/jobs/core/onProductStockChange.d.ts +12 -3
- package/dist/_internal/server/jobs/core/onProductStockChange.js +12 -13
- package/dist/_internal/server/jobs/core/onProductWrite.js +1 -3
- package/dist/_internal/server/jobs/handlers/onProductStockChange.js +11 -2
- package/dist/client.d.ts +2 -0
- package/dist/client.js +1 -0
- package/dist/constants/field-names.d.ts +4 -3
- package/dist/constants/field-names.js +8 -8
- package/dist/errors/error-codes.d.ts +3 -0
- package/dist/errors/error-codes.js +3 -0
- package/dist/errors/messages.d.ts +3 -0
- package/dist/errors/messages.js +3 -0
- package/dist/features/admin/types/product.types.d.ts +1 -1
- package/dist/features/admin/types/product.types.js +2 -3
- package/dist/features/auctions/actions/bid-actions.d.ts +9 -0
- package/dist/features/auctions/actions/bid-actions.js +61 -0
- package/dist/features/auctions/components/AuctionDetailPageView.d.ts +2 -1
- package/dist/features/auctions/components/AuctionDetailPageView.js +5 -4
- package/dist/features/auctions/components/PlaceBidFormClient.d.ts +3 -1
- package/dist/features/auctions/components/PlaceBidFormClient.js +32 -2
- package/dist/features/auctions/types/index.d.ts +1 -1
- package/dist/features/layout/AppLayoutShell.js +1 -1
- package/dist/features/pre-orders/components/PreOrdersIndexListing.js +2 -11
- package/dist/features/products/api/[id]/route.js +4 -8
- package/dist/features/products/api/route.js +1 -3
- package/dist/features/products/components/AuctionsIndexListing.js +3 -11
- package/dist/features/products/components/PrizeDrawsIndexListing.js +2 -10
- package/dist/features/products/components/ProductFilters.d.ts +33 -9
- package/dist/features/products/components/ProductFilters.js +6 -29
- package/dist/features/products/components/ProductForm.js +2 -3
- package/dist/features/products/constants/sieve.d.ts +162 -0
- package/dist/features/products/constants/sieve.js +95 -0
- package/dist/features/products/repository/products.repository.d.ts +5 -0
- package/dist/features/products/repository/products.repository.js +23 -3
- package/dist/features/products/schemas/firestore.d.ts +4 -4
- package/dist/features/products/schemas/firestore.js +2 -3
- package/dist/features/products/schemas/index.d.ts +6 -6
- package/dist/features/products/schemas/index.js +2 -6
- package/dist/features/products/types/index.d.ts +1 -1
- package/dist/features/seller/actions/offer-actions.js +2 -2
- package/dist/features/wishlist/types/index.d.ts +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.js +6 -4
- package/dist/seed/addresses-seed-data.d.ts +2 -18
- package/dist/seed/addresses-seed-data.js +137 -203
- package/dist/seed/bids-seed-data.d.ts +2 -8
- package/dist/seed/bids-seed-data.js +172 -648
- package/dist/seed/blog-posts-seed-data.d.ts +0 -5
- package/dist/seed/blog-posts-seed-data.js +341 -596
- package/dist/seed/carousel-slides-seed-data.d.ts +0 -5
- package/dist/seed/carousel-slides-seed-data.js +61 -192
- package/dist/seed/carousels-seed-data.js +18 -1
- package/dist/seed/cart-seed-data.d.ts +1 -18
- package/dist/seed/cart-seed-data.js +116 -293
- package/dist/seed/categories-seed-data.d.ts +0 -6
- package/dist/seed/categories-seed-data.js +1409 -1537
- package/dist/seed/claimed-coupons-seed-data.d.ts +0 -11
- package/dist/seed/claimed-coupons-seed-data.js +32 -29
- package/dist/seed/conversations-seed-data.d.ts +0 -6
- package/dist/seed/conversations-seed-data.js +132 -280
- package/dist/seed/coupon-usage-seed-data.d.ts +0 -16
- package/dist/seed/coupon-usage-seed-data.js +30 -44
- package/dist/seed/coupons-seed-data.d.ts +0 -6
- package/dist/seed/coupons-seed-data.js +141 -489
- package/dist/seed/events-seed-data.d.ts +0 -6
- package/dist/seed/events-seed-data.js +201 -379
- package/dist/seed/faq-seed-data.d.ts +0 -14
- package/dist/seed/faq-seed-data.js +609 -1184
- package/dist/seed/grouped-listings-seed-data.d.ts +119 -8
- package/dist/seed/grouped-listings-seed-data.js +148 -233
- package/dist/seed/history-seed-data.d.ts +0 -7
- package/dist/seed/history-seed-data.js +50 -54
- package/dist/seed/homepage-sections-seed-data.d.ts +0 -5
- package/dist/seed/homepage-sections-seed-data.js +83 -175
- package/dist/seed/index.d.ts +1 -1
- package/dist/seed/index.js +1 -1
- package/dist/seed/manifest.js +2 -2
- package/dist/seed/notifications-seed-data.d.ts +0 -6
- package/dist/seed/notifications-seed-data.js +309 -196
- package/dist/seed/offers-seed-data.d.ts +0 -8
- package/dist/seed/offers-seed-data.js +118 -197
- package/dist/seed/orders-seed-data.d.ts +2 -8
- package/dist/seed/orders-seed-data.js +248 -1510
- package/dist/seed/payouts-seed-data.d.ts +0 -6
- package/dist/seed/payouts-seed-data.js +102 -441
- package/dist/seed/products-auctions-seed-data.d.ts +1 -14
- package/dist/seed/products-auctions-seed-data.js +612 -1084
- package/dist/seed/products-preorders-seed-data.d.ts +119 -14
- package/dist/seed/products-preorders-seed-data.js +154 -455
- package/dist/seed/products-standard-seed-data.d.ts +1 -15
- package/dist/seed/products-standard-seed-data.js +1355 -4128
- package/dist/seed/reviews-seed-data.d.ts +2 -8
- package/dist/seed/reviews-seed-data.js +99 -1182
- package/dist/seed/scammers-seed-data.d.ts +0 -15
- package/dist/seed/scammers-seed-data.js +36 -37
- package/dist/seed/sessions-seed-data.d.ts +0 -13
- package/dist/seed/sessions-seed-data.js +58 -335
- package/dist/seed/site-settings-seed-data.d.ts +0 -4
- package/dist/seed/site-settings-seed-data.js +61 -52
- package/dist/seed/store-addresses-seed-data.js +27 -151
- package/dist/seed/store-extensions-seed-data.d.ts +0 -7
- package/dist/seed/store-extensions-seed-data.js +147 -261
- package/dist/seed/stores-seed-data.d.ts +0 -5
- package/dist/seed/stores-seed-data.js +222 -184
- package/dist/seed/sub-listings-seed-data.d.ts +119 -0
- package/dist/seed/sub-listings-seed-data.js +447 -0
- package/dist/seed/support-tickets-seed-data.d.ts +0 -7
- package/dist/seed/support-tickets-seed-data.js +82 -75
- package/dist/seed/users-seed-data.d.ts +0 -5
- package/dist/seed/users-seed-data.js +279 -634
- package/dist/seed/wishlists-seed-data.d.ts +0 -9
- package/dist/seed/wishlists-seed-data.js +36 -52
- package/dist/seo/json-ld.js +6 -4
- package/dist/styles.css +8052 -3
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/utils/search-tokens.d.ts +2 -0
- package/dist/utils/search-tokens.js +21 -0
- package/package.json +2 -2
- package/scripts/seed-cli.mjs +2 -2
|
@@ -1,463 +1,285 @@
|
|
|
1
|
-
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
1
|
+
/*
|
|
2
|
+
* WHY: Seeds 8 YGO-themed events covering all event types (poll, survey, sale, raffle, spin_wheel, feedback, offer).
|
|
3
|
+
* WHAT: 2 upcoming + 4 active + 2 ended. Includes raffle (open + drawn), spin wheel, poll, survey, feedback, sale, offer.
|
|
4
|
+
*
|
|
5
|
+
* EXPORTS:
|
|
6
|
+
* eventsSeedData — Array of EventDocument for seed runner
|
|
7
|
+
* eventEntriesSeedData — Array of EventEntryDocument for seed runner
|
|
8
|
+
*
|
|
9
|
+
* @tag domain:events
|
|
10
|
+
* @tag layer:seed
|
|
11
|
+
* @tag pattern:none
|
|
12
|
+
* @tag access:server-only
|
|
13
|
+
* @tag consumers:seed/index.ts,seed/runner.ts,SeedPanel
|
|
14
|
+
* @tag sideEffects:none
|
|
6
15
|
*/
|
|
7
16
|
import { EVENT_FIELDS, EVENT_ENTRY_FIELDS } from "../features/events/schemas";
|
|
8
17
|
const NOW = new Date();
|
|
9
18
|
const daysAgo = (n) => new Date(NOW.getTime() - n * 86400000);
|
|
10
19
|
const daysAhead = (n) => new Date(NOW.getTime() + n * 86400000);
|
|
11
20
|
export const eventsSeedData = [
|
|
12
|
-
// ── 1. ACTIVE —
|
|
21
|
+
// ── 1. ACTIVE — Poll: Favourite Duelist Season 1 ──────────────────────────
|
|
13
22
|
{
|
|
14
|
-
id: "event-
|
|
15
|
-
slug: "
|
|
23
|
+
id: "event-favourite-duelist-poll",
|
|
24
|
+
slug: "favourite-duelist-poll",
|
|
16
25
|
type: EVENT_FIELDS.TYPE_VALUES.POLL,
|
|
17
|
-
title: "
|
|
18
|
-
description: "
|
|
26
|
+
title: "Vote: Best Duelist of Duel Monsters Season 1",
|
|
27
|
+
description: "Who is the greatest duelist of the original Duel Monsters season? Cast your vote and see real-time results!",
|
|
19
28
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
20
|
-
startsAt:
|
|
21
|
-
endsAt: daysAhead(
|
|
22
|
-
|
|
23
|
-
tags: ["
|
|
29
|
+
startsAt: daysAgo(5),
|
|
30
|
+
endsAt: daysAhead(10),
|
|
31
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/46986414.jpg", alt: "Dark Magician — Yugi's ace" },
|
|
32
|
+
tags: ["poll", "duel-monsters", "season-1"],
|
|
24
33
|
pollConfig: {
|
|
25
|
-
allowMultiSelect: false,
|
|
26
|
-
allowComment: true,
|
|
27
34
|
options: [
|
|
28
|
-
{ id: "
|
|
29
|
-
{ id: "
|
|
30
|
-
{ id: "
|
|
35
|
+
{ id: "yugi", label: "Yugi Muto" },
|
|
36
|
+
{ id: "kaiba", label: "Seto Kaiba" },
|
|
37
|
+
{ id: "joey", label: "Joey Wheeler" },
|
|
38
|
+
{ id: "pegasus", label: "Maximillion Pegasus" },
|
|
39
|
+
{ id: "bakura", label: "Yami Bakura" },
|
|
31
40
|
],
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
allowMultiSelect: false,
|
|
42
|
+
allowComment: false,
|
|
43
|
+
resultsVisibility: "after_vote",
|
|
34
44
|
},
|
|
35
|
-
stats: { totalEntries:
|
|
45
|
+
stats: { totalEntries: 362, approvedEntries: 362, flaggedEntries: 0 },
|
|
36
46
|
createdBy: "user-admin-letitrip",
|
|
37
|
-
createdAt: daysAgo(
|
|
47
|
+
createdAt: daysAgo(7),
|
|
38
48
|
updatedAt: daysAgo(1),
|
|
39
49
|
},
|
|
40
|
-
// ── 2. ACTIVE —
|
|
50
|
+
// ── 2. ACTIVE — Survey: Card Condition ───────────────────────────────────
|
|
41
51
|
{
|
|
42
|
-
id: "event-
|
|
43
|
-
slug: "
|
|
52
|
+
id: "event-card-condition-survey",
|
|
53
|
+
slug: "card-condition-survey",
|
|
44
54
|
type: EVENT_FIELDS.TYPE_VALUES.SURVEY,
|
|
45
|
-
title: "
|
|
46
|
-
description: "
|
|
55
|
+
title: "How Do You Store Your Cards?",
|
|
56
|
+
description: "Help us understand how Indian YGO collectors protect their cards. Your responses help us recommend better storage solutions.",
|
|
47
57
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
48
|
-
startsAt:
|
|
49
|
-
endsAt: daysAhead(
|
|
50
|
-
|
|
51
|
-
tags: ["
|
|
58
|
+
startsAt: daysAgo(3),
|
|
59
|
+
endsAt: daysAhead(14),
|
|
60
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", alt: "Blue-Eyes White Dragon" },
|
|
61
|
+
tags: ["survey", "card-storage", "community"],
|
|
52
62
|
surveyConfig: {
|
|
53
63
|
requireLogin: true,
|
|
54
64
|
maxEntriesPerUser: 1,
|
|
55
65
|
hasLeaderboard: false,
|
|
56
|
-
hasPointSystem:
|
|
57
|
-
pointsLabel: "Voucher Credits",
|
|
66
|
+
hasPointSystem: false,
|
|
58
67
|
entryReviewRequired: false,
|
|
59
68
|
formFields: [
|
|
60
|
-
{
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
label: "Which city would you travel to for a 1-day convention?",
|
|
64
|
-
required: true,
|
|
65
|
-
options: ["Mumbai", "Delhi", "Bengaluru", "Hyderabad", "Pune", "Chennai", "Other"],
|
|
66
|
-
order: 1,
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
id: "field-vertical",
|
|
70
|
-
type: "multiselect",
|
|
71
|
-
label: "Which collectibles verticals do you primarily collect?",
|
|
72
|
-
required: true,
|
|
73
|
-
options: ["Pokémon TCG", "Hot Wheels / Tomica", "Beyblade X", "Anime Figures", "Gunpla", "Yu-Gi-Oh! TCG"],
|
|
74
|
-
order: 2,
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
id: "field-budget",
|
|
78
|
-
type: "select",
|
|
79
|
-
label: "What would you spend at a convention (entry + purchases)?",
|
|
80
|
-
required: false,
|
|
81
|
-
options: ["Under ₹2,000", "₹2,000–5,000", "₹5,000–10,000", "Over ₹10,000"],
|
|
82
|
-
order: 3,
|
|
83
|
-
},
|
|
69
|
+
{ id: "q1", label: "What sleeve type do you use?", type: "radio", options: ["Penny sleeves", "Perfect fit", "Character art", "No sleeves"], required: true },
|
|
70
|
+
{ id: "q2", label: "How do you store your collection?", type: "radio", options: ["Binder", "Deck box", "Top loaders", "Shoebox"], required: true },
|
|
71
|
+
{ id: "q3", label: "Do you use humidity control?", type: "radio", options: ["Yes — silica gel", "Yes — climate control", "No"], required: true },
|
|
84
72
|
],
|
|
85
73
|
},
|
|
86
|
-
stats: { totalEntries:
|
|
74
|
+
stats: { totalEntries: 89, approvedEntries: 89, flaggedEntries: 0 },
|
|
87
75
|
createdBy: "user-admin-letitrip",
|
|
88
76
|
createdAt: daysAgo(5),
|
|
89
|
-
updatedAt: daysAgo(
|
|
77
|
+
updatedAt: daysAgo(1),
|
|
90
78
|
},
|
|
91
|
-
// ── 3. ACTIVE —
|
|
79
|
+
// ── 3. ACTIVE — Sale: Duelist Kingdom Clearance ───────────────────────────
|
|
92
80
|
{
|
|
93
|
-
id: "event-
|
|
94
|
-
slug: "
|
|
81
|
+
id: "event-duelist-kingdom-clearance",
|
|
82
|
+
slug: "duelist-kingdom-clearance",
|
|
95
83
|
type: EVENT_FIELDS.TYPE_VALUES.SALE,
|
|
96
|
-
title: "
|
|
97
|
-
description: "
|
|
84
|
+
title: "Duelist Kingdom Clearance Sale — 20% Off",
|
|
85
|
+
description: "20% off all singles from the Duel Monsters era! Use code TOURNAMENT2026 at checkout. Limited time only.",
|
|
98
86
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
99
|
-
startsAt: daysAgo(
|
|
100
|
-
endsAt: daysAhead(
|
|
101
|
-
|
|
102
|
-
tags: ["
|
|
87
|
+
startsAt: daysAgo(2),
|
|
88
|
+
endsAt: daysAhead(7),
|
|
89
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/55144522.jpg", alt: "Pot of Greed" },
|
|
90
|
+
tags: ["sale", "clearance", "duel-monsters", "singles"],
|
|
103
91
|
saleConfig: {
|
|
104
|
-
discountPercent:
|
|
105
|
-
|
|
106
|
-
|
|
92
|
+
discountPercent: 20,
|
|
93
|
+
applicableCategories: ["category-monster-cards", "category-spell-cards", "category-trap-cards", "category-extra-deck-cards"],
|
|
94
|
+
couponCode: "TOURNAMENT2026",
|
|
107
95
|
},
|
|
108
|
-
stats: { totalEntries:
|
|
109
|
-
createdBy: "user-vikram-mehta",
|
|
110
|
-
createdAt: daysAgo(7),
|
|
111
|
-
updatedAt: daysAgo(1),
|
|
112
|
-
},
|
|
113
|
-
// ── 4. ACTIVE — Anime Figure Showcase Offer Event ─────────────────────────
|
|
114
|
-
{
|
|
115
|
-
id: "event-anime-figure-showcase-may-2026",
|
|
116
|
-
slug: "event-anime-figure-showcase-may-2026",
|
|
117
|
-
type: EVENT_FIELDS.TYPE_VALUES.OFFER,
|
|
118
|
-
title: "S.H.Figuarts & Nendoroid Showcase — Make an Offer Week",
|
|
119
|
-
description: "<p>This week, all S.H.Figuarts and Nendoroid listings on LetItRip accept <strong>negotiated offers</strong>. Submit your best price on any anime figure listing — sellers will respond within 24 hours. Use code <strong>FIGURE10</strong> for an additional 10% off any accepted offer.</p>",
|
|
120
|
-
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
121
|
-
startsAt: daysAgo(3),
|
|
122
|
-
endsAt: daysAhead(4),
|
|
123
|
-
coverImageUrl: "https://images.unsplash.com/photo-1578632767115-351597cf2477?w=1200&h=630&fit=crop",
|
|
124
|
-
tags: ["anime-figures", "shf", "nendoroid", "offers", "bandai", "good-smile"],
|
|
125
|
-
offerConfig: {
|
|
126
|
-
couponId: "coupon-figure10",
|
|
127
|
-
displayCode: "FIGURE10",
|
|
128
|
-
bannerText: "🎌 Use FIGURE10 for 10% extra off any accepted offer on anime figures",
|
|
129
|
-
},
|
|
130
|
-
stats: { totalEntries: 23, approvedEntries: 21, flaggedEntries: 2 },
|
|
96
|
+
stats: { totalEntries: 0, approvedEntries: 0, flaggedEntries: 0 },
|
|
131
97
|
createdBy: "user-admin-letitrip",
|
|
132
|
-
createdAt: daysAgo(
|
|
133
|
-
updatedAt: daysAgo(
|
|
134
|
-
},
|
|
135
|
-
// ── 5. ENDED — Yu-Gi-Oh! Regional Qualifier Poll ──────────────────────────
|
|
136
|
-
{
|
|
137
|
-
id: "event-yugioh-regional-qualifier-march-2026",
|
|
138
|
-
slug: "event-yugioh-regional-qualifier-march-2026",
|
|
139
|
-
type: EVENT_FIELDS.TYPE_VALUES.POLL,
|
|
140
|
-
title: "Yu-Gi-Oh! Regional March 2026 — Hyderabad vs Bengaluru Vote",
|
|
141
|
-
description: "<p>The vote for March's regional venue is closed. <strong>Hyderabad won</strong> with 68% of the vote! Results and tournament schedule are now posted in the LetItRip blog. Stay tuned for the April regional venue poll.</p>",
|
|
142
|
-
status: EVENT_FIELDS.STATUS_VALUES.ENDED,
|
|
143
|
-
startsAt: daysAgo(45),
|
|
144
|
-
endsAt: daysAgo(30),
|
|
145
|
-
coverImageUrl: "https://images.unsplash.com/photo-1612036782180-6f0b6cd846fe?w=1200&h=630&fit=crop",
|
|
146
|
-
tags: ["yugioh", "regional", "tournament", "poll", "ended"],
|
|
147
|
-
pollConfig: {
|
|
148
|
-
allowMultiSelect: false,
|
|
149
|
-
allowComment: false,
|
|
150
|
-
options: [
|
|
151
|
-
{ id: "opt-hyd", label: "Hyderabad" },
|
|
152
|
-
{ id: "opt-blr", label: "Bengaluru" },
|
|
153
|
-
],
|
|
154
|
-
resultsVisibility: "after_end",
|
|
155
|
-
requireLogin: true,
|
|
156
|
-
},
|
|
157
|
-
stats: { totalEntries: 209, approvedEntries: 209, flaggedEntries: 0 },
|
|
158
|
-
createdBy: "user-nisha-reddy",
|
|
159
|
-
createdAt: daysAgo(52),
|
|
160
|
-
updatedAt: daysAgo(30),
|
|
98
|
+
createdAt: daysAgo(4),
|
|
99
|
+
updatedAt: daysAgo(2),
|
|
161
100
|
},
|
|
162
|
-
// ──
|
|
101
|
+
// ── 4. ACTIVE — Raffle: Win PSA 10 Dark Magician Girl ────────────────────
|
|
163
102
|
{
|
|
164
|
-
id: "event-
|
|
165
|
-
slug: "
|
|
103
|
+
id: "event-win-psa10-dark-magician-girl",
|
|
104
|
+
slug: "win-psa10-dark-magician-girl",
|
|
166
105
|
type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
|
|
167
|
-
title: "
|
|
168
|
-
description: "
|
|
106
|
+
title: "Win PSA 10 Dark Magician Girl",
|
|
107
|
+
description: "Enter for a chance to win a PSA 10 Dark Magician Girl (MFC 1st Edition)! One lucky duelist takes home the ultimate card.",
|
|
169
108
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
170
|
-
startsAt: daysAgo(
|
|
109
|
+
startsAt: daysAgo(3),
|
|
171
110
|
endsAt: daysAhead(14),
|
|
172
|
-
|
|
173
|
-
tags: ["raffle", "
|
|
111
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/38033121.jpg", alt: "Dark Magician Girl" },
|
|
112
|
+
tags: ["raffle", "psa-10", "dark-magician-girl", "giveaway"],
|
|
174
113
|
hasRaffle: true,
|
|
175
114
|
raffleType: "open_raffle",
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
stats: { totalEntries: 184, approvedEntries: 184, flaggedEntries: 0 },
|
|
115
|
+
rafflePrize: "PSA 10 Dark Magician Girl — MFC 1st Edition (Cert: PSA-YGO-998877)",
|
|
116
|
+
raffleEntryCount: 247,
|
|
117
|
+
stats: { totalEntries: 247, approvedEntries: 247, flaggedEntries: 0 },
|
|
180
118
|
createdBy: "user-admin-letitrip",
|
|
181
|
-
createdAt: daysAgo(
|
|
119
|
+
createdAt: daysAgo(5),
|
|
182
120
|
updatedAt: daysAgo(1),
|
|
183
121
|
},
|
|
184
|
-
// ──
|
|
122
|
+
// ── 5. ACTIVE — Spin Wheel: Daily Card Pull ──────────────────────────────
|
|
185
123
|
{
|
|
186
|
-
id: "event-
|
|
187
|
-
slug: "
|
|
124
|
+
id: "event-daily-card-pull-wheel",
|
|
125
|
+
slug: "daily-card-pull-wheel",
|
|
188
126
|
type: EVENT_FIELDS.TYPE_VALUES.SPIN_WHEEL,
|
|
189
|
-
title: "Daily
|
|
190
|
-
description: "
|
|
127
|
+
title: "Daily Card Pull! Spin for a Prize",
|
|
128
|
+
description: "Spin the wheel once per day for a chance to win discount coupons and free card sleeves!",
|
|
191
129
|
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
192
130
|
startsAt: daysAgo(7),
|
|
193
|
-
endsAt: daysAhead(
|
|
194
|
-
|
|
195
|
-
tags: ["spin-wheel", "daily", "
|
|
196
|
-
hasRaffle: true,
|
|
197
|
-
raffleType: "spin_wheel",
|
|
131
|
+
endsAt: daysAhead(23),
|
|
132
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/40640057.jpg", alt: "Kuriboh" },
|
|
133
|
+
tags: ["spin-wheel", "daily", "prizes", "coupons"],
|
|
198
134
|
spinPrizes: [
|
|
199
|
-
{ id: "
|
|
200
|
-
{ id: "
|
|
201
|
-
{ id: "
|
|
202
|
-
{ id: "
|
|
203
|
-
{ id: "prize-mystery", label: "Mystery booster pack", weight: 1, isActive: true },
|
|
135
|
+
{ id: "spin-10pct", label: "10% Off Coupon", couponId: "coupon-yugi10", weight: 15, isActive: true },
|
|
136
|
+
{ id: "spin-5pct", label: "5% Off Coupon", weight: 25, isActive: true },
|
|
137
|
+
{ id: "spin-sleeve", label: "Free Card Sleeve Pack", weight: 10, isActive: true },
|
|
138
|
+
{ id: "spin-try-again", label: "Try Again Tomorrow!", weight: 50, isActive: true },
|
|
204
139
|
],
|
|
205
140
|
spinMaxPerUser: 1,
|
|
206
141
|
spinWindowStart: daysAgo(7),
|
|
207
|
-
spinWindowEnd: daysAhead(
|
|
208
|
-
stats: { totalEntries:
|
|
142
|
+
spinWindowEnd: daysAhead(23),
|
|
143
|
+
stats: { totalEntries: 534, approvedEntries: 534, flaggedEntries: 0 },
|
|
209
144
|
createdBy: "user-admin-letitrip",
|
|
210
145
|
createdAt: daysAgo(8),
|
|
211
146
|
updatedAt: daysAgo(1),
|
|
212
147
|
},
|
|
213
|
-
// ──
|
|
148
|
+
// ── 6. ACTIVE — Feedback: GX Era ─────────────────────────────────────────
|
|
214
149
|
{
|
|
215
|
-
id: "event-
|
|
216
|
-
slug: "
|
|
217
|
-
type: EVENT_FIELDS.TYPE_VALUES.
|
|
218
|
-
title: "
|
|
219
|
-
description: "
|
|
220
|
-
status: EVENT_FIELDS.STATUS_VALUES.
|
|
221
|
-
startsAt: daysAgo(
|
|
222
|
-
endsAt:
|
|
223
|
-
|
|
224
|
-
tags: ["
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
raffleGithubFunctionUrl: "https://github.com/letitrip-in/proof-of-fairness/blob/main/raffles/event-top-scorer-raffle-april-2026.json",
|
|
234
|
-
stats: { totalEntries: 47, approvedEntries: 47, flaggedEntries: 0 },
|
|
150
|
+
id: "event-gx-era-feedback",
|
|
151
|
+
slug: "gx-era-feedback",
|
|
152
|
+
type: EVENT_FIELDS.TYPE_VALUES.FEEDBACK,
|
|
153
|
+
title: "Tell Us About GX Era Cards on LetItRip",
|
|
154
|
+
description: "Rate your experience buying GX era cards on LetItRip. Your feedback helps us improve the marketplace.",
|
|
155
|
+
status: EVENT_FIELDS.STATUS_VALUES.ACTIVE,
|
|
156
|
+
startsAt: daysAgo(10),
|
|
157
|
+
endsAt: daysAhead(20),
|
|
158
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/89943723.jpg", alt: "Elemental HERO Neos" },
|
|
159
|
+
tags: ["feedback", "gx-era", "community"],
|
|
160
|
+
feedbackConfig: {
|
|
161
|
+
formFields: [
|
|
162
|
+
{ id: "rating", label: "How would you rate the GX era selection?", type: "rating", required: true },
|
|
163
|
+
{ id: "comment", label: "Any additional feedback?", type: "textarea", required: false },
|
|
164
|
+
],
|
|
165
|
+
anonymous: false,
|
|
166
|
+
},
|
|
167
|
+
stats: { totalEntries: 45, approvedEntries: 45, flaggedEntries: 0 },
|
|
235
168
|
createdBy: "user-admin-letitrip",
|
|
236
|
-
createdAt: daysAgo(
|
|
237
|
-
updatedAt: daysAgo(
|
|
169
|
+
createdAt: daysAgo(12),
|
|
170
|
+
updatedAt: daysAgo(2),
|
|
238
171
|
},
|
|
239
|
-
// ──
|
|
172
|
+
// ── 7. UPCOMING — Offer: Buy 3 Get 1 Free Singles ────────────────────────
|
|
240
173
|
{
|
|
241
|
-
id: "event-
|
|
242
|
-
slug: "
|
|
243
|
-
type: EVENT_FIELDS.TYPE_VALUES.
|
|
244
|
-
title: "
|
|
245
|
-
description: "
|
|
246
|
-
status: EVENT_FIELDS.STATUS_VALUES.
|
|
247
|
-
startsAt:
|
|
248
|
-
endsAt:
|
|
249
|
-
|
|
250
|
-
tags: ["
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
174
|
+
id: "event-buy-3-get-1-singles",
|
|
175
|
+
slug: "buy-3-get-1-singles",
|
|
176
|
+
type: EVENT_FIELDS.TYPE_VALUES.OFFER,
|
|
177
|
+
title: "Buy 3 Singles, Get 1 Free",
|
|
178
|
+
description: "Coming soon! Buy any 3 single cards and get the cheapest one free. Applies to all stores on LetItRip.",
|
|
179
|
+
status: EVENT_FIELDS.STATUS_VALUES.DRAFT,
|
|
180
|
+
startsAt: daysAhead(5),
|
|
181
|
+
endsAt: daysAhead(20),
|
|
182
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/83764718.jpg", alt: "Monster Reborn" },
|
|
183
|
+
tags: ["offer", "buy-3-get-1", "singles", "upcoming"],
|
|
184
|
+
offerConfig: {
|
|
185
|
+
couponId: "coupon-buy3get1",
|
|
186
|
+
displayCode: "BUY3GET1",
|
|
187
|
+
bannerText: "Buy any 3 single cards and get the cheapest one free!",
|
|
255
188
|
},
|
|
256
|
-
stats: { totalEntries:
|
|
257
|
-
createdBy: "user-
|
|
258
|
-
createdAt: daysAgo(
|
|
259
|
-
updatedAt: daysAgo(
|
|
260
|
-
},
|
|
261
|
-
];
|
|
262
|
-
export const eventEntriesSeedData = [
|
|
263
|
-
// ── Sale event entries ────────────────────────────────────────────────────
|
|
264
|
-
{
|
|
265
|
-
id: "entry-swap-meet-rahul",
|
|
266
|
-
eventId: "event-hot-wheels-swap-meet-may-2026",
|
|
267
|
-
userId: "user-rahul-sharma",
|
|
268
|
-
userDisplayName: "Rahul Sharma",
|
|
269
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
270
|
-
submittedAt: daysAgo(1),
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
id: "entry-swap-meet-priya",
|
|
274
|
-
eventId: "event-hot-wheels-swap-meet-may-2026",
|
|
275
|
-
userId: "user-priya-patel",
|
|
276
|
-
userDisplayName: "Priya Patel",
|
|
277
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
278
|
-
submittedAt: daysAgo(1),
|
|
279
|
-
},
|
|
280
|
-
// ── Active poll entries (Pokémon TCG tournament format vote) ─────────────
|
|
281
|
-
{
|
|
282
|
-
id: "entry-pokemon-poll-ravi",
|
|
283
|
-
eventId: "event-pokemon-card-tournament-june-2026",
|
|
284
|
-
userId: "user-ravi-kumar",
|
|
285
|
-
userDisplayName: "Ravi Kumar",
|
|
286
|
-
pollVotes: ["opt-standard"],
|
|
287
|
-
pollComment: "Standard meta is the most balanced and skill-testing format for a regional.",
|
|
288
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
289
|
-
submittedAt: daysAgo(2),
|
|
290
|
-
},
|
|
291
|
-
{
|
|
292
|
-
id: "entry-pokemon-poll-priya",
|
|
293
|
-
eventId: "event-pokemon-card-tournament-june-2026",
|
|
294
|
-
userId: "user-priya-patel",
|
|
295
|
-
userDisplayName: "Priya Patel",
|
|
296
|
-
pollVotes: ["opt-sealed"],
|
|
297
|
-
pollComment: "Sealed is the most fun for players without expensive cards!",
|
|
298
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
299
|
-
submittedAt: daysAgo(2),
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
id: "entry-pokemon-poll-arjun",
|
|
303
|
-
eventId: "event-pokemon-card-tournament-june-2026",
|
|
304
|
-
userId: "user-arjun-nair",
|
|
305
|
-
userDisplayName: "Arjun Nair",
|
|
306
|
-
pollVotes: ["opt-expanded"],
|
|
307
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
308
|
-
submittedAt: daysAgo(1),
|
|
309
|
-
},
|
|
310
|
-
// ── Ended poll entries (Yu-Gi-Oh! regional venue vote) ───────────────────
|
|
311
|
-
{
|
|
312
|
-
id: "entry-yugioh-poll-nisha",
|
|
313
|
-
eventId: "event-yugioh-regional-qualifier-march-2026",
|
|
314
|
-
userId: "user-nisha-reddy",
|
|
315
|
-
userDisplayName: "Nisha Reddy",
|
|
316
|
-
pollVotes: ["opt-hyd"],
|
|
317
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
318
|
-
submittedAt: daysAgo(38),
|
|
319
|
-
},
|
|
320
|
-
{
|
|
321
|
-
id: "entry-yugioh-poll-rohit",
|
|
322
|
-
eventId: "event-yugioh-regional-qualifier-march-2026",
|
|
323
|
-
userId: "user-rohit-joshi",
|
|
324
|
-
userDisplayName: "Rohit Joshi",
|
|
325
|
-
pollVotes: ["opt-blr"],
|
|
326
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
327
|
-
submittedAt: daysAgo(37),
|
|
328
|
-
},
|
|
329
|
-
{
|
|
330
|
-
id: "entry-yugioh-poll-rahul",
|
|
331
|
-
eventId: "event-yugioh-regional-qualifier-march-2026",
|
|
332
|
-
userId: "user-rahul-sharma",
|
|
333
|
-
userDisplayName: "Rahul Sharma",
|
|
334
|
-
pollVotes: ["opt-hyd"],
|
|
335
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
336
|
-
submittedAt: daysAgo(36),
|
|
337
|
-
},
|
|
338
|
-
// ── P28 expansion (S16 2026-05-12) — 11 more entries ─────────────────────
|
|
339
|
-
// Additional swap-meet attendees
|
|
340
|
-
{
|
|
341
|
-
id: "entry-swap-meet-meera",
|
|
342
|
-
eventId: "event-hot-wheels-swap-meet-may-2026",
|
|
343
|
-
userId: "user-meera-nair",
|
|
344
|
-
userDisplayName: "Meera Nair",
|
|
345
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
346
|
-
submittedAt: daysAgo(2),
|
|
347
|
-
},
|
|
348
|
-
{
|
|
349
|
-
id: "entry-swap-meet-arjun",
|
|
350
|
-
eventId: "event-hot-wheels-swap-meet-may-2026",
|
|
351
|
-
userId: "user-arjun-singh",
|
|
352
|
-
userDisplayName: "Arjun Singh",
|
|
353
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
354
|
-
submittedAt: daysAgo(2),
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
id: "entry-swap-meet-kavya",
|
|
358
|
-
eventId: "event-hot-wheels-swap-meet-may-2026",
|
|
359
|
-
userId: "user-kavya-iyer",
|
|
360
|
-
userDisplayName: "Kavya Iyer",
|
|
361
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.PENDING,
|
|
362
|
-
submittedAt: daysAgo(1),
|
|
363
|
-
},
|
|
364
|
-
// Additional Pokémon poll voters
|
|
365
|
-
{
|
|
366
|
-
id: "entry-pokemon-poll-meera",
|
|
367
|
-
eventId: "event-pokemon-card-tournament-june-2026",
|
|
368
|
-
userId: "user-meera-nair",
|
|
369
|
-
userDisplayName: "Meera Nair",
|
|
370
|
-
pollVotes: ["opt-standard"],
|
|
371
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
372
|
-
submittedAt: daysAgo(3),
|
|
189
|
+
stats: { totalEntries: 0, approvedEntries: 0, flaggedEntries: 0 },
|
|
190
|
+
createdBy: "user-admin-letitrip",
|
|
191
|
+
createdAt: daysAgo(2),
|
|
192
|
+
updatedAt: daysAgo(1),
|
|
373
193
|
},
|
|
194
|
+
// ── 8. ENDED — Raffle: Won Complete LOB 1st Ed Set (drawn) ───────────────
|
|
374
195
|
{
|
|
375
|
-
id: "
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
196
|
+
id: "event-won-complete-lob-raffle",
|
|
197
|
+
slug: "won-complete-lob-raffle",
|
|
198
|
+
type: EVENT_FIELDS.TYPE_VALUES.RAFFLE,
|
|
199
|
+
title: "Win Complete LOB 1st Edition Set",
|
|
200
|
+
description: "The grand raffle has concluded! One lucky duelist won a complete Legend of Blue Eyes 1st Edition set.",
|
|
201
|
+
status: EVENT_FIELDS.STATUS_VALUES.ENDED,
|
|
202
|
+
startsAt: daysAgo(30),
|
|
203
|
+
endsAt: daysAgo(5),
|
|
204
|
+
coverImage: { type: "image", url: "https://images.ygoprodeck.com/images/cards/cropped/89631139.jpg", alt: "Blue-Eyes White Dragon" },
|
|
205
|
+
tags: ["raffle", "lob", "1st-edition", "ended", "winner"],
|
|
206
|
+
hasRaffle: true,
|
|
207
|
+
raffleType: "open_raffle",
|
|
208
|
+
rafflePrize: "Complete LOB 1st Edition Set — 126 cards, all NM or better",
|
|
209
|
+
raffleWinnerUserId: "user-yugi-muto",
|
|
210
|
+
raffleWinnerDisplayName: "Yugi Muto",
|
|
211
|
+
raffleWinnerEntryId: "entry-lob-raffle-yugi-001",
|
|
212
|
+
raffleTriggeredAt: daysAgo(5),
|
|
213
|
+
raffleEntryCount: 1892,
|
|
214
|
+
stats: { totalEntries: 1892, approvedEntries: 1892, flaggedEntries: 0 },
|
|
215
|
+
createdBy: "user-admin-letitrip",
|
|
216
|
+
createdAt: daysAgo(35),
|
|
217
|
+
updatedAt: daysAgo(5),
|
|
383
218
|
},
|
|
219
|
+
];
|
|
220
|
+
// ── Event Entries ────────────────────────────────────────────────────────────
|
|
221
|
+
export const eventEntriesSeedData = [
|
|
222
|
+
// Yugi entered the poll
|
|
384
223
|
{
|
|
385
|
-
id: "entry-
|
|
386
|
-
eventId: "event-
|
|
387
|
-
userId: "user-
|
|
388
|
-
userDisplayName: "
|
|
389
|
-
|
|
224
|
+
id: "entry-poll-yugi-001",
|
|
225
|
+
eventId: "event-favourite-duelist-poll",
|
|
226
|
+
userId: "user-yugi-muto",
|
|
227
|
+
userDisplayName: "Yugi Muto",
|
|
228
|
+
userEmail: "yugi@duelkingdom.in",
|
|
229
|
+
pollVotes: ["yugi"],
|
|
390
230
|
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
391
231
|
submittedAt: daysAgo(4),
|
|
232
|
+
createdAt: daysAgo(4),
|
|
392
233
|
},
|
|
393
|
-
//
|
|
234
|
+
// Kaiba entered the poll
|
|
394
235
|
{
|
|
395
|
-
id: "entry-
|
|
396
|
-
eventId: "event-
|
|
397
|
-
userId: "user-
|
|
398
|
-
userDisplayName: "
|
|
399
|
-
|
|
400
|
-
|
|
236
|
+
id: "entry-poll-kaiba-001",
|
|
237
|
+
eventId: "event-favourite-duelist-poll",
|
|
238
|
+
userId: "user-seto-kaiba",
|
|
239
|
+
userDisplayName: "Seto Kaiba",
|
|
240
|
+
userEmail: "kaiba@kaibalandmark.in",
|
|
241
|
+
pollVotes: ["kaiba"],
|
|
401
242
|
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
402
|
-
submittedAt: daysAgo(
|
|
243
|
+
submittedAt: daysAgo(3),
|
|
244
|
+
createdAt: daysAgo(3),
|
|
403
245
|
},
|
|
246
|
+
// Yugi entered the raffle (and won the LOB raffle)
|
|
404
247
|
{
|
|
405
|
-
id: "entry-
|
|
406
|
-
eventId: "event-
|
|
407
|
-
userId: "user-
|
|
408
|
-
userDisplayName: "
|
|
409
|
-
|
|
248
|
+
id: "entry-lob-raffle-yugi-001",
|
|
249
|
+
eventId: "event-won-complete-lob-raffle",
|
|
250
|
+
userId: "user-yugi-muto",
|
|
251
|
+
userDisplayName: "Yugi Muto",
|
|
252
|
+
userEmail: "yugi@duelkingdom.in",
|
|
253
|
+
raffleEligible: true,
|
|
410
254
|
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
411
|
-
submittedAt: daysAgo(
|
|
255
|
+
submittedAt: daysAgo(25),
|
|
256
|
+
createdAt: daysAgo(25),
|
|
412
257
|
},
|
|
258
|
+
// Yugi entered the active raffle
|
|
413
259
|
{
|
|
414
|
-
id: "entry-
|
|
415
|
-
eventId: "event-
|
|
416
|
-
userId: "user-
|
|
417
|
-
userDisplayName: "
|
|
418
|
-
|
|
260
|
+
id: "entry-dmg-raffle-yugi-001",
|
|
261
|
+
eventId: "event-win-psa10-dark-magician-girl",
|
|
262
|
+
userId: "user-yugi-muto",
|
|
263
|
+
userDisplayName: "Yugi Muto",
|
|
264
|
+
userEmail: "yugi@duelkingdom.in",
|
|
265
|
+
raffleEligible: true,
|
|
419
266
|
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
420
|
-
submittedAt: daysAgo(
|
|
421
|
-
|
|
422
|
-
{
|
|
423
|
-
id: "entry-yugioh-poll-divya",
|
|
424
|
-
eventId: "event-yugioh-regional-qualifier-march-2026",
|
|
425
|
-
userId: "user-divya-menon",
|
|
426
|
-
userDisplayName: "Divya Menon",
|
|
427
|
-
pollVotes: ["opt-blr"],
|
|
428
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.FLAGGED,
|
|
429
|
-
submittedAt: daysAgo(33),
|
|
430
|
-
},
|
|
431
|
-
{
|
|
432
|
-
id: "entry-pokemon-poll-tanvi",
|
|
433
|
-
eventId: "event-pokemon-card-tournament-june-2026",
|
|
434
|
-
userId: "user-tanvi-desai",
|
|
435
|
-
userDisplayName: "Tanvi Desai",
|
|
436
|
-
pollVotes: ["opt-standard"],
|
|
437
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.PENDING,
|
|
438
|
-
submittedAt: daysAgo(1),
|
|
267
|
+
submittedAt: daysAgo(2),
|
|
268
|
+
createdAt: daysAgo(2),
|
|
439
269
|
},
|
|
440
|
-
//
|
|
270
|
+
// Kaiba spun the wheel
|
|
441
271
|
{
|
|
442
|
-
id: "entry-
|
|
443
|
-
eventId: "event-
|
|
444
|
-
userId: "user-
|
|
445
|
-
userDisplayName: "
|
|
272
|
+
id: "entry-spin-kaiba-001",
|
|
273
|
+
eventId: "event-daily-card-pull-wheel",
|
|
274
|
+
userId: "user-seto-kaiba",
|
|
275
|
+
userDisplayName: "Seto Kaiba",
|
|
276
|
+
userEmail: "kaiba@kaibalandmark.in",
|
|
277
|
+
spinUsed: true,
|
|
278
|
+
spinPrizeId: "spin-10pct",
|
|
279
|
+
spinPrizeCouponCode: "YUGI10",
|
|
280
|
+
spinWonAt: daysAgo(1),
|
|
446
281
|
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
447
|
-
raffleEligible: true,
|
|
448
282
|
submittedAt: daysAgo(1),
|
|
449
|
-
|
|
450
|
-
// ── Admin spin-wheel entry (won ₹100 off coupon) ─────────────────────────
|
|
451
|
-
{
|
|
452
|
-
id: "entry-spin-wheel-admin",
|
|
453
|
-
eventId: "event-spin-the-wheel-2026",
|
|
454
|
-
userId: "user-admin-letitrip",
|
|
455
|
-
userDisplayName: "LetItRip Admin",
|
|
456
|
-
reviewStatus: EVENT_ENTRY_FIELDS.REVIEW_STATUS_VALUES.APPROVED,
|
|
457
|
-
spinUsed: true,
|
|
458
|
-
spinPrizeId: "prize-100-off",
|
|
459
|
-
spinPrizeCouponCode: "SPIN100OFF-ADM",
|
|
460
|
-
spinWonAt: daysAgo(2),
|
|
461
|
-
submittedAt: daysAgo(2),
|
|
283
|
+
createdAt: daysAgo(1),
|
|
462
284
|
},
|
|
463
285
|
];
|