@ozdao/prometheus-framework 0.2.32 → 0.2.34

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. package/dist/events.server.js +31 -0
  2. package/dist/events.server.mjs +31 -0
  3. package/dist/files.server.js +99 -78
  4. package/dist/files.server.mjs +99 -78
  5. package/dist/globals.server.js +0 -1
  6. package/dist/globals.server.mjs +0 -1
  7. package/dist/main.css +1 -1
  8. package/dist/prometheus-framework.cjs.js +21 -21
  9. package/dist/prometheus-framework.es.js +1037 -1023
  10. package/package.json +1 -1
  11. package/src/components/Countdown/Countdown.vue +75 -0
  12. package/src/components/EditImages/EditImages.vue +10 -2
  13. package/src/components/Upload/Upload.vue +32 -6
  14. package/src/components/UploadImage/UploadImage.vue +12 -8
  15. package/src/components/UploadImageMultiple/UploadImageMultiple.vue +4 -2
  16. package/src/modules/events/components/pages/EditEvent.vue +304 -2
  17. package/src/modules/events/components/pages/Event.vue +128 -46
  18. package/src/modules/events/components/sections/HeroEvent.vue +161 -0
  19. package/src/modules/events/components/sections/SectionLineup.vue +42 -0
  20. package/src/modules/events/components/sections/SectionMainGuest.vue +104 -0
  21. package/src/modules/events/components/sections/SectionPreviousEvents.vue +119 -0
  22. package/src/modules/events/components/sections/SectionSpecialGuests.vue +47 -0
  23. package/src/modules/events/controllers/events.controller.js +1 -0
  24. package/src/modules/events/controllers/utils/queryProcessor.js +2 -0
  25. package/src/modules/events/models/event.model.js +29 -0
  26. package/src/modules/events/store/events.js +4 -0
  27. package/src/modules/files/controllers/files.controller.js +3 -0
  28. package/src/modules/files/middlewares/server/middlewareBusboy.js +115 -100
  29. package/src/modules/files/routes/files.routes.js +3 -4
  30. package/src/modules/globals/globals.server.js +0 -1
  31. package/src/modules/marketplace/components/pages/Catalog.vue +1 -0
  32. package/src/modules/orders/components/blocks/CardOrder.vue +5 -5
  33. package/src/modules/orders/components/blocks/StatusHistory.vue +84 -0
  34. package/src/modules/orders/components/pages/Order.vue +11 -54
  35. package/src/modules/orders/controllers/orders.controller.js +17 -9
  36. package/src/modules/orders/models/order.model.js +19 -0
  37. package/src/modules/orders/routes/orders.routes.js +4 -1
  38. package/src/modules/organizations/components/blocks/CardOrganization.vue +1 -1
  39. package/src/modules/users/components/pages/Profile.vue +1 -1
@@ -20,54 +20,129 @@
20
20
 
21
21
 
22
22
  <TransitionGroup tag="ul" name="fade" class="container">
23
- <CardEvent
24
- v-if="!isLoading && event"
25
- @click="$router.push({name: 'Event', params: {url: event.url}})"
26
- :event="event"
27
- :owner="event.owner"
28
- :user="auth.state.user._id"
29
- :type="'normal'"
30
- class="mn-b-medium bg-grey radius-big"
31
- >
32
- <ButtonJoin
33
- v-if="auth.state.user._id"
34
- :type="'event'"
35
- :hasTicket="event.hasTicket"
36
- :targetId="event._id"
37
- :userId="auth.state.user._id"
38
- class="mn-b-small w-100 pd-medium mn-auto"
39
- @updateTicket="handleTicketUpdate"
23
+ <HeroEvent
24
+ v-if="!isLoading && event && event.special"
25
+ :content="{
26
+ title: event.name,
27
+ description: event.description,
28
+ ticketLinkStripe: event.specialData.ticketLinkStripe,
29
+ subtitle: event.specialData.subtitle,
30
+ logos: event.specialData.logos,
31
+ video: event.specialData.video,
32
+ buyticket: 'Buy ticket',
33
+ booktable: 'Book table'
34
+ }"
35
+ :options="{
36
+ date: event.date.start,
37
+ price: event.specialData.ticketPrice,
38
+ }"
39
+ class="mn-b-thin"
40
+ />
41
+ <SectionMainGuest
42
+ v-if="!isLoading && event && event.special"
43
+ :content="{
44
+ title: event.specialData.guestTitle,
45
+ description: event.specialData.guestDescription,
46
+ socials: {
47
+ twitter: event.specialData.guestTwitter,
48
+ telegram: event.specialData.guestTelegram,
49
+ instagram: event.specialData.guestInstagram,
50
+ facebook: event.specialData.guestFacebook
51
+ },
52
+ video: event.specialData.guestVideo,
53
+ spotify: event.specialData.guestSpotify,
54
+ soundcloud: event.specialData.guestSoundcloud,
55
+ }"
56
+ class="mn-b-thin"
57
+ />
58
+
59
+ <section
60
+ v-if="!isLoading && event && event.special"
61
+ :style="`
62
+ background-image: url(${event.specialData.lineupBackground});
63
+ background-size: 100%; background-repeat: no-repeat;
64
+ `"
65
+ class="mn-b-thin t-white gap-big w-100 h-max o-hidden radius-big pd-big pos-relative bg-black"
66
+ >
67
+ <h2 class="mn-b-big w-100 t-center">Event Details</h2>
68
+ <div class="gap-big mn-b-thin cols-2">
69
+
70
+ <SectionSpecialGuests
71
+ :content="{
72
+ title: 'Special Guests',
73
+ description:'Enjoy a festive dining experience at The Commune, featuring a fine selection of dishes and drinks presented on your table throughout the evening.',
74
+ guests: event.specialData.guests
75
+ }"
76
+ />
77
+
78
+ <SectionLineUp
79
+ :content="{
80
+ title: 'Lineup',
81
+ lineup: event.specialData.lineup
82
+ }"
83
+ />
84
+
85
+ </div>
86
+
87
+ <SectionPreviousEvents
88
+ :content="{
89
+ ticket: event.specialData.ticketImage
90
+ }"
91
+ :options="{
92
+ link: event.specialData.ticketLinkStripe,
93
+ video: event.specialData.previousVideo
94
+ }"
95
+ />
96
+ </section>
97
+
98
+ <CardEvent
99
+ v-if="!isLoading && event && !event.special"
100
+ @click="$router.push({name: 'Event', params: {url: event.url}})"
101
+ :event="event"
102
+ :owner="event.owner"
103
+ :user="auth.state.user._id"
104
+ :type="'normal'"
105
+ class="mn-b-medium bg-grey radius-big"
106
+ >
107
+ <ButtonJoin
108
+ v-if="auth.state.user._id"
109
+ :type="'event'"
110
+ :hasTicket="event.hasTicket"
111
+ :targetId="event._id"
112
+ :userId="auth.state.user._id"
113
+ class="mn-b-small w-100 pd-medium mn-auto"
114
+ @updateTicket="handleTicketUpdate"
115
+ />
116
+
117
+ <section>
118
+ <component
119
+ v-if="event && event.content"
120
+ v-for="(block, index) in event.content"
121
+ :is="ComponentMap[block.type]"
122
+ :key="index"
123
+ :index="index"
124
+ :component="block"
125
+ :prop="block"
126
+ :class="block.class"
127
+ content="content"
128
+ v-bind="getBlockProps(block)"
129
+ class="mn-b-regular"
40
130
  />
131
+ </section>
132
+
133
+ </CardEvent>
41
134
 
42
- <section>
43
- <component
44
- v-if="event && event.content"
45
- v-for="(block, index) in event.content"
46
- :is="ComponentMap[block.type]"
47
- :key="index"
48
- :index="index"
49
- :component="block"
50
- :prop="block"
51
- :class="block.class"
52
- content="content"
53
- v-bind="getBlockProps(block)"
54
- class="mn-b-regular"
55
- />
56
- </section>
57
-
58
- </CardEvent>
59
-
60
-
61
-
62
- <Comments
63
- v-if="!isLoading && event"
64
- :type="'event'"
65
- :target="event._id"
66
- :owner="auth.state.user._id"
67
- />
68
-
69
- </TransitionGroup>
70
135
 
136
+
137
+ <Comments
138
+ v-if="!isLoading && event && !event.special"
139
+ :type="'event'"
140
+ :target="event._id"
141
+ :owner="auth.state.user._id"
142
+ />
143
+
144
+ </TransitionGroup>
145
+
71
146
  </section>
72
147
  </template>
73
148
 
@@ -76,7 +151,14 @@
76
151
 
77
152
  import Loader from '@pf/src/components/Loader/Loader.vue';
78
153
  import EmptyState from '@pf/src/components/EmptyState/EmptyState.vue';
79
-
154
+
155
+ import HeroEvent from '@pf/src/modules/events/components/sections/HeroEvent.vue';
156
+ import SectionMainGuest from '@pf/src/modules/events/components/sections/SectionMainGuest.vue';
157
+ import SectionSpecialGuests from '@pf/src/modules/events/components/sections/SectionSpecialGuests.vue'
158
+ import SectionLineUp from '@pf/src/modules/events/components/sections/SectionLineUp.vue';
159
+ import SectionPreviousEvents from '@pf/src/modules/events/components/sections/SectionPreviousEvents.vue';
160
+
161
+
80
162
  import CardEvent from '@pf/src/modules/events/components/blocks/CardEvent.vue';
81
163
  import SkeletonEvent from '@pf/src/modules/icons/skeletons/SkeletonEvent.vue'
82
164
  import ButtonJoin from '@pf/src/modules/events/components/elements/ButtonJoin.vue';
@@ -0,0 +1,161 @@
1
+ <template>
2
+ <section
3
+ class="
4
+ t-white
5
+ t-center
6
+ w-100
7
+ h-100
8
+ pos-relative
9
+ gap-thin
10
+ cols-2
11
+ pos-relative
12
+ "
13
+ >
14
+ <div
15
+ style="min-height: 20rem;"
16
+ class="desktop-only radius-big o-hidden bg-black pos-relative"
17
+ >
18
+ <video
19
+ v-if="content.video"
20
+ style="object-fit: cover;"
21
+ ref="videoElement"
22
+ class="pos-absolute pos-t-0 pos-l-0 w-100 h-100"
23
+ preload autoplay muted loop playsinlineclass playsinline :src="content.video"
24
+ itemprop="video"
25
+ type="video/webm"
26
+ >
27
+ </video>
28
+ </div>
29
+
30
+ <div
31
+ class="
32
+ content-hero-refactor
33
+ radius-big
34
+ o-hidden
35
+ bg-black
36
+ pd-big mn-r-auto mn-l-auto t-white flex-h-center flex-column o-hidden flex-v-start t-left flex w-100 h-100 gap-zero">
37
+ <!-- <img src="/logo/jungle-stereo-cosmonaut.png" class="h-8r mn-b-small z-index-1"/> -->
38
+ <div class="mn-b-big z-index-1 flex-nowrap flex gap-small">
39
+ <img v-for="logo in content.logos" class="i-big" :src="logo">
40
+ </div>
41
+
42
+ <h3 class="pd-thin z-index-1 w-max br-solid br-2px br-white radius-extra mn-b-thin">
43
+ {{content?.subtitle}}
44
+ </h3>
45
+
46
+ <h1 class="z-index-1 t-main mn-b-semi">
47
+ {{content?.title}}
48
+ </h1>
49
+
50
+ <p class="z-index-1 p-big mn-b-semi">
51
+ {{content?.description}}
52
+ </p>
53
+
54
+ <p class="z-index-1 t-transp p-small mn-b-thin">
55
+
56
+ Hurry up and purchase your ticket at a special price of only <span class="bg-white t-black pd-t-nano pd-b-nano pd-r-micro pd-l-micro radius-extra">{{options?.price}} {{returnCurrency()}}</span>
57
+ </p>
58
+
59
+
60
+ <Countdown
61
+ class="z-index-1 mn-b-small w-40"
62
+ :options="props.options"
63
+ />
64
+ <div v-if="content?.ticketLinkStripe" class="z-index-1 mn-t-medium mn-b-small flex-nowrap flex gap-thin">
65
+ <!-- <a href="#" class="pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-black bg-white ">
66
+ Sold Out
67
+ </a> -->
68
+ <a href="#" @click="clickBuyTicket()" class="pd-l-medium pd-r-medium pd-t-small pd-b-small radius-extra uppercase t-medium t-black bg-white ">
69
+ {{content?.buyticket}}
70
+ </a>
71
+ </div>
72
+
73
+ <video
74
+ v-if="content.video"
75
+ style="object-fit: cover; opacity: 0.2;"
76
+ ref="videoElement"
77
+ class="mobile-only pos-absolute z-index-0 pos-t-0 pos-l-0 w-100 h-100"
78
+ preload autoplay muted loop playsinlineclass playsinline :src="content.video"
79
+ itemprop="video"
80
+ type="video/webm"
81
+ >
82
+ </video>
83
+
84
+ </div>
85
+
86
+
87
+ </section>
88
+ </template>
89
+
90
+
91
+ <script setup>
92
+ import { useI18n } from 'vue-i18n'
93
+
94
+ import Countdown from "@pf/src/components/Countdown/Countdown.vue"
95
+
96
+ import { ref, onMounted } from 'vue'
97
+ const videoElement = ref(null)
98
+
99
+ var isPlaying = false;
100
+
101
+ function checkAndPlayVideo() {
102
+ // Initializing values
103
+
104
+ // On video playing toggle values
105
+ videoElement.value.onplaying = function() {
106
+ isPlaying = true;
107
+ };
108
+
109
+ // On video pause toggle values
110
+ videoElement.value.onpause = function() {
111
+ isPlaying = false;
112
+ };
113
+ }
114
+
115
+ // Play video function
116
+ async function playVid() {
117
+ if (videoElement.value.paused && !isPlaying) {
118
+ return videoElement.value.play();
119
+ }
120
+ }
121
+
122
+ onMounted(() => {
123
+ checkAndPlayVideo()
124
+ playVid()
125
+ })
126
+
127
+
128
+ const props = defineProps({
129
+ content: {
130
+ type: Object
131
+ },
132
+ options: {
133
+ type: Object
134
+ }
135
+ })
136
+
137
+
138
+ function clickBuyTicket () {
139
+ gtag('event', 'buy_ticket', {
140
+ 'event_category': 'conversion',
141
+ 'event_label': 'Buy Ticket'
142
+ });
143
+
144
+ window.open(props.content?.ticketLinkStripe);
145
+
146
+ }
147
+ </script>
148
+
149
+ <style lang="scss" scoped>
150
+ @media screen and (max-width: 1025px) {
151
+ .content-hero-refactor {
152
+ text-align: center;
153
+ }
154
+
155
+ h3, div {
156
+ margin-left: auto;
157
+ margin-right: auto;
158
+ }
159
+ }
160
+
161
+ </style>
@@ -0,0 +1,42 @@
1
+ <template>
2
+ <div class="br-1px bg-blur-extra br-solid br-white-transp-20 radius-big o-hidden pos-relative">
3
+ <h3 class="t-center w-100 pd-small br-b br-white-transp-20 br-solid">{{content?.title || 'Event Program'}}</h3>
4
+
5
+ <div
6
+ v-if="content?.lineup"
7
+ v-for="(event, index) in content.lineup"
8
+ :class="{'br-solid br-b br-white-transp-10': index < content.lineup.length - 1}"
9
+ class="flex-column flex-h-center t-center pd-medium flex w-100 gap-zero"
10
+ >
11
+
12
+ <h5 class="t-main t-nye204 mn-b-small">
13
+ {{event.djs}}
14
+ </h5>
15
+
16
+ <h4 class="t-unna t-nye204 mn-b-thin">
17
+ {{event.name}}
18
+ </h4>
19
+ <span class="t-semi mn-b-thin mn-l-auto mn-r-auto pd-thin radius-extra br-solid br-2px br-main t-main w-max">
20
+ {{event.time}}
21
+ </span>
22
+
23
+ <p class="p-medium t-transp">
24
+ {{event.description}}
25
+ </p>
26
+ </div>
27
+ </div>
28
+ </template>
29
+
30
+
31
+ <script setup>
32
+ import { useI18n } from 'vue-i18n'
33
+
34
+ const props = defineProps({
35
+ content: {
36
+ type: Object
37
+ }
38
+ })
39
+ </script>
40
+
41
+ <style lang="scss">
42
+ </style>
@@ -0,0 +1,104 @@
1
+ <template>
2
+
3
+ <div id="mainguest" class="o-hidden bg-black t-white pos-relative radius-big gap-zero pos-relative cols-2">
4
+
5
+ <div class="pd-big pos-relative flex-column flex w-100 h-100 gap-zero">
6
+ <Socials
7
+ :telegram="content?.socials?.telegram"
8
+ :facebook="content?.socials?.facebook"
9
+ :instagram="content?.socials?.instagram"
10
+ :twitter="content?.socials?.twitter"
11
+ class="mn-b-semi"
12
+ />
13
+
14
+ <h2 class="mn-b-big">
15
+ {{content?.title}}
16
+ </h2>
17
+
18
+ <p class="p-medium" v-html="content?.description"/>
19
+ <slot></slot>
20
+ <iframe class="radius-big o-hidden mn-t-medium" v-if="content?.soundcloud" width="100%" height="200" scrolling="no" frameborder="no" allow="autoplay"
21
+ :src="`https://w.soundcloud.com/player/?url=https%3A//soundcloud.com/${content.soundcloud}
22
+ &color=%23ff5500&auto_play=false&hide_related=false
23
+ &show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true`">
24
+ </iframe>
25
+ <iframe
26
+ v-if="content?.spotify"
27
+ :src="`https://open.spotify.com/embed/track/${content?.spotify}?utm_source=generator`"
28
+ width="100%"
29
+ height="152"
30
+ frameBorder="0"
31
+ allowfullscreen=""
32
+ allow="autoplay; clipboard-write; encrypted-media; fullscreen; picture-in-picture"
33
+ loading="lazy"
34
+ class="mn-t-big"
35
+ ></iframe>
36
+ </div>
37
+
38
+ <div style="min-height: 20rem;" class="o-hidden pos-relative">
39
+ <video
40
+ :src="content?.video"
41
+ itemprop="video"
42
+ type="video/mp4"
43
+ ref="videoElement"
44
+ class="pos-absolute pos-t-0 pos-l-0 w-100 h-100 object-fit-cover"
45
+ preload autoplay muted loop playsinlineclass playsinline></video>
46
+ </div>
47
+
48
+ </div>
49
+ </template>
50
+
51
+
52
+ <script setup>
53
+ import { useI18n } from 'vue-i18n'
54
+
55
+ import { ref, onMounted } from 'vue';
56
+
57
+ import { Socials } from '@ozdao/prometheus-framework/modules/organizations/client'
58
+
59
+ const props = defineProps({
60
+ content: {
61
+ type: Object
62
+ }
63
+ })
64
+
65
+ const videoElement = ref(null)
66
+ let isPlaying = false;
67
+
68
+ function checkAndPlayVideo() {
69
+ // Initializing values
70
+
71
+ // On video playing toggle values
72
+ videoElement.value.onplaying = function() {
73
+ isPlaying = true;
74
+ };
75
+
76
+ // On video pause toggle values
77
+ videoElement.value.onpause = function() {
78
+ isPlaying = false;
79
+ };
80
+ }
81
+
82
+ // Play video function
83
+ async function playVid() {
84
+ if (videoElement.value.paused && !isPlaying) {
85
+ return videoElement.value.play();
86
+ }
87
+ }
88
+
89
+ onMounted(() => {
90
+ checkAndPlayVideo()
91
+ playVid()
92
+ })
93
+
94
+ </script>
95
+
96
+ <style lang="scss">
97
+ @media screen and (max-width: 1025px) {
98
+ #mainguest {
99
+ > div:first-of-type {
100
+ order: 2;
101
+ }
102
+ }
103
+ }
104
+ </style>
@@ -0,0 +1,119 @@
1
+ <template>
2
+
3
+ <div class="cols-2 gap-big pos-relative ">
4
+ <div class="cols-1 gap-small ">
5
+ <a v-if="options?.link" @click="clickBuyTicket()" href="#" class="bg-main flex-child-grow-1 flex-child-shrink-0 flex-child-basis-auto o-hidden radius-big pd-big flex-center flex-column flex w-100 gap-zero">
6
+ <img class="w-100" :src="content?.ticket">
7
+
8
+ <a class="t-white bg-black pd-l-medium pd-b-thin pd-t-thin pd-r-small h4 radius-extra uppercase t-nye204">
9
+ <!-- SOLD OUT -->
10
+ {{t('nye2024.buyticket')}}
11
+ </a>
12
+
13
+ </a>
14
+
15
+ <p class="pd-small radius-big bg-second flex flex-center gap-small p-medium t-medium t-white">
16
+ <span>For extra payment options contact</span>
17
+ <a class="t-black bg-white radius-extra pd-thin" href="https://t.me/thecommunebar" target="_blank">@thecommunebar</a>
18
+ </p>
19
+ </div>
20
+
21
+ <div class="br-solid br-1px br-white-transp-10 o-hidden radius-big bg-black ">
22
+ <video v-if="options?.video" style="max-height: 20rem; object-fit: cover;" ref="videoElement" class="pos-t-0 pos-l-0 w-100 h-auto" preload autoplay muted loop playsinlineclass playsinline :src="options?.video" itemprop="video" type="video/mp4" ></video>
23
+
24
+
25
+ <div class="pd-big flex-column flex w-100 h-100 gap-zero">
26
+ <h3 class="t-unna t-nye204 mn-b-small">
27
+ {{t('nye2024.title')}}
28
+ </h3>
29
+
30
+ <p class="p-medium t-transp mn-b-big">
31
+ {{t('nye2024.description')}}
32
+ </p>
33
+
34
+ <div class="flex-nowrap flex gap-thin">
35
+ <a href="https://www.instagram.com/thecommune.phuket/" target="_blank" class="pd-l-medium pd-r-medium pd-t-small pd-b-small t-black radius-extra uppercase t-medium bg-white">
36
+ {{t('nye2024.checkinblog')}}
37
+ </a>
38
+ </div>
39
+ </div>
40
+ </div>
41
+
42
+
43
+ </div>
44
+ </template>
45
+
46
+
47
+ <script setup>
48
+ import { ref, onMounted } from 'vue'
49
+ import { useI18n } from 'vue-i18n'
50
+
51
+
52
+ const props = defineProps({
53
+ content: {
54
+ type: Object
55
+ },
56
+ options: {
57
+ type: Object
58
+ }
59
+ })
60
+
61
+
62
+
63
+ const { t } = useI18n({
64
+ messages: {
65
+ en:{
66
+ "nye2024":{
67
+ "title":"Explore our exclusive party archive",
68
+ "titleTicket":"Are you ready?",
69
+ "description":"Experience the ultimate party vibe at The Commune! Elevate your evening with distinctive and exhilarating activities, ensuring an unforgettable time. Dive into the excitement and make every moment special.",
70
+ "checkinblog":"CHECK IN INSTAGRAM",
71
+ "buyticket": "Buy Ticket Now →"
72
+ }
73
+ }
74
+ }
75
+ })
76
+
77
+ const videoElement = ref(null)
78
+
79
+ var isPlaying = false;
80
+
81
+ function checkAndPlayVideo() {
82
+ // Initializing values
83
+
84
+ // On video playing toggle values
85
+ videoElement.value.onplaying = function() {
86
+ isPlaying = true;
87
+ };
88
+
89
+ // On video pause toggle values
90
+ videoElement.value.onpause = function() {
91
+ isPlaying = false;
92
+ };
93
+ }
94
+
95
+ // Play video function
96
+ async function playVid() {
97
+ if (videoElement.value.paused && !isPlaying) {
98
+ return videoElement.value.play();
99
+ }
100
+ }
101
+
102
+ function clickBuyTicket () {
103
+ gtag('event', 'buy_ticket', {
104
+ 'event_category': 'conversion',
105
+ 'event_label': 'Buy Ticket'
106
+ });
107
+
108
+ window.open(props.options?.link);
109
+
110
+ }
111
+
112
+ onMounted(() => {
113
+ checkAndPlayVideo()
114
+ playVid()
115
+ })
116
+ </script>
117
+
118
+ <style lang="scss">
119
+ </style>
@@ -0,0 +1,47 @@
1
+ <template>
2
+
3
+ <div class="o-hidden bg-black-transp-15 bg-blur-extra t-white pos-relative radius-big gap-zero pos-relative">
4
+ <!-- <h3>Event Crew</h3> -->
5
+ <h3 class="t-center w-100 pd-small br-b br-white-transp-20 br-solid">{{content?.title}}</h3>
6
+
7
+ <div style="max-height: 100%" class="cols-1 gap-semi">
8
+ <div class="pd-medium br-solid" :class="{'br-solid br-b br-white-transp-10': index < content?.guests.length - 1}" v-for="(item, index) in content?.guests">
9
+ <div class="o-hidden mn-b-semi bg-black radius-big h-4r w-4r pos-relative">
10
+ <img class="w-100 h-100 object-fit-cover" :src='item.photo'>
11
+ </div>
12
+
13
+ <h4 class="d-block uppercase mn-b-small t-semi">{{item.name}}</h4>
14
+ <span class="t-semi mn-b-small d-block uppercase t-main">{{item.time}}</span>
15
+
16
+ <p class="t-transp mn-b-semi p-medium">{{item.description}}</p>
17
+
18
+ <Socials
19
+ v-if="item?.socials"
20
+ :telegram="item?.socials?.telegram"
21
+ :facebook="item?.socials?.facebook"
22
+ :instagram="item?.socials?.instagram"
23
+ :twitter="item?.socials?.twitter"
24
+ />
25
+
26
+
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </template>
31
+
32
+
33
+ <script setup>
34
+ import { useI18n } from 'vue-i18n'
35
+
36
+ import { Socials } from '@ozdao/prometheus-framework/modules/organizations/client'
37
+
38
+ const props = defineProps({
39
+ content: {
40
+ type: Object
41
+ }
42
+ })
43
+
44
+ </script>
45
+
46
+ <style lang="scss">
47
+ </style>
@@ -90,6 +90,7 @@ const middlewareFactory = (db) => {
90
90
  };
91
91
 
92
92
  const update = async (req, res) => {
93
+ console.log(req.body)
93
94
  try {
94
95
  const event = await Event.findOneAndUpdate({ url: req.body.url }, { $set: req.body }, { new: true }).exec();
95
96
  if (!event) {
@@ -180,6 +180,8 @@ function getProjectStage() {
180
180
  date: 1,
181
181
  numberOfTickets: 1,
182
182
  participantsPhotos: 1,
183
+ special: 1,
184
+ specialData: 1,
183
185
  hasTicket: 1,
184
186
  tickets: 1,
185
187
  createdAt: 1