PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 2.4.4
Booking for Appointments and Events Calendar – Amelia v2.4.4
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 6 days ago attendees.js 6 days ago colorManipulation.js 6 days ago customer.js 6 days ago date.js 6 days ago defaultCustomize.js 6 days ago employee.js 6 days ago events.js 6 days ago formFieldsTemplates.js 6 days ago formatting.js 6 days ago helper.js 6 days ago image.js 6 days ago integrationApple.js 6 days ago integrationGoogle.js 6 days ago integrationOutlook.js 6 days ago integrationStripe.js 6 days ago integrationZoom.js 6 days ago licence.js 6 days ago phone.js 6 days ago pricing.js 6 days ago recurring.js 6 days ago responsive.js 6 days ago scrollElements.js 6 days ago settings.js 6 days ago translationsElementPlus.js 6 days ago utilHeaderHeight.js 6 days ago
events.js
296 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 =
40 !event.description || event.description.startsWith('<!-- Content -->') ? 'text' : 'html'
41
42 let description = event.description ? event.description.replace('<!-- Content -->', '') : ''
43
44 return Object.assign({}, event, {
45 description: description,
46 descriptionMode: descriptionMode,
47 tags: event.tags.map((i) => i.name),
48 organizerId: event.organizerId,
49 periods: event.periods.map(
50 (i) =>
51 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 ),
64 bookingOpens: {
65 disabled: event.bookingOpens === null,
66 date: event.bookingOpens
67 ? moment(event.bookingOpens.split(' ')[0], 'YYYY-MM-DD').toDate()
68 : null,
69 time: event.bookingOpens ? event.bookingOpens.split(' ')[1].substring(0, 5) : null,
70 },
71 bookingOpensRec: event.bookingOpensRec === 'same',
72 bookingCloses: {
73 disabled: event.bookingCloses === null,
74 date: event.bookingCloses
75 ? moment(event.bookingCloses.split(' ')[0], 'YYYY-MM-DD').toDate()
76 : null,
77 time: event.bookingCloses ? event.bookingCloses.split(' ')[1].substring(0, 5) : null,
78 },
79 bookingClosesRec: event.bookingClosesRec === 'same',
80 recurringEnabled: event.recurring && event.recurring.cycle !== null,
81 recurring:
82 event.recurring !== null
83 ? Object.assign({}, event.recurring, {
84 until: event.recurring.until
85 ? moment(event.recurring.until.split(' ')[0], 'YYYY-MM-DD').toDate()
86 : null,
87 monthDate: event.recurring.monthDate
88 ? moment(event.recurring.monthDate.split(' ')[0], 'YYYY-MM-DD').toDate()
89 : null,
90 })
91 : defaultEvent.recurring,
92 depositEnabled: event.depositPayment !== 'disabled',
93 depositPayment: event.depositPayment !== 'disabled' ? event.depositPayment : 'percentage',
94 customTicketsRangesEnabled: customTicketsRanges.length > 0,
95 customTicketsRanges: customTicketsRanges,
96 maxCustomCapacity: event.maxCustomCapacity === null ? 1 : event.maxCustomCapacity,
97 maxCustomCapacityEnabled: event.maxCustomCapacity !== null,
98 closeAfterMinEnabled: event.closeAfterMin !== null,
99 closeAfterMinBookings: event.closeAfterMinBookings,
100 closeAfterMin: event.closeAfterMin === null ? 1 : event.closeAfterMin,
101 maxExtraPeopleEnabled: event.maxExtraPeople !== null,
102 maxExtraPeople: event.maxExtraPeople === null ? 0 : event.maxExtraPeople,
103 locationId: event.locationId === null && event.customLocation ? 0 : event.locationId,
104 settings: usePopulateSettings(
105 settings,
106 defaultEvent.settings,
107 event.settings ? JSON.parse(event.settings) : {},
108 {},
109 ),
110 })
111 }
112
113 function useBackEvent(store) {
114 let defaultEvent = store.getters['event/getDefaultEvent']
115
116 let customTickets = []
117
118 store.getters['event/getCustomTickets'].forEach((customTicket, index) => {
119 let dateRanges = []
120
121 store.getters['event/getCustomTicketsRanges']
122 .filter((i) => i.range[0] && i.range[1])
123 .forEach((customTicketRange) => {
124 dateRanges.push({
125 startDate: moment(customTicketRange.range[0]).format('YYYY-MM-DD'),
126 endDate: moment(customTicketRange.range[1]).format('YYYY-MM-DD'),
127 price: customTicketRange.tickets[index].price,
128 })
129 })
130
131 customTickets.push(Object.assign({}, customTicket, { dateRanges: JSON.stringify(dateRanges) }))
132 })
133
134 let eventSettings = usePopulateSettings(
135 usePopulateSettings(settings, defaultEvent.settings, {}, {}),
136 defaultEvent.settings,
137 store.getters['event/getSettings'],
138 {},
139 )
140
141 Object.keys(store.getters['event/getSettings']).forEach((groupKey) => {
142 Object.keys(store.getters['event/getSettings'][groupKey]).forEach((subKey) => {
143 if (
144 store.getters['event/getSettings'][groupKey][subKey] !== null &&
145 typeof store.getters['event/getSettings'][groupKey][subKey] === 'object'
146 ) {
147 Object.keys(store.getters['event/getSettings'][groupKey][subKey]).forEach((key) => {
148 if (
149 store.getters['event/getSettings'][groupKey][subKey][key] ===
150 settings[groupKey][subKey][key] ||
151 (settings[groupKey][subKey][key] &&
152 (store.getters['event/getSettings'][groupKey][subKey][key] === '' ||
153 store.getters['event/getSettings'][groupKey][subKey][key] === null))
154 ) {
155 delete eventSettings[groupKey][subKey][key]
156 }
157 })
158
159 if (
160 typeof eventSettings[groupKey][subKey] === 'object' &&
161 Object.keys(eventSettings[groupKey][subKey]).length === 0
162 ) {
163 delete eventSettings[groupKey][subKey]
164 }
165 } else {
166 if (
167 groupKey in settings &&
168 subKey in settings[groupKey] &&
169 (eventSettings[groupKey][subKey] === settings[groupKey][subKey] ||
170 (settings[groupKey][subKey] &&
171 (store.getters['event/getSettings'][groupKey][subKey] === '' ||
172 store.getters['event/getSettings'][groupKey][subKey] === null)))
173 ) {
174 delete eventSettings[groupKey][subKey]
175 }
176 }
177 })
178
179 if (Object.keys(eventSettings[groupKey]).length === 0) {
180 delete eventSettings[groupKey]
181 }
182 })
183
184 return {
185 aggregatedPrice: store.getters['event/getAggregatedPrice'],
186 bookMultipleTimes: store.getters['event/getBookMultipleTimes'],
187 bookingCloses:
188 !store.getters['event/getBookingClosesDisabled'] &&
189 store.getters['event/getBookingClosesDate'] &&
190 store.getters['event/getBookingClosesTime']
191 ? moment(store.getters['event/getBookingClosesDate']).format('YYYY-MM-DD') +
192 ' ' +
193 store.getters['event/getBookingClosesTime'] +
194 ':00'
195 : null,
196 bookingClosesRec: store.getters['event/getBookingClosesRec'] ? 'same' : 'calculate',
197 bookingOpens:
198 !store.getters['event/getBookingOpensDisabled'] &&
199 store.getters['event/getBookingOpensDate'] &&
200 store.getters['event/getBookingOpensTime']
201 ? moment(store.getters['event/getBookingOpensDate']).format('YYYY-MM-DD') +
202 ' ' +
203 store.getters['event/getBookingOpensTime'] +
204 ':00'
205 : null,
206 bookingOpensRec: store.getters['event/getBookingOpensRec'] ? 'same' : 'calculate',
207 bringingAnyone: store.getters['event/getBringingAnyone'],
208 closeAfterMin: store.getters['event/getCloseAfterMinEnabled']
209 ? store.getters['event/getCloseAfterMin']
210 : null,
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']
218 ? store.getters['event/getDepositPayment']
219 : 'disabled',
220 depositPerPerson: store.getters['event/getDepositPerPerson'],
221 description:
222 store.getters['event/getDescription'] && store.getters['event/getDescriptionMode'] === 'text'
223 ? '<!-- Content -->' + store.getters['event/getDescription']
224 : store.getters['event/getDescription'],
225 fullPayment: store.getters['event/getFullPayment'],
226 gallery: store.getters['event/getGallery'],
227 id: store.getters['event/getId'],
228 locationId:
229 store.getters['event/getLocationId'] === 0 ? null : store.getters['event/getLocationId'],
230 maxCapacity: store.getters['event/getMaxCapacity'],
231 maxCustomCapacity: store.getters['event/getMaxCustomCapacityEnabled']
232 ? store.getters['event/getMaxCustomCapacity']
233 : null,
234 maxExtraPeople: store.getters['event/getMaxExtraPeopleEnabled']
235 ? store.getters['event/getMaxExtraPeople']
236 : null,
237 name: store.getters['event/getName'],
238 notifyParticipants: store.getters['event/getNotifyParticipants'],
239 organizerId: store.getters['event/getOrganizerId'],
240 parentId: store.getters['event/getParentId'],
241 periods: useEventPeriods(store),
242 price: store.getters['event/getPrice'],
243 providers: !store.getters['event/getId']
244 ? [
245 {
246 id: store.getters['auth/getProfile'].id,
247 firstName: store.getters['auth/getProfile'].firstName,
248 lastName: store.getters['auth/getProfile'].lastName,
249 email: store.getters['auth/getProfile'].email,
250 type: 'provider',
251 },
252 ]
253 : store.getters['event/getProviders'],
254 recurring: store.getters['event/getRecurringEnabled']
255 ? Object.assign({}, store.getters['event/getRecurring'], {
256 until: moment(store.getters['event/getRecurringUntil']).format('YYYY-MM-DD'),
257 monthDate: store.getters['event/getRecurringMonthDate']
258 ? moment(store.getters['event/getRecurringMonthDate']).format('YYYY-MM-DD')
259 : null,
260 })
261 : null,
262 settings: Object.keys(eventSettings).length ? JSON.stringify(eventSettings) : null,
263 show: store.getters['event/getShow'],
264 tags: store.getters['event/getTags'].map((i) => new Object({ name: i })),
265 timeZone: store.getters['cabinet/getTimeZone'],
266 translations: store.getters['event/getTranslations'],
267 utc: store.getters['cabinet/getTimeZone'] === 'UTC',
268 zoomUserId: store.getters['event/getZoomUserId'],
269 }
270 }
271
272 function useEventPeriods(store) {
273 return store.getters['event/getPeriods'].map(
274 (i) =>
275 new Object({
276 id: i.id,
277 eventId: i.eventId,
278 appleCalendarEventId: i.appleCalendarEventId,
279 googleCalendarEventId: i.googleCalendarEventId,
280 googleMeetUrl: i.googleMeetUrl,
281 outlookCalendarEventId: i.outlookCalendarEventId,
282 microsoftTeamsUrl: i.microsoftTeamsUrl,
283 periodStart:
284 store.getters['cabinet/getTimeZone'] === 'UTC'
285 ? moment(i.startDate).utc().format('YYYY-MM-DD') + ' ' + i.startTime + ':00'
286 : moment(i.startDate).format('YYYY-MM-DD') + ' ' + i.startTime + ':00',
287 periodEnd:
288 store.getters['cabinet/getTimeZone'] === 'UTC'
289 ? moment(i.endDate).utc().format('YYYY-MM-DD') + ' ' + i.endTime + ':00'
290 : moment(i.endDate).format('YYYY-MM-DD') + ' ' + i.endTime + ':00',
291 }),
292 )
293 }
294
295 export { useFrontEvent, useBackEvent, useEventPeriods }
296