PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / v3 / src / assets / js / common / events.js
ameliabooking / v3 / src / assets / js / common Last commit date
appointments.js 1 year ago attendees.js 1 year ago colorManipulation.js 3 years ago customer.js 1 year ago date.js 1 year ago defaultCustomize.js 1 year ago employee.js 1 year ago events.js 1 year ago formFieldsTemplates.js 3 years ago formatting.js 1 year ago helper.js 1 year ago image.js 1 year ago integrationApple.js 1 year ago integrationGoogle.js 1 year ago integrationOutlook.js 1 year ago integrationStripe.js 1 year ago integrationZoom.js 1 year ago licence.js 2 years ago objectAndArrayManipulation.js 3 years ago pricing.js 1 year ago recurring.js 1 year ago responsive.js 1 year ago scrollElements.js 4 years ago settings.js 1 year ago translationsElementPlus.js 1 year ago
events.js
293 lines
1 import moment from "moment";
2 import {settings} from "../../../plugins/settings";
3 import {usePopulateSettings} from "./settings";
4
5 function useFrontEvent (store, event) {
6 let defaultEvent = store.getters['event/getDefaultEvent']
7
8 let customTicketsRanges = []
9
10 let bookedTickets = {}
11
12 if (event.customTickets.length) {
13 event.bookings.forEach((booking) => {
14 booking.ticketsData.forEach((ticket) => {
15 bookedTickets[ticket.eventTicketId] = true
16 })
17 })
18 }
19
20 event.customTickets.forEach((customTicket) => {
21 JSON.parse(customTicket.dateRanges).forEach((customTicketRange, index) => {
22 if (!(index in customTicketsRanges)) {
23 customTicketsRanges.push({
24 enabled: customTicketRange.enabled,
25 range: [
26 moment(customTicketRange.startDate, 'YYYY-MM-DD').toDate(),
27 moment(customTicketRange.endDate, 'YYYY-MM-DD').toDate()
28 ],
29 tickets: [],
30 })
31 }
32
33 customTicketsRanges[index].tickets.push({price: customTicketRange.price})
34 })
35
36 customTicket.booked = customTicket.id in bookedTickets
37 })
38
39 let descriptionMode = !event.description || event.description.startsWith('<!-- Content -->') ? 'text' : 'html'
40
41 let description = event.description ? event.description.replace('<!-- Content -->', '') : ''
42
43 return Object.assign(
44 {},
45 event,
46 {
47 description: description,
48 descriptionMode: descriptionMode,
49 tags: event.tags.map(i => i.name),
50 organizerId: event.organizerId,
51 periods: event.periods.map(i => new Object({
52 id: i.id,
53 eventId: i.eventId,
54 appleCalendarEventId: i.appleCalendarEventId,
55 googleCalendarEventId: i.googleCalendarEventId,
56 googleMeetUrl: i.googleMeetUrl,
57 outlookCalendarEventId: i.outlookCalendarEventId,
58 startDate: moment(i.periodStart.split(' ')[0], 'YYYY-MM-DD').toDate(),
59 endDate: moment(i.periodEnd.split(' ')[0], 'YYYY-MM-DD').toDate(),
60 startTime: i.periodStart.split(' ')[1].substring(0, 5),
61 endTime: i.periodEnd.split(' ')[1].substring(0, 5),
62 })),
63 bookingOpens: {
64 disabled: event.bookingOpens === null,
65 date: event.bookingOpens
66 ? moment(event.bookingOpens.split(' ')[0], 'YYYY-MM-DD').toDate()
67 : null,
68 time: event.bookingOpens
69 ? event.bookingOpens.split(' ')[1].substring(0, 5)
70 : null,
71 },
72 bookingOpensRec: event.bookingOpensRec === 'same',
73 bookingCloses: {
74 disabled: event.bookingCloses === null,
75 date: event.bookingCloses
76 ? moment(event.bookingCloses.split(' ')[0], 'YYYY-MM-DD').toDate()
77 : null,
78 time: event.bookingCloses
79 ? event.bookingCloses.split(' ')[1].substring(0, 5)
80 : null,
81 },
82 bookingClosesRec: event.bookingClosesRec === 'same',
83 recurringEnabled: event.recurring && event.recurring.cycle !== null,
84 recurring: event.recurring !== null
85 ? Object.assign(
86 {},
87 event.recurring,
88 {
89 until: event.recurring.until
90 ? moment(event.recurring.until.split(' ')[0], 'YYYY-MM-DD').toDate()
91 : null,
92 monthDate: event.recurring.monthDate
93 ? moment(event.recurring.monthDate.split(' ')[0], 'YYYY-MM-DD').toDate()
94 : null,
95 }
96 )
97 : defaultEvent.recurring,
98 depositEnabled: event.depositPayment !== 'disabled',
99 depositPayment: event.depositPayment !== 'disabled' ? event.depositPayment : 'percentage',
100 customTicketsRangesEnabled: customTicketsRanges.length > 0,
101 customTicketsRanges: customTicketsRanges,
102 maxCustomCapacity: event.maxCustomCapacity === null ? 1 : event.maxCustomCapacity,
103 maxCustomCapacityEnabled: event.maxCustomCapacity !== null,
104 closeAfterMinEnabled: event.closeAfterMin > 0,
105 closeAfterMinBookings: event.closeAfterMinBookings ? 'on' : 'off',
106 maxExtraPeopleEnabled: !!event.maxExtraPeople,
107 locationId: event.locationId === null && event.customLocation ? 0 : event.locationId,
108 settings: usePopulateSettings(
109 settings,
110 defaultEvent.settings,
111 event.settings ? JSON.parse(event.settings) : {},
112 {}
113 ),
114 }
115 )
116 }
117
118 function useBackEvent (store) {
119 let defaultEvent = store.getters['event/getDefaultEvent']
120
121 let customTickets = []
122
123 store.getters['event/getCustomTickets'].forEach((customTicket, index) => {
124 let dateRanges = []
125
126 store.getters['event/getCustomTicketsRanges'].filter(i => i.range[0] && i.range[1]).forEach((customTicketRange) => {
127 dateRanges.push({
128 startDate: moment(customTicketRange.range[0]).format('YYYY-MM-DD'),
129 endDate: moment(customTicketRange.range[1]).format('YYYY-MM-DD'),
130 price: customTicketRange.tickets[index].price,
131 })
132 })
133
134 customTickets.push(Object.assign({}, customTicket, {dateRanges: JSON.stringify(dateRanges)}))
135 })
136
137 let eventSettings = usePopulateSettings(
138 usePopulateSettings(settings, defaultEvent.settings, {}, {}),
139 defaultEvent.settings,
140 store.getters['event/getSettings'],
141 {}
142 )
143
144 Object.keys(store.getters['event/getSettings']).forEach((groupKey) => {
145 Object.keys(store.getters['event/getSettings'][groupKey]).forEach((subKey) => {
146 if (store.getters['event/getSettings'][groupKey][subKey] !== null &&
147 typeof store.getters['event/getSettings'][groupKey][subKey] === 'object'
148 ) {
149 Object.keys(store.getters['event/getSettings'][groupKey][subKey]).forEach((key) => {
150 if (store.getters['event/getSettings'][groupKey][subKey][key] === settings[groupKey][subKey][key] ||
151 (
152 settings[groupKey][subKey][key] &&
153 (
154 store.getters['event/getSettings'][groupKey][subKey][key] === '' ||
155 store.getters['event/getSettings'][groupKey][subKey][key] === null
156 )
157 )
158 ) {
159 delete eventSettings[groupKey][subKey][key]
160 }
161 })
162
163 if (typeof eventSettings[groupKey][subKey] === 'object' &&
164 Object.keys(eventSettings[groupKey][subKey]).length === 0
165 ) {
166 delete eventSettings[groupKey][subKey]
167 }
168 } else {
169 if (groupKey in settings &&
170 subKey in settings[groupKey] &&
171 (
172 eventSettings[groupKey][subKey] === settings[groupKey][subKey] ||
173 (
174 settings[groupKey][subKey] &&
175 (
176 store.getters['event/getSettings'][groupKey][subKey] === '' ||
177 store.getters['event/getSettings'][groupKey][subKey] === null
178 )
179 )
180 )
181 ) {
182 delete eventSettings[groupKey][subKey]
183 }
184 }
185 })
186
187 if (Object.keys(eventSettings[groupKey]).length === 0) {
188 delete eventSettings[groupKey]
189 }
190 })
191
192 return {
193 aggregatedPrice: store.getters['event/getAggregatedPrice'],
194 bookMultipleTimes: store.getters['event/getBookMultipleTimes'],
195 bookingCloses:
196 !store.getters['event/getBookingClosesDisabled'] &&
197 store.getters['event/getBookingClosesDate'] &&
198 store.getters['event/getBookingClosesTime']
199 ? moment(store.getters['event/getBookingClosesDate']).format('YYYY-MM-DD') + ' ' + store.getters['event/getBookingClosesTime'] + ':00'
200 : null,
201 bookingClosesRec: store.getters['event/getBookingClosesRec'] ? 'same' : 'calculate',
202 bookingOpens:
203 !store.getters['event/getBookingOpensDisabled'] &&
204 store.getters['event/getBookingOpensDate'] &&
205 store.getters['event/getBookingOpensTime']
206 ? moment(store.getters['event/getBookingOpensDate']).format('YYYY-MM-DD') + ' ' + store.getters['event/getBookingOpensTime'] + ':00'
207 : null,
208 bookingOpensRec: store.getters['event/getBookingOpensRec'] ? 'same' : 'calculate',
209 bringingAnyone: store.getters['event/getBringingAnyone'],
210 closeAfterMin: store.getters['event/getCloseAfterMin'],
211 closeAfterMinBookings: store.getters['event/getCloseAfterMinBookings'],
212 color: store.getters['event/getColor'],
213 customLocation: store.getters['event/getCustomLocation'],
214 customPricing: store.getters['event/getCustomPricing'],
215 customTickets: customTickets,
216 deposit: store.getters['event/getDeposit'],
217 depositPayment: store.getters['event/getDepositEnabled'] ? store.getters['event/getDepositPayment'] : 'disabled',
218 depositPerPerson: store.getters['event/getDepositPerPerson'],
219 description: store.getters['event/getDescription'] && store.getters['event/getDescriptionMode'] === 'text'
220 ? '<!-- Content -->' + store.getters['event/getDescription']
221 : store.getters['event/getDescription'],
222 fullPayment: store.getters['event/getFullPayment'],
223 gallery: store.getters['event/getGallery'],
224 id: store.getters['event/getId'],
225 locationId: store.getters['event/getLocationId'] === 0 ? null : store.getters['event/getLocationId'],
226 maxCapacity: store.getters['event/getMaxCapacity'],
227 maxCustomCapacity: store.getters['event/getMaxCustomCapacityEnabled'] ? store.getters['event/getMaxCustomCapacity'] : null,
228 maxExtraPeople: store.getters['event/getMaxExtraPeopleEnabled'] ? store.getters['event/getMaxExtraPeople'] : null,
229 name: store.getters['event/getName'],
230 notifyParticipants: store.getters['event/getNotifyParticipants'],
231 organizerId: store.getters['event/getOrganizerId'],
232 parentId: store.getters['event/getParentId'],
233 periods: useEventPeriods(store),
234 price: store.getters['event/getPrice'],
235 providers: !store.getters['event/getId']
236 ? [{
237 id: store.getters['auth/getProfile'].id,
238 firstName: store.getters['auth/getProfile'].firstName,
239 lastName: store.getters['auth/getProfile'].lastName,
240 email: store.getters['auth/getProfile'].email,
241 type: 'provider',
242 }]
243 : store.getters['event/getProviders'],
244 recurring: store.getters['event/getRecurringEnabled']
245 ? Object.assign(
246 {},
247 store.getters['event/getRecurring'],
248 {
249 until: moment(store.getters['event/getRecurringUntil']).format('YYYY-MM-DD'),
250 monthDate: store.getters['event/getRecurringMonthDate']
251 ? moment(store.getters['event/getRecurringMonthDate']).format('YYYY-MM-DD')
252 : null,
253 }
254 )
255 : null,
256 settings: Object.keys(eventSettings).length ? JSON.stringify(eventSettings) : null,
257 show: store.getters['event/getShow'],
258 tags: store.getters['event/getTags'].map(i => new Object({name: i})),
259 timeZone: store.getters['cabinet/getTimeZone'],
260 translations: store.getters['event/getTranslations'],
261 utc: store.getters['cabinet/getTimeZone'] === 'UTC',
262 zoomUserId: store.getters['event/getZoomUserId'],
263 }
264 }
265
266 function useEventPeriods (store) {
267 return store.getters['event/getPeriods'].map(
268 i => new Object(
269 {
270 id: i.id,
271 eventId: i.eventId,
272 appleCalendarEventId: i.appleCalendarEventId,
273 googleCalendarEventId: i.googleCalendarEventId,
274 googleMeetUrl: i.googleMeetUrl,
275 outlookCalendarEventId: i.outlookCalendarEventId,
276 microsoftTeamsUrl: i.microsoftTeamsUrl,
277 periodStart: store.getters['cabinet/getTimeZone'] === 'UTC'
278 ? moment(i.startDate).utc().format('YYYY-MM-DD') + ' ' + i.startTime + ':00'
279 : moment(i.startDate).format('YYYY-MM-DD') + ' ' + i.startTime + ':00',
280 periodEnd: store.getters['cabinet/getTimeZone'] === 'UTC'
281 ? moment(i.endDate).utc().format('YYYY-MM-DD') + ' ' + i.endTime + ':00'
282 : moment(i.endDate).format('YYYY-MM-DD') + ' ' + i.endTime + ':00',
283 }
284 )
285 )
286 }
287
288 export {
289 useFrontEvent,
290 useBackEvent,
291 useEventPeriods,
292 }
293