@bash-app/bash-common 30.44.0 → 30.46.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/package.json +1 -1
- package/prisma/schema.prisma +1060 -47
- package/src/extendedSchemas.ts +3 -0
- package/src/utils/luxonUtils.ts +26 -8
- package/src/utils/service/serviceRateUtils.ts +34 -10
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -274,6 +274,7 @@ model BashEvent {
|
|
|
274
274
|
isApproved Boolean? @default(false)
|
|
275
275
|
description String?
|
|
276
276
|
eventType String @default("Other")
|
|
277
|
+
timezone String?
|
|
277
278
|
startDateTime DateTime? @default(now())
|
|
278
279
|
endDateTime DateTime? @default(now())
|
|
279
280
|
waiverUrl String?
|
|
@@ -329,6 +330,7 @@ model BashEvent {
|
|
|
329
330
|
averageRating Float? @default(0)
|
|
330
331
|
serviceBookings ServiceBooking[] // Add this field to create the reverse relation
|
|
331
332
|
userReport UserReport[]
|
|
333
|
+
favoritedBy UserFavorite[]
|
|
332
334
|
}
|
|
333
335
|
|
|
334
336
|
model Coordinates {
|
|
@@ -1005,6 +1007,7 @@ model User {
|
|
|
1005
1007
|
googleCalendarAccess String?
|
|
1006
1008
|
givenName String?
|
|
1007
1009
|
familyName String?
|
|
1010
|
+
nameChangeCount Int @default(0)
|
|
1008
1011
|
hash String?
|
|
1009
1012
|
emailVerified DateTime?
|
|
1010
1013
|
image String?
|
|
@@ -1107,10 +1110,11 @@ model User {
|
|
|
1107
1110
|
following UserFollowing[] @relation("Follower")
|
|
1108
1111
|
|
|
1109
1112
|
// For lightweight sign-up
|
|
1110
|
-
isLightweightAccount Boolean
|
|
1111
|
-
notifyForTrendingBashes Boolean
|
|
1112
|
-
trendingBashThreshold Int
|
|
1113
|
-
organizerUser
|
|
1113
|
+
isLightweightAccount Boolean @default(false)
|
|
1114
|
+
notifyForTrendingBashes Boolean @default(false)
|
|
1115
|
+
trendingBashThreshold Int @default(10) // Min attendees to trigger notification
|
|
1116
|
+
organizerUser UserFollowing[] @relation("FollowingOrganizers")
|
|
1117
|
+
favorites UserFavorite[]
|
|
1114
1118
|
}
|
|
1115
1119
|
|
|
1116
1120
|
model UserPreferences {
|
|
@@ -1184,17 +1188,17 @@ model UserPreferences {
|
|
|
1184
1188
|
}
|
|
1185
1189
|
|
|
1186
1190
|
model UserFollowing {
|
|
1187
|
-
id
|
|
1188
|
-
userId
|
|
1189
|
-
followingId
|
|
1190
|
-
isFollowing
|
|
1191
|
-
followedAt
|
|
1192
|
-
unfollowedAt
|
|
1193
|
-
isOrganizer
|
|
1194
|
-
lastNotified
|
|
1195
|
-
|
|
1196
|
-
user
|
|
1197
|
-
following
|
|
1191
|
+
id String @id @default(cuid())
|
|
1192
|
+
userId String
|
|
1193
|
+
followingId String
|
|
1194
|
+
isFollowing Boolean @default(true)
|
|
1195
|
+
followedAt DateTime?
|
|
1196
|
+
unfollowedAt DateTime?
|
|
1197
|
+
isOrganizer Boolean @default(false) // Flag if following as organizer
|
|
1198
|
+
lastNotified DateTime? // For organizer notifications
|
|
1199
|
+
|
|
1200
|
+
user User @relation("Follower", fields: [userId], references: [id], onDelete: Cascade, map: "UserFollowing_follower_fkey")
|
|
1201
|
+
following User @relation("Following", fields: [followingId], references: [id], onDelete: Cascade)
|
|
1198
1202
|
organizerUser User? @relation("FollowingOrganizers", fields: [userId], references: [id], onDelete: Cascade, map: "UserFollowing_organizer_fkey")
|
|
1199
1203
|
|
|
1200
1204
|
@@unique([userId, followingId])
|
|
@@ -1266,7 +1270,6 @@ model AssociatedBash {
|
|
|
1266
1270
|
ownerUserId String?
|
|
1267
1271
|
owner User? @relation(fields: [ownerUserId], references: [id], onDelete: Cascade)
|
|
1268
1272
|
isOrganizer Boolean?
|
|
1269
|
-
isFavorite Boolean?
|
|
1270
1273
|
service Service[]
|
|
1271
1274
|
|
|
1272
1275
|
@@unique([ownerEmail, bashEventId])
|
|
@@ -1471,6 +1474,7 @@ model Service {
|
|
|
1471
1474
|
userPromoCodeRedemption UserPromoCodeRedemption[]
|
|
1472
1475
|
bookings ServiceBooking[]
|
|
1473
1476
|
notification Notification[]
|
|
1477
|
+
favoritedBy UserFavorite[]
|
|
1474
1478
|
}
|
|
1475
1479
|
|
|
1476
1480
|
model StripeAccount {
|
|
@@ -1530,21 +1534,41 @@ model VolunteerService {
|
|
|
1530
1534
|
}
|
|
1531
1535
|
|
|
1532
1536
|
model EventService {
|
|
1533
|
-
id String
|
|
1537
|
+
id String @id @default(cuid())
|
|
1538
|
+
|
|
1539
|
+
// General classification
|
|
1540
|
+
eventServiceType EventServiceType // e.g. DecorAndDesign
|
|
1541
|
+
eventServiceSubType String? // e.g. "BalloonArt"
|
|
1542
|
+
formatOptions ServiceFormatOption[] // Related formats for this subtype
|
|
1543
|
+
|
|
1544
|
+
// Custom input support
|
|
1545
|
+
isCustom Boolean @default(false)
|
|
1546
|
+
customNote String?
|
|
1547
|
+
|
|
1548
|
+
// Optional linked models
|
|
1534
1549
|
serviceRangeId String?
|
|
1535
|
-
serviceRange ServiceRange?
|
|
1536
|
-
|
|
1537
|
-
|
|
1550
|
+
serviceRange ServiceRange? @relation(fields: [serviceRangeId], references: [id])
|
|
1551
|
+
crowdSizeId String? @unique
|
|
1552
|
+
crowdSize AmountOfGuests? @relation(fields: [crowdSizeId], references: [id], onDelete: Cascade)
|
|
1553
|
+
service Service?
|
|
1554
|
+
serviceId String?
|
|
1555
|
+
|
|
1556
|
+
// Other descriptors
|
|
1538
1557
|
yearsOfExperience YearsOfExperience
|
|
1539
|
-
crowdSizeId String? @unique
|
|
1540
|
-
crowdSize AmountOfGuests? @relation(fields: [crowdSizeId], references: [id], onDelete: Cascade)
|
|
1541
1558
|
goodsOrServices String[]
|
|
1542
1559
|
menuItems String?
|
|
1543
1560
|
venueTypes String[]
|
|
1544
|
-
secondaryVenueTypes String[]
|
|
1545
|
-
|
|
1561
|
+
secondaryVenueTypes String[] @default([])
|
|
1562
|
+
}
|
|
1563
|
+
|
|
1564
|
+
model ServiceFormatOption {
|
|
1565
|
+
id String @id @default(cuid())
|
|
1566
|
+
eventServiceId String
|
|
1567
|
+
eventService EventService @relation(fields: [eventServiceId], references: [id], onDelete: Cascade)
|
|
1568
|
+
format String // e.g. "BalloonGarlands", "BuffetStyle", "WeddingFlorals"
|
|
1546
1569
|
}
|
|
1547
1570
|
|
|
1571
|
+
|
|
1548
1572
|
model EntertainmentService {
|
|
1549
1573
|
id String @id @default(cuid())
|
|
1550
1574
|
serviceRangeId String?
|
|
@@ -1562,17 +1586,23 @@ model EntertainmentService {
|
|
|
1562
1586
|
}
|
|
1563
1587
|
|
|
1564
1588
|
model Vendor {
|
|
1565
|
-
id
|
|
1566
|
-
serviceRangeId
|
|
1567
|
-
serviceRange
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1589
|
+
id String @id @default(cuid())
|
|
1590
|
+
serviceRangeId String?
|
|
1591
|
+
serviceRange ServiceRange? @relation(fields: [serviceRangeId], references: [id])
|
|
1592
|
+
vendorServiceTypes VendorServiceType[]
|
|
1593
|
+
vendorServiceSubType String?
|
|
1594
|
+
yearsOfExperience YearsOfExperience
|
|
1595
|
+
crowdSizeId String? @unique
|
|
1596
|
+
crowdSize AmountOfGuests? @relation(fields: [crowdSizeId], references: [id], onDelete: Cascade)
|
|
1597
|
+
goodsOrServices String[]
|
|
1598
|
+
menuItems String?
|
|
1599
|
+
venueTypes String[]
|
|
1600
|
+
secondaryVenueTypes String[] @default([])
|
|
1601
|
+
vendorType String?
|
|
1602
|
+
subType String?
|
|
1603
|
+
otherSubType String?
|
|
1604
|
+
detailsText String?
|
|
1605
|
+
service Service?
|
|
1576
1606
|
}
|
|
1577
1607
|
|
|
1578
1608
|
model Exhibitor {
|
|
@@ -1669,27 +1699,945 @@ model Organization {
|
|
|
1669
1699
|
}
|
|
1670
1700
|
|
|
1671
1701
|
enum EventServiceType {
|
|
1702
|
+
Financing
|
|
1703
|
+
EventPlanningAndManagement
|
|
1704
|
+
FoodAndBeverage
|
|
1705
|
+
Cleaning
|
|
1706
|
+
DecorAndDesign
|
|
1707
|
+
RentalEquipment
|
|
1708
|
+
MediaProductionAndCreative
|
|
1709
|
+
AudioVisualSupport
|
|
1710
|
+
HostingSupport
|
|
1711
|
+
PromotionAndMarketing
|
|
1712
|
+
Staffing
|
|
1713
|
+
Transportation
|
|
1714
|
+
Other
|
|
1715
|
+
}
|
|
1716
|
+
|
|
1717
|
+
enum FinancingSubType {
|
|
1672
1718
|
Investor
|
|
1673
1719
|
LongTermLoan
|
|
1674
1720
|
ShortTermLoan
|
|
1675
|
-
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
enum EventPlanningAndManagementSubType {
|
|
1724
|
+
EventPlanner
|
|
1725
|
+
EventManager
|
|
1726
|
+
VirtualAssistant
|
|
1727
|
+
Consultants
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
enum FoodAndBeverageSubType {
|
|
1676
1731
|
Caterer
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1732
|
+
FoodTruck
|
|
1733
|
+
FoodCartStand
|
|
1734
|
+
PrivateChefs
|
|
1735
|
+
Bartenders
|
|
1736
|
+
DessertBar
|
|
1737
|
+
BeverageCart
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
enum CleaningSubType {
|
|
1741
|
+
LightCleaning
|
|
1742
|
+
DeepCleaning
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1745
|
+
enum DecorAndDesignSubType {
|
|
1746
|
+
Decorators
|
|
1747
|
+
InteriorDesigners
|
|
1748
|
+
Floral
|
|
1749
|
+
BalloonArt
|
|
1750
|
+
Balloons
|
|
1751
|
+
TableStyling
|
|
1752
|
+
Centerpieces
|
|
1753
|
+
FurnitureStyling
|
|
1754
|
+
Lighting
|
|
1755
|
+
CustomSignage
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
enum RentalEquipmentSubType {
|
|
1759
|
+
PASystem
|
|
1760
|
+
DJLighting
|
|
1761
|
+
Chairs
|
|
1762
|
+
Tables
|
|
1763
|
+
Tents
|
|
1764
|
+
Linens
|
|
1765
|
+
Staging
|
|
1766
|
+
Generators
|
|
1767
|
+
DanceFloor
|
|
1768
|
+
PhotoBooth
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
enum MediaProductionAndCreativeSubType {
|
|
1772
|
+
Photographer
|
|
1773
|
+
Videographer
|
|
1774
|
+
MediaEditor
|
|
1684
1775
|
GraphicDesigner
|
|
1776
|
+
GoProWearer
|
|
1777
|
+
DroneShots
|
|
1778
|
+
AISpecialist
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
enum AudioVisualSupportSubType {
|
|
1782
|
+
AVTechnician
|
|
1783
|
+
SoundEngineer
|
|
1784
|
+
LightingTech
|
|
1785
|
+
StageTech
|
|
1786
|
+
ProjectorSetup
|
|
1787
|
+
}
|
|
1788
|
+
|
|
1789
|
+
enum HostingSupportSubType {
|
|
1790
|
+
Emcee
|
|
1791
|
+
Greeter
|
|
1792
|
+
}
|
|
1793
|
+
|
|
1794
|
+
enum PromotionAndMarketingSubType {
|
|
1685
1795
|
Influencer
|
|
1686
1796
|
Promoter
|
|
1687
1797
|
CelebrityAppearance
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
enum StaffingSubType {
|
|
1688
1801
|
CrewHand
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1802
|
+
ParkingManagement
|
|
1803
|
+
GuestRegistration
|
|
1804
|
+
Security
|
|
1805
|
+
}
|
|
1806
|
+
|
|
1807
|
+
enum TransportationSubType {
|
|
1808
|
+
Limo
|
|
1809
|
+
PartyBus
|
|
1810
|
+
GuestShuttle
|
|
1811
|
+
Valet
|
|
1812
|
+
ValetService
|
|
1813
|
+
}
|
|
1814
|
+
|
|
1815
|
+
enum OtherSubType {
|
|
1816
|
+
Bookkeepers
|
|
1817
|
+
CPAs
|
|
1818
|
+
Lawyers
|
|
1819
|
+
ThankYouCards
|
|
1820
|
+
Reporting
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
//Sub types for the event service sub-types
|
|
1824
|
+
enum InvestorFormat {
|
|
1825
|
+
AngelInvestor
|
|
1826
|
+
VentureCapital
|
|
1827
|
+
PrivateEquity
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
enum LongTermLoanFormat {
|
|
1831
|
+
BankLoan
|
|
1832
|
+
SBA
|
|
1833
|
+
PersonalInvestor
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
enum ShortTermLoanFormat {
|
|
1837
|
+
BridgeLoan
|
|
1838
|
+
MerchantCashAdvance
|
|
1839
|
+
InvoiceFactoring
|
|
1840
|
+
}
|
|
1841
|
+
|
|
1842
|
+
enum EventPlannerFormat {
|
|
1843
|
+
WeddingPlanning
|
|
1844
|
+
CorporateEventPlanning
|
|
1845
|
+
SocialEventPlanning
|
|
1846
|
+
FestivalPlanning
|
|
1847
|
+
ConferencePlanning
|
|
1848
|
+
FullServicePlanning
|
|
1849
|
+
PartialPlanning
|
|
1850
|
+
DayOfCoordination
|
|
1851
|
+
MonthOfCoordination
|
|
1852
|
+
RemotePlanning
|
|
1853
|
+
OnSitePlanning
|
|
1854
|
+
DestinationPlanning
|
|
1855
|
+
LuxuryEventPlanning
|
|
1856
|
+
BudgetEventPlanning
|
|
1857
|
+
ThemeEventPlanning
|
|
1858
|
+
}
|
|
1859
|
+
|
|
1860
|
+
enum EventManagerFormat {
|
|
1861
|
+
WeddingManager
|
|
1862
|
+
CorporateEventManager
|
|
1863
|
+
FestivalManager
|
|
1864
|
+
ConferenceManager
|
|
1865
|
+
SocialEventManager
|
|
1866
|
+
OnSiteManager
|
|
1867
|
+
ProductionManager
|
|
1868
|
+
LogisticsManager
|
|
1869
|
+
VIPExperienceManager
|
|
1870
|
+
TechnicalManager
|
|
1871
|
+
VenueManager
|
|
1872
|
+
GuestServicesManager
|
|
1873
|
+
BrandExperienceManager
|
|
1874
|
+
EmergencyResponseManager
|
|
1875
|
+
MultiVenueManager
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
enum VirtualAssistantFormat {
|
|
1879
|
+
EventScheduling
|
|
1880
|
+
VendorCoordination
|
|
1881
|
+
GuestListManagement
|
|
1882
|
+
RSVPHandling
|
|
1883
|
+
BudgetTracking
|
|
1884
|
+
TimelineManagement
|
|
1885
|
+
VendorPaymentProcessing
|
|
1886
|
+
ContractManagement
|
|
1887
|
+
TravelArrangements
|
|
1888
|
+
GuestCommunication
|
|
1889
|
+
SocialMediaManagement
|
|
1890
|
+
EventDocumentation
|
|
1891
|
+
InventoryTracking
|
|
1892
|
+
EmergencyContactManagement
|
|
1893
|
+
PostEventFollowUp
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
enum ConsultantFormat {
|
|
1897
|
+
EventStrategy
|
|
1898
|
+
BudgetOptimization
|
|
1899
|
+
VendorNegotiation
|
|
1900
|
+
RiskManagement
|
|
1901
|
+
SustainabilityPlanning
|
|
1902
|
+
TechnologyIntegration
|
|
1903
|
+
BrandAlignment
|
|
1904
|
+
AudienceEngagement
|
|
1905
|
+
RevenueOptimization
|
|
1906
|
+
SponsorshipStrategy
|
|
1907
|
+
MarketingStrategy
|
|
1908
|
+
SocialMediaStrategy
|
|
1909
|
+
CrisisManagement
|
|
1910
|
+
ComplianceConsulting
|
|
1911
|
+
AccessibilityPlanning
|
|
1912
|
+
}
|
|
1913
|
+
|
|
1914
|
+
enum CateringFormat {
|
|
1915
|
+
Buffet
|
|
1916
|
+
Plated
|
|
1917
|
+
FamilyStyle
|
|
1918
|
+
PassedAppetizers
|
|
1919
|
+
FoodStations
|
|
1920
|
+
Tapas
|
|
1921
|
+
TastingMenu
|
|
1922
|
+
FoodTruckSingleVendor
|
|
1923
|
+
FoodTruckMultiVendor
|
|
1924
|
+
OpenBar
|
|
1925
|
+
CashBar
|
|
1926
|
+
BeerWineOnly
|
|
1927
|
+
BeverageCart
|
|
1928
|
+
NonAlcoholicOnly
|
|
1929
|
+
}
|
|
1930
|
+
|
|
1931
|
+
enum FoodTruckFormat {
|
|
1932
|
+
WeddingCatering
|
|
1933
|
+
CorporateEventCatering
|
|
1934
|
+
FestivalVendor
|
|
1935
|
+
WeddingReception
|
|
1936
|
+
CorporateLunch
|
|
1937
|
+
FestivalFood
|
|
1938
|
+
ThemeEventCatering
|
|
1939
|
+
LateNightService
|
|
1940
|
+
DessertTruck
|
|
1941
|
+
SpecialtyCuisine
|
|
1942
|
+
MultiCuisineFleet
|
|
1943
|
+
StationarySetup
|
|
1944
|
+
MobileService
|
|
1945
|
+
PopUpService
|
|
1946
|
+
BrandedExperience
|
|
1947
|
+
}
|
|
1948
|
+
|
|
1949
|
+
enum FoodCartStandFormat {
|
|
1950
|
+
WeddingReception
|
|
1951
|
+
CorporateEvent
|
|
1952
|
+
FestivalVendor
|
|
1953
|
+
MarketStyle
|
|
1954
|
+
StationarySetup
|
|
1955
|
+
MobileService
|
|
1956
|
+
PopUpService
|
|
1957
|
+
DessertCart
|
|
1958
|
+
SpecialtyCart
|
|
1959
|
+
ThemeBasedCart
|
|
1960
|
+
BrandedCart
|
|
1961
|
+
MultiVendorMarket
|
|
1962
|
+
LateNightService
|
|
1963
|
+
SnackService
|
|
1964
|
+
InteractiveCart
|
|
1965
|
+
}
|
|
1966
|
+
|
|
1967
|
+
enum PrivateChefFormat {
|
|
1968
|
+
WeddingReception
|
|
1969
|
+
CorporateDining
|
|
1970
|
+
IntimateDinner
|
|
1971
|
+
TastingMenu
|
|
1972
|
+
CustomMenu
|
|
1973
|
+
DietarySpecialized
|
|
1974
|
+
ThemeBasedMenu
|
|
1975
|
+
InteractiveCooking
|
|
1976
|
+
WinePairing
|
|
1977
|
+
MultiCourse
|
|
1978
|
+
FamilyStyle
|
|
1979
|
+
BuffetStyle
|
|
1980
|
+
PlatedService
|
|
1981
|
+
LateNightService
|
|
1982
|
+
BrunchService
|
|
1983
|
+
}
|
|
1984
|
+
|
|
1985
|
+
enum BartenderFormat {
|
|
1986
|
+
FullBarService
|
|
1987
|
+
PremiumBarService
|
|
1988
|
+
BeerWineBar
|
|
1989
|
+
SignatureCocktails
|
|
1990
|
+
MocktailSpecialist
|
|
1991
|
+
InteractiveBar
|
|
1992
|
+
ThemeBasedBar
|
|
1993
|
+
WineService
|
|
1994
|
+
ChampagneService
|
|
1995
|
+
CraftBeerBar
|
|
1996
|
+
WhiskeyTasting
|
|
1997
|
+
MixologyClass
|
|
1998
|
+
MobileBar
|
|
1999
|
+
StationaryBar
|
|
2000
|
+
BrandedBar
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
enum DessertBarFormat {
|
|
2004
|
+
WeddingDessert
|
|
2005
|
+
CorporateDessert
|
|
2006
|
+
ThemeBasedDessert
|
|
2007
|
+
InteractiveDessert
|
|
2008
|
+
DietarySpecialized
|
|
2009
|
+
ChocolateFountain
|
|
2010
|
+
IceCreamBar
|
|
2011
|
+
CandyBar
|
|
2012
|
+
PastryDisplay
|
|
2013
|
+
CakeService
|
|
2014
|
+
DonutWall
|
|
2015
|
+
CookieBar
|
|
2016
|
+
LateNightDessert
|
|
2017
|
+
BrandedDessert
|
|
2018
|
+
MultiStationDessert
|
|
2019
|
+
}
|
|
2020
|
+
|
|
2021
|
+
enum BeverageCartFormat {
|
|
2022
|
+
FullBarCart
|
|
2023
|
+
PremiumBarCart
|
|
2024
|
+
BeerWineCart
|
|
2025
|
+
NonAlcoholicCart
|
|
2026
|
+
SignatureDrinksCart
|
|
2027
|
+
InteractiveCart
|
|
2028
|
+
ThemeBasedCart
|
|
2029
|
+
WineCart
|
|
2030
|
+
ChampagneCart
|
|
2031
|
+
CraftBeerCart
|
|
2032
|
+
CoffeeCart
|
|
2033
|
+
SmoothieCart
|
|
2034
|
+
MocktailCart
|
|
2035
|
+
MobileCart
|
|
2036
|
+
BrandedCart
|
|
2037
|
+
}
|
|
2038
|
+
|
|
2039
|
+
enum PhotographerFormat {
|
|
2040
|
+
CandidOnly
|
|
2041
|
+
PosedAndCandid
|
|
2042
|
+
FullDayCoverage
|
|
2043
|
+
HalfDayCoverage
|
|
2044
|
+
DroneIncluded
|
|
2045
|
+
GoProIncluded
|
|
2046
|
+
SocialMediaReady
|
|
2047
|
+
SameDayEdit
|
|
2048
|
+
Livestreaming
|
|
2049
|
+
RawFootageOnly
|
|
2050
|
+
}
|
|
2051
|
+
|
|
2052
|
+
enum DecoratorFormat {
|
|
2053
|
+
WeddingDecor
|
|
2054
|
+
CorporateEventDecor
|
|
2055
|
+
ThemePartyDecor
|
|
2056
|
+
HolidayDecor
|
|
2057
|
+
SeasonalDecor
|
|
2058
|
+
LuxuryEventDecor
|
|
2059
|
+
FestivalDecor
|
|
2060
|
+
BrandedEventDecor
|
|
2061
|
+
SustainableDecor
|
|
2062
|
+
MinimalistDecor
|
|
2063
|
+
BohemianDecor
|
|
2064
|
+
IndustrialDecor
|
|
2065
|
+
VintageDecor
|
|
2066
|
+
ModernDecor
|
|
2067
|
+
CulturalDecor
|
|
2068
|
+
}
|
|
2069
|
+
|
|
2070
|
+
enum InteriorDesignerFormat {
|
|
2071
|
+
VenueTransformation
|
|
2072
|
+
EventSpacePlanning
|
|
2073
|
+
TemporaryInstallations
|
|
2074
|
+
BrandedEnvironments
|
|
2075
|
+
VIPAreaDesign
|
|
2076
|
+
SpatialPlanning
|
|
2077
|
+
FlowOptimization
|
|
2078
|
+
MultiLevelDesign
|
|
2079
|
+
InteractiveSpaces
|
|
2080
|
+
SustainableDesign
|
|
2081
|
+
CulturalDesign
|
|
2082
|
+
LuxuryDesign
|
|
2083
|
+
PopUpDesign
|
|
2084
|
+
ImmersiveDesign
|
|
2085
|
+
HybridEventDesign
|
|
2086
|
+
}
|
|
2087
|
+
|
|
2088
|
+
enum FloralFormat {
|
|
2089
|
+
WeddingFlorals
|
|
2090
|
+
CenterpieceDesign
|
|
2091
|
+
ArchAndAisleDecor
|
|
2092
|
+
BoutonniereAndCorsages
|
|
2093
|
+
SeasonalArrangements
|
|
2094
|
+
HangingInstallations
|
|
2095
|
+
WallDecorations
|
|
2096
|
+
CeilingInstallations
|
|
2097
|
+
SustainableFlorals
|
|
2098
|
+
DriedArrangements
|
|
2099
|
+
PreservedFlowers
|
|
2100
|
+
ArtificialArrangements
|
|
2101
|
+
CulturalFlorals
|
|
2102
|
+
LuxuryArrangements
|
|
2103
|
+
InteractiveFlorals
|
|
2104
|
+
}
|
|
2105
|
+
|
|
2106
|
+
enum BalloonArtFormat {
|
|
2107
|
+
BalloonArchways
|
|
2108
|
+
CeilingInstallations
|
|
2109
|
+
CenterpieceDesigns
|
|
2110
|
+
BrandedDisplays
|
|
2111
|
+
ThemeDecorations
|
|
2112
|
+
BalloonGarlands
|
|
2113
|
+
FloatingInstallations
|
|
2114
|
+
InteractiveDisplays
|
|
2115
|
+
BalloonBackdrops
|
|
2116
|
+
BalloonSculptures
|
|
2117
|
+
BalloonWalls
|
|
2118
|
+
BalloonCeilings
|
|
2119
|
+
BalloonColumns
|
|
2120
|
+
BalloonFurniture
|
|
2121
|
+
BalloonPhotoBooths
|
|
2122
|
+
}
|
|
2123
|
+
|
|
2124
|
+
enum BalloonsFormat {
|
|
2125
|
+
HeliumArrangements
|
|
2126
|
+
AirFilledDisplays
|
|
2127
|
+
CustomLettering
|
|
2128
|
+
BrandedBalloons
|
|
2129
|
+
ThemeDecorations
|
|
2130
|
+
LEDBalloons
|
|
2131
|
+
ConfettiBalloons
|
|
2132
|
+
GiantBalloons
|
|
2133
|
+
BalloonBouquets
|
|
2134
|
+
BalloonClusters
|
|
2135
|
+
BalloonColumns
|
|
2136
|
+
BalloonArches
|
|
2137
|
+
BalloonGarlands
|
|
2138
|
+
BalloonBackdrops
|
|
2139
|
+
BalloonCenterpieces
|
|
2140
|
+
}
|
|
2141
|
+
|
|
2142
|
+
enum TableStylingFormat {
|
|
2143
|
+
WeddingTablescapes
|
|
2144
|
+
CorporateTableDesign
|
|
2145
|
+
ThemeTableDecor
|
|
2146
|
+
SeasonalArrangements
|
|
2147
|
+
BrandedTableSettings
|
|
2148
|
+
LuxuryTablescapes
|
|
2149
|
+
MinimalistDesign
|
|
2150
|
+
RusticDesign
|
|
2151
|
+
ModernDesign
|
|
2152
|
+
CulturalDesign
|
|
2153
|
+
InteractiveTables
|
|
2154
|
+
DessertTableDesign
|
|
2155
|
+
BuffetTableDesign
|
|
2156
|
+
CocktailTableDesign
|
|
2157
|
+
VIPTableDesign
|
|
2158
|
+
}
|
|
2159
|
+
|
|
2160
|
+
enum CenterpiecesFormat {
|
|
2161
|
+
WeddingCenterpieces
|
|
2162
|
+
CorporateCenterpieces
|
|
2163
|
+
ThemeCenterpieces
|
|
2164
|
+
SeasonalArrangements
|
|
2165
|
+
BrandedDisplays
|
|
2166
|
+
FloralCenterpieces
|
|
2167
|
+
CandleCenterpieces
|
|
2168
|
+
InteractiveCenterpieces
|
|
2169
|
+
FloatingCenterpieces
|
|
2170
|
+
HangingCenterpieces
|
|
2171
|
+
LEDCenterpieces
|
|
2172
|
+
SustainableCenterpieces
|
|
2173
|
+
CulturalCenterpieces
|
|
2174
|
+
LuxuryCenterpieces
|
|
2175
|
+
CustomCenterpieces
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
enum FurnitureStylingFormat {
|
|
2179
|
+
LoungeAreas
|
|
2180
|
+
VIPSeating
|
|
2181
|
+
PhotoBackdrops
|
|
2182
|
+
BrandedFurniture
|
|
2183
|
+
ThemeDecor
|
|
2184
|
+
ConversationAreas
|
|
2185
|
+
DiningAreas
|
|
2186
|
+
CocktailAreas
|
|
2187
|
+
RestAreas
|
|
2188
|
+
InteractiveSpaces
|
|
2189
|
+
SustainableFurniture
|
|
2190
|
+
CulturalFurniture
|
|
2191
|
+
LuxuryFurniture
|
|
2192
|
+
CustomFurniture
|
|
2193
|
+
PopUpFurniture
|
|
2194
|
+
}
|
|
2195
|
+
|
|
2196
|
+
enum LightingFormat {
|
|
2197
|
+
AmbientLighting
|
|
2198
|
+
Uplighting
|
|
2199
|
+
SpotLighting
|
|
2200
|
+
ThemeLighting
|
|
2201
|
+
BrandedLighting
|
|
2202
|
+
VideoWall
|
|
2203
|
+
LEDWall
|
|
2204
|
+
ProjectionMapping
|
|
2205
|
+
IntelligentLighting
|
|
2206
|
+
MovingHeads
|
|
2207
|
+
WashLights
|
|
2208
|
+
PatternLights
|
|
2209
|
+
ColorChanging
|
|
2210
|
+
InteractiveLighting
|
|
2211
|
+
ArchitecturalLighting
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
enum CustomSignageFormat {
|
|
2215
|
+
WelcomeSigns
|
|
2216
|
+
DirectionalSignage
|
|
2217
|
+
BrandedDisplays
|
|
2218
|
+
DigitalSignage
|
|
2219
|
+
InteractiveDisplays
|
|
2220
|
+
VideoWall
|
|
2221
|
+
LEDWall
|
|
2222
|
+
HolographicDisplay
|
|
2223
|
+
ProjectionMapping
|
|
2224
|
+
WayfindingSigns
|
|
2225
|
+
MenuBoards
|
|
2226
|
+
ScheduleDisplays
|
|
2227
|
+
SocialMediaWall
|
|
2228
|
+
BrandedBackdrops
|
|
2229
|
+
CustomInstallations
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
enum PASystemFormat {
|
|
2233
|
+
IndoorEvents
|
|
2234
|
+
OutdoorEvents
|
|
2235
|
+
PortableSetup
|
|
2236
|
+
MultiZoneSystem
|
|
2237
|
+
BrandedAudio
|
|
2238
|
+
WirelessSystem
|
|
2239
|
+
DistributedAudio
|
|
2240
|
+
LineArraySystem
|
|
2241
|
+
PointSourceSystem
|
|
2242
|
+
SubwooferSystem
|
|
2243
|
+
MonitorSystem
|
|
2244
|
+
RecordingSystem
|
|
2245
|
+
StreamingSystem
|
|
2246
|
+
InteractiveAudio
|
|
2247
|
+
CustomAudio
|
|
2248
|
+
}
|
|
2249
|
+
|
|
2250
|
+
enum DJLightingFormat {
|
|
2251
|
+
DanceFloorLighting
|
|
2252
|
+
StageLighting
|
|
2253
|
+
ThemeLighting
|
|
2254
|
+
InteractiveLighting
|
|
2255
|
+
BrandedLighting
|
|
2256
|
+
LaserShow
|
|
2257
|
+
FogEffects
|
|
2258
|
+
HazeEffects
|
|
2259
|
+
MovingHeads
|
|
2260
|
+
LEDWash
|
|
2261
|
+
SpotLighting
|
|
2262
|
+
Uplighting
|
|
2263
|
+
ColorWash
|
|
2264
|
+
PatternProjection
|
|
2265
|
+
VideoMapping
|
|
2266
|
+
}
|
|
2267
|
+
|
|
2268
|
+
enum ChairsFormat {
|
|
2269
|
+
BanquetChairs
|
|
2270
|
+
LoungeChairs
|
|
2271
|
+
PremiumSeating
|
|
2272
|
+
ThemeChairs
|
|
2273
|
+
BrandedChairs
|
|
2274
|
+
FoldingChairs
|
|
2275
|
+
ChiavariChairs
|
|
2276
|
+
GhostChairs
|
|
2277
|
+
CrossBackChairs
|
|
2278
|
+
BarStools
|
|
2279
|
+
CocktailChairs
|
|
2280
|
+
VIPSeating
|
|
2281
|
+
OutdoorChairs
|
|
2282
|
+
CushionedChairs
|
|
2283
|
+
CustomChairs
|
|
2284
|
+
}
|
|
2285
|
+
|
|
2286
|
+
enum TablesFormat {
|
|
2287
|
+
BanquetTables
|
|
2288
|
+
CocktailTables
|
|
2289
|
+
PremiumTables
|
|
2290
|
+
ThemeTables
|
|
2291
|
+
BrandedTables
|
|
2292
|
+
RoundTables
|
|
2293
|
+
RectangularTables
|
|
2294
|
+
HighTopTables
|
|
2295
|
+
FarmTables
|
|
2296
|
+
MixAndMatchTables
|
|
2297
|
+
OutdoorTables
|
|
2298
|
+
VIPTables
|
|
2299
|
+
DessertTables
|
|
2300
|
+
RegistrationTables
|
|
2301
|
+
CustomTables
|
|
2302
|
+
}
|
|
2303
|
+
|
|
2304
|
+
enum TentsFormat {
|
|
2305
|
+
ClearSpanTents
|
|
2306
|
+
FrameTents
|
|
2307
|
+
PoleTents
|
|
2308
|
+
PremiumTents
|
|
2309
|
+
BrandedTents
|
|
2310
|
+
SailclothTents
|
|
2311
|
+
StretchTents
|
|
2312
|
+
CanopyTents
|
|
2313
|
+
MarqueeTents
|
|
2314
|
+
PopUpTents
|
|
2315
|
+
WeddingTents
|
|
2316
|
+
CorporateTents
|
|
2317
|
+
FestivalTents
|
|
2318
|
+
HeatedTents
|
|
2319
|
+
CustomTents
|
|
2320
|
+
}
|
|
2321
|
+
|
|
2322
|
+
enum LinensFormat {
|
|
2323
|
+
TableLinens
|
|
2324
|
+
ChairCovers
|
|
2325
|
+
PremiumLinens
|
|
2326
|
+
ThemeLinens
|
|
2327
|
+
BrandedLinens
|
|
2328
|
+
TableRunners
|
|
2329
|
+
Napkins
|
|
2330
|
+
Overlays
|
|
2331
|
+
Skirting
|
|
2332
|
+
Draping
|
|
2333
|
+
CeilingDrapes
|
|
2334
|
+
BackdropFabrics
|
|
2335
|
+
ChairSashes
|
|
2336
|
+
CustomLinens
|
|
2337
|
+
SeasonalLinens
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
enum StagingFormat {
|
|
2341
|
+
MainStage
|
|
2342
|
+
PerformanceStage
|
|
2343
|
+
MultiLevelStage
|
|
2344
|
+
BrandedStage
|
|
2345
|
+
CustomStage
|
|
2346
|
+
PlatformStage
|
|
2347
|
+
ThrustStage
|
|
2348
|
+
ArenaStage
|
|
2349
|
+
CatwalkStage
|
|
2350
|
+
RunwayStage
|
|
2351
|
+
DJStage
|
|
2352
|
+
BandStage
|
|
2353
|
+
SpeakerStage
|
|
2354
|
+
FashionShowStage
|
|
2355
|
+
InteractiveStage
|
|
2356
|
+
}
|
|
2357
|
+
|
|
2358
|
+
enum GeneratorsFormat {
|
|
2359
|
+
BackupPower
|
|
2360
|
+
PrimaryPower
|
|
2361
|
+
SilentGenerators
|
|
2362
|
+
MultipleUnits
|
|
2363
|
+
BrandedPower
|
|
2364
|
+
SolarPower
|
|
2365
|
+
HybridPower
|
|
2366
|
+
EmergencyPower
|
|
2367
|
+
MobilePower
|
|
2368
|
+
DistributionUnits
|
|
2369
|
+
PowerManagement
|
|
2370
|
+
GreenPower
|
|
2371
|
+
HighCapacity
|
|
2372
|
+
LowNoise
|
|
2373
|
+
CustomPower
|
|
2374
|
+
}
|
|
2375
|
+
|
|
2376
|
+
enum DanceFloorFormat {
|
|
2377
|
+
StandardFloor
|
|
2378
|
+
LEDFloor
|
|
2379
|
+
PremiumFloor
|
|
2380
|
+
ThemeFloor
|
|
2381
|
+
BrandedFloor
|
|
2382
|
+
InteractiveFloor
|
|
2383
|
+
GlowFloor
|
|
2384
|
+
MarleyFloor
|
|
2385
|
+
SprungFloor
|
|
2386
|
+
CustomFloor
|
|
2387
|
+
ModularFloor
|
|
2388
|
+
OutdoorFloor
|
|
2389
|
+
StageFloor
|
|
2390
|
+
MultiLevelFloor
|
|
2391
|
+
VideoFloor
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
enum PhotoBoothFormat {
|
|
2395
|
+
OpenAirBooth
|
|
2396
|
+
EnclosedBooth
|
|
2397
|
+
SocialMediaBooth
|
|
2398
|
+
GreenScreenBooth
|
|
2399
|
+
BrandedBooth
|
|
2400
|
+
}
|
|
2401
|
+
|
|
2402
|
+
enum VideographerFormat {
|
|
2403
|
+
WeddingCoverage
|
|
2404
|
+
EventHighlights
|
|
2405
|
+
LiveStreaming
|
|
2406
|
+
MultiCameraSetup
|
|
2407
|
+
DroneFootage
|
|
2408
|
+
}
|
|
2409
|
+
|
|
2410
|
+
enum MediaEditorFormat {
|
|
2411
|
+
SameDayEdit
|
|
2412
|
+
HighlightReel
|
|
2413
|
+
SocialMediaClips
|
|
2414
|
+
FullEventVideo
|
|
2415
|
+
BrandedContent
|
|
2416
|
+
}
|
|
2417
|
+
|
|
2418
|
+
enum GraphicDesignerFormat {
|
|
2419
|
+
EventBranding
|
|
2420
|
+
SocialMediaGraphics
|
|
2421
|
+
PrintMaterials
|
|
2422
|
+
DigitalDisplays
|
|
2423
|
+
CustomIllustrations
|
|
2424
|
+
}
|
|
2425
|
+
|
|
2426
|
+
enum GoProWearerFormat {
|
|
2427
|
+
GuestPerspective
|
|
2428
|
+
ActionShots
|
|
2429
|
+
BehindTheScenes
|
|
2430
|
+
InteractiveContent
|
|
2431
|
+
BrandedContent
|
|
2432
|
+
}
|
|
2433
|
+
|
|
2434
|
+
enum DroneShotsFormat {
|
|
2435
|
+
VenueOverview
|
|
2436
|
+
EventHighlights
|
|
2437
|
+
AerialPhotos
|
|
2438
|
+
LiveStreaming
|
|
2439
|
+
BrandedContent
|
|
2440
|
+
}
|
|
2441
|
+
|
|
2442
|
+
enum AISpecialistFormat {
|
|
2443
|
+
ContentGeneration
|
|
2444
|
+
ImageEnhancement
|
|
2445
|
+
VideoEditing
|
|
2446
|
+
SocialMediaContent
|
|
2447
|
+
BrandedContent
|
|
2448
|
+
}
|
|
2449
|
+
|
|
2450
|
+
enum AVTechnicianFormat {
|
|
2451
|
+
SoundSetup
|
|
2452
|
+
VideoSetup
|
|
2453
|
+
LightingSetup
|
|
2454
|
+
LiveStreaming
|
|
2455
|
+
TechnicalSupport
|
|
2456
|
+
}
|
|
2457
|
+
|
|
2458
|
+
enum SoundEngineerFormat {
|
|
2459
|
+
LiveSound
|
|
2460
|
+
Recording
|
|
2461
|
+
Mixing
|
|
2462
|
+
MultiZoneAudio
|
|
2463
|
+
TechnicalSupport
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
enum LightingTechFormat {
|
|
2467
|
+
StageLighting
|
|
2468
|
+
AmbientLighting
|
|
2469
|
+
SpecialEffects
|
|
2470
|
+
ThemeLighting
|
|
2471
|
+
TechnicalSupport
|
|
2472
|
+
}
|
|
2473
|
+
|
|
2474
|
+
enum StageTechFormat {
|
|
2475
|
+
StageSetup
|
|
2476
|
+
EquipmentManagement
|
|
2477
|
+
TechnicalSupport
|
|
2478
|
+
SafetyMonitoring
|
|
2479
|
+
EmergencyResponse
|
|
2480
|
+
}
|
|
2481
|
+
|
|
2482
|
+
enum ProjectorSetupFormat {
|
|
2483
|
+
PresentationSetup
|
|
2484
|
+
VideoMapping
|
|
2485
|
+
InteractiveDisplays
|
|
2486
|
+
MultiScreenSetup
|
|
2487
|
+
BrandedContent
|
|
2488
|
+
}
|
|
2489
|
+
|
|
2490
|
+
enum EmceeFormat {
|
|
2491
|
+
WeddingMC
|
|
2492
|
+
CorporateEvents
|
|
2493
|
+
AwardCeremonies
|
|
2494
|
+
InteractiveHosting
|
|
2495
|
+
BrandedEvents
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
enum GreeterFormat {
|
|
2499
|
+
VIPGreeting
|
|
2500
|
+
GuestCheckIn
|
|
2501
|
+
InformationDesk
|
|
2502
|
+
BrandAmbassador
|
|
2503
|
+
EventGuide
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
enum InfluencerFormat {
|
|
2507
|
+
EventPromotion
|
|
2508
|
+
LiveCoverage
|
|
2509
|
+
BrandAmbassador
|
|
2510
|
+
SocialMediaTakeover
|
|
2511
|
+
ContentCreation
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
enum PromoterFormat {
|
|
2515
|
+
LocalMarketing
|
|
2516
|
+
SocialMediaCampaign
|
|
2517
|
+
EmailMarketing
|
|
2518
|
+
CommunityOutreach
|
|
2519
|
+
TicketSales
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
enum CelebrityAppearanceFormat {
|
|
2523
|
+
MeetAndGreet
|
|
2524
|
+
KeynoteSpeaking
|
|
2525
|
+
Performance
|
|
2526
|
+
BrandAmbassador
|
|
2527
|
+
PhotoOpportunities
|
|
2528
|
+
}
|
|
2529
|
+
|
|
2530
|
+
enum CrewHandFormat {
|
|
2531
|
+
SetupAndBreakdown
|
|
2532
|
+
EquipmentHandling
|
|
2533
|
+
VenuePreparation
|
|
2534
|
+
LoadInLoadOut
|
|
2535
|
+
TechnicalSupport
|
|
2536
|
+
}
|
|
2537
|
+
|
|
2538
|
+
enum ParkingManagementFormat {
|
|
2539
|
+
ValetService
|
|
2540
|
+
SelfParking
|
|
2541
|
+
ShuttleService
|
|
2542
|
+
VIPParking
|
|
2543
|
+
TrafficControl
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2546
|
+
enum GuestRegistrationFormat {
|
|
2547
|
+
DigitalCheckIn
|
|
2548
|
+
DoorGuy
|
|
2549
|
+
VIPRegistration
|
|
2550
|
+
OnSiteRegistration
|
|
2551
|
+
PreEventRegistration
|
|
2552
|
+
BadgePrinting
|
|
2553
|
+
}
|
|
2554
|
+
|
|
2555
|
+
enum SecurityFormat {
|
|
2556
|
+
CrowdControl
|
|
2557
|
+
VIPProtection
|
|
2558
|
+
AccessControl
|
|
2559
|
+
EmergencyResponse
|
|
2560
|
+
AssetProtection
|
|
2561
|
+
}
|
|
2562
|
+
|
|
2563
|
+
enum LimoFormat {
|
|
2564
|
+
VIPTransport
|
|
2565
|
+
GroupTransport
|
|
2566
|
+
AirportTransfer
|
|
2567
|
+
WeddingService
|
|
2568
|
+
CorporateEvents
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2571
|
+
enum PartyBusFormat {
|
|
2572
|
+
GroupTransport
|
|
2573
|
+
EntertainmentBus
|
|
2574
|
+
CorporateEvents
|
|
2575
|
+
WeddingService
|
|
2576
|
+
ThemeParties
|
|
2577
|
+
}
|
|
2578
|
+
|
|
2579
|
+
enum GuestShuttleFormat {
|
|
2580
|
+
VenueTransfer
|
|
2581
|
+
HotelShuttle
|
|
2582
|
+
ParkingShuttle
|
|
2583
|
+
VIPTransport
|
|
2584
|
+
ScheduledService
|
|
2585
|
+
}
|
|
2586
|
+
|
|
2587
|
+
enum ValetFormat {
|
|
2588
|
+
PremiumService
|
|
2589
|
+
StandardService
|
|
2590
|
+
VIPService
|
|
2591
|
+
EventBased
|
|
2592
|
+
CorporateEvents
|
|
2593
|
+
}
|
|
2594
|
+
|
|
2595
|
+
enum ValetServiceFormat {
|
|
2596
|
+
PremiumService
|
|
2597
|
+
StandardService
|
|
2598
|
+
VIPService
|
|
2599
|
+
EventBased
|
|
2600
|
+
CorporateEvents
|
|
2601
|
+
}
|
|
2602
|
+
|
|
2603
|
+
enum BookkeepersFormat {
|
|
2604
|
+
EventBudgeting
|
|
2605
|
+
VendorPaymentManagement
|
|
2606
|
+
ExpenseTracking
|
|
2607
|
+
FinancialReporting
|
|
2608
|
+
TaxPreparation
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2611
|
+
enum CPAsFormat {
|
|
2612
|
+
EventTaxPlanning
|
|
2613
|
+
BusinessStructure
|
|
2614
|
+
FinancialCompliance
|
|
2615
|
+
RevenueOptimization
|
|
2616
|
+
EventDeductions
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
enum LawyersFormat {
|
|
2620
|
+
EventContracts
|
|
2621
|
+
VendorAgreements
|
|
2622
|
+
LiabilityProtection
|
|
2623
|
+
InsuranceReview
|
|
2624
|
+
PermitCompliance
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
enum ThankYouCardsFormat {
|
|
2628
|
+
CustomEventDesign
|
|
2629
|
+
BulkOrdering
|
|
2630
|
+
DigitalDelivery
|
|
2631
|
+
HandwrittenNotes
|
|
2632
|
+
PremiumPackaging
|
|
2633
|
+
}
|
|
2634
|
+
|
|
2635
|
+
enum ReportingFormat {
|
|
2636
|
+
EventAnalytics
|
|
2637
|
+
AttendanceTracking
|
|
2638
|
+
RevenueReporting
|
|
2639
|
+
VendorPerformance
|
|
2640
|
+
ROIAnalysis
|
|
1693
2641
|
}
|
|
1694
2642
|
|
|
1695
2643
|
enum EntertainmentServiceType {
|
|
@@ -1706,6 +2654,51 @@ enum EntertainmentServiceType {
|
|
|
1706
2654
|
Impersonators
|
|
1707
2655
|
Speakers
|
|
1708
2656
|
Auctioneers
|
|
2657
|
+
Other
|
|
2658
|
+
}
|
|
2659
|
+
|
|
2660
|
+
enum VendedProductType {
|
|
2661
|
+
Art
|
|
2662
|
+
Books
|
|
2663
|
+
BakedGoods
|
|
2664
|
+
Beverages
|
|
2665
|
+
BodyCareProducts
|
|
2666
|
+
Candles
|
|
2667
|
+
Clothing
|
|
2668
|
+
Crystals
|
|
2669
|
+
FoodItems
|
|
2670
|
+
HandcraftedItems
|
|
2671
|
+
HerbalRemedies
|
|
2672
|
+
HomeDecor
|
|
2673
|
+
HoneyAndJams
|
|
2674
|
+
Jewelry
|
|
2675
|
+
PetProducts
|
|
2676
|
+
PhotographyPrints
|
|
2677
|
+
PopcornAndSnacks
|
|
2678
|
+
SkincareProducts
|
|
2679
|
+
SpiritualItems
|
|
2680
|
+
StickersAndStationery
|
|
2681
|
+
SweetTreats
|
|
2682
|
+
TShirtsAndApparel
|
|
2683
|
+
Other
|
|
2684
|
+
}
|
|
2685
|
+
|
|
2686
|
+
enum VendorServiceType {
|
|
2687
|
+
BalloonArt
|
|
2688
|
+
CaricatureDrawings
|
|
2689
|
+
ChairMassages
|
|
2690
|
+
FacePainting
|
|
2691
|
+
HairBraiding
|
|
2692
|
+
HennaArt
|
|
2693
|
+
KidsCraftBooths
|
|
2694
|
+
LivePainting
|
|
2695
|
+
PettingZoos
|
|
2696
|
+
PhotoBooths
|
|
2697
|
+
PsychicOrTarotReadings
|
|
2698
|
+
TemporaryTattoos
|
|
2699
|
+
WellnessDemos
|
|
2700
|
+
YogaOrMovementClasses
|
|
2701
|
+
Other
|
|
1709
2702
|
}
|
|
1710
2703
|
|
|
1711
2704
|
enum OrganizationType {
|
|
@@ -1727,6 +2720,7 @@ enum OrganizationType {
|
|
|
1727
2720
|
Conference
|
|
1728
2721
|
FoodAndBeverage
|
|
1729
2722
|
TechAndStartups
|
|
2723
|
+
Other
|
|
1730
2724
|
}
|
|
1731
2725
|
|
|
1732
2726
|
enum YearsOfExperience {
|
|
@@ -1848,6 +2842,7 @@ model ServiceRate {
|
|
|
1848
2842
|
rateType ServiceRateType
|
|
1849
2843
|
hourlyRateCents Int?
|
|
1850
2844
|
dailyRateCents Int?
|
|
2845
|
+
flatRateCents Int?
|
|
1851
2846
|
cleaningFeePerBookingCents Int?
|
|
1852
2847
|
minimumTimeBlockHours Int?
|
|
1853
2848
|
serviceSpecialRates ServiceSpecialRates?
|
|
@@ -1959,6 +2954,7 @@ enum ServiceBookingFeeType {
|
|
|
1959
2954
|
enum ServiceRatePricingType {
|
|
1960
2955
|
Hourly
|
|
1961
2956
|
Daily
|
|
2957
|
+
Flat
|
|
1962
2958
|
}
|
|
1963
2959
|
|
|
1964
2960
|
enum ServiceBookingStatus {
|
|
@@ -2291,3 +3287,20 @@ model UserStats {
|
|
|
2291
3287
|
@@index([servicesBookedCount])
|
|
2292
3288
|
@@index([followersCount])
|
|
2293
3289
|
}
|
|
3290
|
+
|
|
3291
|
+
model UserFavorite {
|
|
3292
|
+
id String @id @default(cuid())
|
|
3293
|
+
userId String
|
|
3294
|
+
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
3295
|
+
serviceId String?
|
|
3296
|
+
service Service? @relation(fields: [serviceId], references: [id], onDelete: Cascade)
|
|
3297
|
+
bashEventId String?
|
|
3298
|
+
bashEvent BashEvent? @relation(fields: [bashEventId], references: [id], onDelete: Cascade)
|
|
3299
|
+
createdAt DateTime @default(now())
|
|
3300
|
+
|
|
3301
|
+
@@unique([userId, serviceId])
|
|
3302
|
+
@@unique([userId, bashEventId])
|
|
3303
|
+
@@index([userId])
|
|
3304
|
+
@@index([serviceId])
|
|
3305
|
+
@@index([bashEventId])
|
|
3306
|
+
}
|
package/src/extendedSchemas.ts
CHANGED
|
@@ -32,6 +32,7 @@ import {
|
|
|
32
32
|
ServiceBookingPackage,
|
|
33
33
|
ServiceBookingPriceBreakdown,
|
|
34
34
|
ServiceDailyRates,
|
|
35
|
+
ServiceFormatOption,
|
|
35
36
|
ServiceLink,
|
|
36
37
|
ServicePackage,
|
|
37
38
|
ServiceRange,
|
|
@@ -289,6 +290,7 @@ export const VENUE_DATA_TO_INCLUDE = {} satisfies Prisma.VenueInclude;
|
|
|
289
290
|
export const EVENT_SERVICE_DATA_TO_INCLUDE = {
|
|
290
291
|
crowdSize: true,
|
|
291
292
|
serviceRange: true,
|
|
293
|
+
formatOptions: true,
|
|
292
294
|
} satisfies Prisma.EventServiceInclude;
|
|
293
295
|
|
|
294
296
|
export const ENTERTAINMENT_SERVICE_DATA_TO_INCLUDE = {
|
|
@@ -593,6 +595,7 @@ export type ServiceExtNoIds = Exclude<
|
|
|
593
595
|
export interface EventServiceExt extends EventService {
|
|
594
596
|
crowdSize?: AmountOfGuests;
|
|
595
597
|
serviceRange?: ServiceRange;
|
|
598
|
+
formatOptions?: ServiceFormatOption[]
|
|
596
599
|
}
|
|
597
600
|
|
|
598
601
|
export interface EntertainmentServiceExt extends EntertainmentService {
|
package/src/utils/luxonUtils.ts
CHANGED
|
@@ -196,14 +196,22 @@ export function dateTimeFormat(dateTime?: DateTime | null) {
|
|
|
196
196
|
return dateTime?.toFormat(LUXON_DATETIME_FORMAT_STANDARD) ?? "";
|
|
197
197
|
}
|
|
198
198
|
|
|
199
|
-
export function
|
|
200
|
-
return dateTime?.
|
|
199
|
+
export function dateTimeFormatLong(dateTime?: DateTime | null) {
|
|
200
|
+
return `${dateTime?.weekdayLong} ${dateTimeFormatWeek(dateTime)}`;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export function dateTimeFormatWeek(dateTime?: DateTime | null) {
|
|
204
|
+
return dateTime?.toFormat(LUXON_DATETIME_FORMAT_STANDARD) ?? "";
|
|
201
205
|
}
|
|
202
206
|
|
|
203
207
|
export function dateTimeFormatDate(dateTime?: DateTime | null) {
|
|
204
208
|
return dateTime?.toFormat(LUXON_DATETIME_FORMAT_DATE) ?? "";
|
|
205
209
|
}
|
|
206
210
|
|
|
211
|
+
export function dateTimeFormatTime(dateTime?: DateTime | null) {
|
|
212
|
+
return dateTime?.toFormat(LUXON_TIME_FORMAT_AM_PM) ?? "";
|
|
213
|
+
}
|
|
214
|
+
|
|
207
215
|
export function dateTimeWithinRange(
|
|
208
216
|
dateTime: DateTime,
|
|
209
217
|
dateRange: LuxonDateRange
|
|
@@ -268,6 +276,16 @@ export function utcOffsetMinutesToTimezone(utcOffsetMinutes: number) {
|
|
|
268
276
|
return offsetString;
|
|
269
277
|
}
|
|
270
278
|
|
|
279
|
+
export function getLocalTimezone() {
|
|
280
|
+
const localDateTime = DateTime.local();
|
|
281
|
+
return utcOffsetMinutesToTimezone(localDateTime.offset);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export function getLocalTimezoneName() {
|
|
285
|
+
const localDateTime = DateTime.local();
|
|
286
|
+
return localDateTime.zoneName;
|
|
287
|
+
}
|
|
288
|
+
|
|
271
289
|
export function dateTimeFormatDateRange(
|
|
272
290
|
startDateTimeArg: DateTime | null,
|
|
273
291
|
endDateTimeArg: DateTime | null
|
|
@@ -903,10 +921,10 @@ export function dateTimeRangeCrossesMidnight(range: LuxonDateRange) {
|
|
|
903
921
|
}
|
|
904
922
|
|
|
905
923
|
/**
|
|
906
|
-
* Given an overall range, split it into segments that use the input
|
|
907
|
-
* start time as the daily
|
|
924
|
+
* Given an overall range, split it into segments that use the input's
|
|
925
|
+
* start time as the daily "start" and the input's end time as the daily "end."
|
|
908
926
|
*
|
|
909
|
-
* Each segment will run from a day
|
|
927
|
+
* Each segment will run from a day's daily start to the next day's daily end.
|
|
910
928
|
*
|
|
911
929
|
* For example, if the overall range is:
|
|
912
930
|
* start: March 5, 2025 11:00 am
|
|
@@ -918,7 +936,7 @@ export function dateTimeRangeCrossesMidnight(range: LuxonDateRange) {
|
|
|
918
936
|
* March 7, 11:00 am – March 8, 9:00 pm
|
|
919
937
|
* March 8, 11:00 am – March 9, 9:00 pm
|
|
920
938
|
*
|
|
921
|
-
* (You can then filter out partial segments if you want only full
|
|
939
|
+
* (You can then filter out partial segments if you want only full "days.")
|
|
922
940
|
*/
|
|
923
941
|
export function splitRangeByInputTimes(
|
|
924
942
|
range: LuxonDateRange
|
|
@@ -931,7 +949,7 @@ export function splitRangeByInputTimes(
|
|
|
931
949
|
// Determine if the range crosses midnight.
|
|
932
950
|
const crossesMidnight = dateTimeRangeCrossesMidnight(range);
|
|
933
951
|
|
|
934
|
-
// Set the first segment
|
|
952
|
+
// Set the first segment's start.
|
|
935
953
|
let currentStart = range.start.set(startTime);
|
|
936
954
|
if (currentStart < range.start) {
|
|
937
955
|
currentStart = currentStart.plus({ days: 1 });
|
|
@@ -949,7 +967,7 @@ export function splitRangeByInputTimes(
|
|
|
949
967
|
}
|
|
950
968
|
segments.push({ start: currentStart, end: currentEnd });
|
|
951
969
|
|
|
952
|
-
// Move to the next segment
|
|
970
|
+
// Move to the next segment's start:
|
|
953
971
|
// (Always add one day and then snap to the start time.)
|
|
954
972
|
currentStart = currentStart.plus({ days: 1 }).set(startTime);
|
|
955
973
|
}
|
|
@@ -62,6 +62,28 @@ export function serviceBookingCalcDayPriceBreakdown(
|
|
|
62
62
|
// minimumTimeBlockHours: 0,
|
|
63
63
|
};
|
|
64
64
|
|
|
65
|
+
// First check if any service rate has a flat rate - this takes precedence
|
|
66
|
+
const flatRateService = serviceRates.find(
|
|
67
|
+
(rate) => rate != null && (rate.flatRateCents ?? 0) > 0
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
if (flatRateService) {
|
|
71
|
+
pricingInfo.rateType = flatRateService.rateType ?? ServiceRateType.General;
|
|
72
|
+
pricingInfo.pricingType = "Flat" as ServiceRatePricingType;
|
|
73
|
+
pricingInfo.unitCount = 1; // Flat rate is always a single unit
|
|
74
|
+
pricingInfo.hours = hoursRemaining; // Use all remaining hours
|
|
75
|
+
pricingInfo.rateCents = flatRateService.flatRateCents ?? 0;
|
|
76
|
+
pricingInfo.piTotalCents = pricingInfo.rateCents; // Total is just the flat rate
|
|
77
|
+
|
|
78
|
+
pricingInfo.dateTimeRange = {
|
|
79
|
+
start: dateTimeRange.start,
|
|
80
|
+
end: dateTimeRange.start.plus({ hours: pricingInfo.hours }),
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
return pricingInfo;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// If no flat rate, proceed with the existing logic for hourly/daily rates
|
|
65
87
|
// Find the first serviceRate where dailyRate or hourlyRate is not null based on isFullDay
|
|
66
88
|
const validServiceRate = serviceRates.find(
|
|
67
89
|
(rate) =>
|
|
@@ -211,25 +233,27 @@ export function serviceRatesFilter(
|
|
|
211
233
|
}
|
|
212
234
|
|
|
213
235
|
export function serviceRatesHasRates(rates: ServiceRatesLuxon) {
|
|
214
|
-
|
|
215
|
-
|
|
236
|
+
//check that we have rates with prices
|
|
216
237
|
const isValidSpecialOrDailyRate = (
|
|
217
238
|
rate: ServiceSpecialRatesExtT | ServiceDailyRatesExtT
|
|
218
239
|
) =>
|
|
219
240
|
rate?.serviceRate &&
|
|
220
241
|
((rate.serviceRate?.dailyRateCents ?? 0) > 0 ||
|
|
221
|
-
(rate.serviceRate?.hourlyRateCents ?? 0) > 0
|
|
242
|
+
(rate.serviceRate?.hourlyRateCents ?? 0) > 0 ||
|
|
243
|
+
(rate.serviceRate?.flatRateCents ?? 0) > 0);
|
|
222
244
|
|
|
223
245
|
const isValidGeneralRate = (rate: ServiceRate | undefined | null) =>
|
|
224
|
-
rate && (
|
|
246
|
+
rate && (
|
|
247
|
+
(rate.dailyRateCents ?? 0) > 0 ||
|
|
248
|
+
(rate.hourlyRateCents ?? 0) > 0 ||
|
|
249
|
+
(rate.flatRateCents ?? 0) > 0
|
|
250
|
+
);
|
|
225
251
|
|
|
226
|
-
|
|
227
|
-
isValidSpecialOrDailyRate
|
|
252
|
+
return (
|
|
253
|
+
rates.specialRates?.some(isValidSpecialOrDailyRate) ||
|
|
254
|
+
rates.dailyRates?.some(isValidSpecialOrDailyRate) ||
|
|
255
|
+
isValidGeneralRate(rates.generalRate)
|
|
228
256
|
);
|
|
229
|
-
const hasValidGeneralRate = isValidGeneralRate(generalRate);
|
|
230
|
-
|
|
231
|
-
const hasRates = hasValidSpecialOrDailyRate || hasValidGeneralRate;
|
|
232
|
-
return hasRates;
|
|
233
257
|
}
|
|
234
258
|
|
|
235
259
|
export function serviceRatesToLuxonRates(
|