@bash-app/bash-common 30.45.0 → 30.47.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 +993 -34
- package/src/extendedSchemas.ts +3 -0
- package/src/utils/service/serviceRateUtils.ts +34 -10
package/package.json
CHANGED
package/prisma/schema.prisma
CHANGED
|
@@ -330,6 +330,7 @@ model BashEvent {
|
|
|
330
330
|
averageRating Float? @default(0)
|
|
331
331
|
serviceBookings ServiceBooking[] // Add this field to create the reverse relation
|
|
332
332
|
userReport UserReport[]
|
|
333
|
+
favoritedBy UserFavorite[]
|
|
333
334
|
}
|
|
334
335
|
|
|
335
336
|
model Coordinates {
|
|
@@ -1113,6 +1114,7 @@ model User {
|
|
|
1113
1114
|
notifyForTrendingBashes Boolean @default(false)
|
|
1114
1115
|
trendingBashThreshold Int @default(10) // Min attendees to trigger notification
|
|
1115
1116
|
organizerUser UserFollowing[] @relation("FollowingOrganizers")
|
|
1117
|
+
favorites UserFavorite[]
|
|
1116
1118
|
}
|
|
1117
1119
|
|
|
1118
1120
|
model UserPreferences {
|
|
@@ -1268,7 +1270,6 @@ model AssociatedBash {
|
|
|
1268
1270
|
ownerUserId String?
|
|
1269
1271
|
owner User? @relation(fields: [ownerUserId], references: [id], onDelete: Cascade)
|
|
1270
1272
|
isOrganizer Boolean?
|
|
1271
|
-
isFavorite Boolean?
|
|
1272
1273
|
service Service[]
|
|
1273
1274
|
|
|
1274
1275
|
@@unique([ownerEmail, bashEventId])
|
|
@@ -1473,6 +1474,7 @@ model Service {
|
|
|
1473
1474
|
userPromoCodeRedemption UserPromoCodeRedemption[]
|
|
1474
1475
|
bookings ServiceBooking[]
|
|
1475
1476
|
notification Notification[]
|
|
1477
|
+
favoritedBy UserFavorite[]
|
|
1476
1478
|
}
|
|
1477
1479
|
|
|
1478
1480
|
model StripeAccount {
|
|
@@ -1532,21 +1534,41 @@ model VolunteerService {
|
|
|
1532
1534
|
}
|
|
1533
1535
|
|
|
1534
1536
|
model EventService {
|
|
1535
|
-
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
|
|
1536
1549
|
serviceRangeId String?
|
|
1537
|
-
serviceRange ServiceRange?
|
|
1538
|
-
|
|
1539
|
-
|
|
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
|
|
1540
1557
|
yearsOfExperience YearsOfExperience
|
|
1541
|
-
crowdSizeId String? @unique
|
|
1542
|
-
crowdSize AmountOfGuests? @relation(fields: [crowdSizeId], references: [id], onDelete: Cascade)
|
|
1543
1558
|
goodsOrServices String[]
|
|
1544
1559
|
menuItems String?
|
|
1545
1560
|
venueTypes String[]
|
|
1546
|
-
secondaryVenueTypes String[]
|
|
1547
|
-
service Service?
|
|
1561
|
+
secondaryVenueTypes String[] @default([])
|
|
1548
1562
|
}
|
|
1549
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"
|
|
1569
|
+
}
|
|
1570
|
+
|
|
1571
|
+
|
|
1550
1572
|
model EntertainmentService {
|
|
1551
1573
|
id String @id @default(cuid())
|
|
1552
1574
|
serviceRangeId String?
|
|
@@ -1564,19 +1586,23 @@ model EntertainmentService {
|
|
|
1564
1586
|
}
|
|
1565
1587
|
|
|
1566
1588
|
model Vendor {
|
|
1567
|
-
id
|
|
1568
|
-
serviceRangeId
|
|
1569
|
-
serviceRange
|
|
1570
|
-
vendorServiceTypes
|
|
1589
|
+
id String @id @default(cuid())
|
|
1590
|
+
serviceRangeId String?
|
|
1591
|
+
serviceRange ServiceRange? @relation(fields: [serviceRangeId], references: [id])
|
|
1592
|
+
vendorServiceTypes VendorServiceType[]
|
|
1571
1593
|
vendorServiceSubType String?
|
|
1572
|
-
yearsOfExperience
|
|
1573
|
-
crowdSizeId
|
|
1574
|
-
crowdSize
|
|
1575
|
-
goodsOrServices
|
|
1576
|
-
menuItems
|
|
1577
|
-
venueTypes
|
|
1578
|
-
secondaryVenueTypes
|
|
1579
|
-
|
|
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?
|
|
1580
1606
|
}
|
|
1581
1607
|
|
|
1582
1608
|
model Exhibitor {
|
|
@@ -1673,30 +1699,945 @@ model Organization {
|
|
|
1673
1699
|
}
|
|
1674
1700
|
|
|
1675
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 {
|
|
1676
1718
|
Investor
|
|
1677
1719
|
LongTermLoan
|
|
1678
1720
|
ShortTermLoan
|
|
1679
|
-
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
enum EventPlanningAndManagementSubType {
|
|
1724
|
+
EventPlanner
|
|
1725
|
+
EventManager
|
|
1726
|
+
VirtualAssistant
|
|
1727
|
+
Consultants
|
|
1728
|
+
}
|
|
1729
|
+
|
|
1730
|
+
enum FoodAndBeverageSubType {
|
|
1680
1731
|
Caterer
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
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 {
|
|
1686
1772
|
Photographer
|
|
1687
1773
|
Videographer
|
|
1688
1774
|
MediaEditor
|
|
1689
|
-
AVTechnician
|
|
1690
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 {
|
|
1691
1795
|
Influencer
|
|
1692
1796
|
Promoter
|
|
1693
1797
|
CelebrityAppearance
|
|
1798
|
+
}
|
|
1799
|
+
|
|
1800
|
+
enum StaffingSubType {
|
|
1694
1801
|
CrewHand
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1698
|
-
|
|
1699
|
-
|
|
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
|
|
1700
2641
|
}
|
|
1701
2642
|
|
|
1702
2643
|
enum EntertainmentServiceType {
|
|
@@ -1760,7 +2701,6 @@ enum VendorServiceType {
|
|
|
1760
2701
|
Other
|
|
1761
2702
|
}
|
|
1762
2703
|
|
|
1763
|
-
|
|
1764
2704
|
enum OrganizationType {
|
|
1765
2705
|
Church
|
|
1766
2706
|
GreekLife
|
|
@@ -1902,6 +2842,7 @@ model ServiceRate {
|
|
|
1902
2842
|
rateType ServiceRateType
|
|
1903
2843
|
hourlyRateCents Int?
|
|
1904
2844
|
dailyRateCents Int?
|
|
2845
|
+
flatRateCents Int?
|
|
1905
2846
|
cleaningFeePerBookingCents Int?
|
|
1906
2847
|
minimumTimeBlockHours Int?
|
|
1907
2848
|
serviceSpecialRates ServiceSpecialRates?
|
|
@@ -2013,6 +2954,7 @@ enum ServiceBookingFeeType {
|
|
|
2013
2954
|
enum ServiceRatePricingType {
|
|
2014
2955
|
Hourly
|
|
2015
2956
|
Daily
|
|
2957
|
+
Flat
|
|
2016
2958
|
}
|
|
2017
2959
|
|
|
2018
2960
|
enum ServiceBookingStatus {
|
|
@@ -2345,3 +3287,20 @@ model UserStats {
|
|
|
2345
3287
|
@@index([servicesBookedCount])
|
|
2346
3288
|
@@index([followersCount])
|
|
2347
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 {
|
|
@@ -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(
|