FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
v3
/
src
/
assets
/
js
/
common
Edit File: events.js
import moment from "moment"; import {settings} from "../../../plugins/settings"; import {usePopulateSettings} from "./settings"; function useFrontEvent (store, event) { let defaultEvent = store.getters['event/getDefaultEvent'] let customTicketsRanges = [] let bookedTickets = {} if (event.customTickets.length) { event.bookings.forEach((booking) => { booking.ticketsData.forEach((ticket) => { bookedTickets[ticket.eventTicketId] = true }) }) } event.customTickets.forEach((customTicket) => { JSON.parse(customTicket.dateRanges).forEach((customTicketRange, index) => { if (!(index in customTicketsRanges)) { customTicketsRanges.push({ enabled: customTicketRange.enabled, range: [ moment(customTicketRange.startDate, 'YYYY-MM-DD').toDate(), moment(customTicketRange.endDate, 'YYYY-MM-DD').toDate() ], tickets: [], }) } customTicketsRanges[index].tickets.push({price: customTicketRange.price}) }) customTicket.booked = customTicket.id in bookedTickets }) let descriptionMode = !event.description || event.description.startsWith('<!-- Content -->') ? 'text' : 'html' let description = event.description ? event.description.replace('<!-- Content -->', '') : '' return Object.assign( {}, event, { description: description, descriptionMode: descriptionMode, tags: event.tags.map(i => i.name), organizerId: event.organizerId, periods: event.periods.map(i => new Object({ id: i.id, eventId: i.eventId, appleCalendarEventId: i.appleCalendarEventId, googleCalendarEventId: i.googleCalendarEventId, googleMeetUrl: i.googleMeetUrl, outlookCalendarEventId: i.outlookCalendarEventId, startDate: moment(i.periodStart.split(' ')[0], 'YYYY-MM-DD').toDate(), endDate: moment(i.periodEnd.split(' ')[0], 'YYYY-MM-DD').toDate(), startTime: i.periodStart.split(' ')[1].substring(0, 5), endTime: i.periodEnd.split(' ')[1].substring(0, 5), })), bookingOpens: { disabled: event.bookingOpens === null, date: event.bookingOpens ? moment(event.bookingOpens.split(' ')[0], 'YYYY-MM-DD').toDate() : null, time: event.bookingOpens ? event.bookingOpens.split(' ')[1].substring(0, 5) : null, }, bookingOpensRec: event.bookingOpensRec === 'same', bookingCloses: { disabled: event.bookingCloses === null, date: event.bookingCloses ? moment(event.bookingCloses.split(' ')[0], 'YYYY-MM-DD').toDate() : null, time: event.bookingCloses ? event.bookingCloses.split(' ')[1].substring(0, 5) : null, }, bookingClosesRec: event.bookingClosesRec === 'same', recurringEnabled: event.recurring && event.recurring.cycle !== null, recurring: event.recurring !== null ? Object.assign( {}, event.recurring, { until: event.recurring.until ? moment(event.recurring.until.split(' ')[0], 'YYYY-MM-DD').toDate() : null, monthDate: event.recurring.monthDate ? moment(event.recurring.monthDate.split(' ')[0], 'YYYY-MM-DD').toDate() : null, } ) : defaultEvent.recurring, depositEnabled: event.depositPayment !== 'disabled', depositPayment: event.depositPayment !== 'disabled' ? event.depositPayment : 'percentage', customTicketsRangesEnabled: customTicketsRanges.length > 0, customTicketsRanges: customTicketsRanges, maxCustomCapacity: event.maxCustomCapacity === null ? 1 : event.maxCustomCapacity, maxCustomCapacityEnabled: event.maxCustomCapacity !== null, closeAfterMinEnabled: event.closeAfterMin !== null, closeAfterMinBookings: event.closeAfterMinBookings, closeAfterMin: event.closeAfterMin === null ? 1 : event.closeAfterMin, maxExtraPeopleEnabled: event.maxExtraPeople !== null, maxExtraPeople: event.maxExtraPeople === null ? 0 : event.maxExtraPeople, locationId: event.locationId === null && event.customLocation ? 0 : event.locationId, settings: usePopulateSettings( settings, defaultEvent.settings, event.settings ? JSON.parse(event.settings) : {}, {} ), } ) } function useBackEvent (store) { let defaultEvent = store.getters['event/getDefaultEvent'] let customTickets = [] store.getters['event/getCustomTickets'].forEach((customTicket, index) => { let dateRanges = [] store.getters['event/getCustomTicketsRanges'].filter(i => i.range[0] && i.range[1]).forEach((customTicketRange) => { dateRanges.push({ startDate: moment(customTicketRange.range[0]).format('YYYY-MM-DD'), endDate: moment(customTicketRange.range[1]).format('YYYY-MM-DD'), price: customTicketRange.tickets[index].price, }) }) customTickets.push(Object.assign({}, customTicket, {dateRanges: JSON.stringify(dateRanges)})) }) let eventSettings = usePopulateSettings( usePopulateSettings(settings, defaultEvent.settings, {}, {}), defaultEvent.settings, store.getters['event/getSettings'], {} ) Object.keys(store.getters['event/getSettings']).forEach((groupKey) => { Object.keys(store.getters['event/getSettings'][groupKey]).forEach((subKey) => { if (store.getters['event/getSettings'][groupKey][subKey] !== null && typeof store.getters['event/getSettings'][groupKey][subKey] === 'object' ) { Object.keys(store.getters['event/getSettings'][groupKey][subKey]).forEach((key) => { if (store.getters['event/getSettings'][groupKey][subKey][key] === settings[groupKey][subKey][key] || ( settings[groupKey][subKey][key] && ( store.getters['event/getSettings'][groupKey][subKey][key] === '' || store.getters['event/getSettings'][groupKey][subKey][key] === null ) ) ) { delete eventSettings[groupKey][subKey][key] } }) if (typeof eventSettings[groupKey][subKey] === 'object' && Object.keys(eventSettings[groupKey][subKey]).length === 0 ) { delete eventSettings[groupKey][subKey] } } else { if (groupKey in settings && subKey in settings[groupKey] && ( eventSettings[groupKey][subKey] === settings[groupKey][subKey] || ( settings[groupKey][subKey] && ( store.getters['event/getSettings'][groupKey][subKey] === '' || store.getters['event/getSettings'][groupKey][subKey] === null ) ) ) ) { delete eventSettings[groupKey][subKey] } } }) if (Object.keys(eventSettings[groupKey]).length === 0) { delete eventSettings[groupKey] } }) return { aggregatedPrice: store.getters['event/getAggregatedPrice'], bookMultipleTimes: store.getters['event/getBookMultipleTimes'], bookingCloses: !store.getters['event/getBookingClosesDisabled'] && store.getters['event/getBookingClosesDate'] && store.getters['event/getBookingClosesTime'] ? moment(store.getters['event/getBookingClosesDate']).format('YYYY-MM-DD') + ' ' + store.getters['event/getBookingClosesTime'] + ':00' : null, bookingClosesRec: store.getters['event/getBookingClosesRec'] ? 'same' : 'calculate', bookingOpens: !store.getters['event/getBookingOpensDisabled'] && store.getters['event/getBookingOpensDate'] && store.getters['event/getBookingOpensTime'] ? moment(store.getters['event/getBookingOpensDate']).format('YYYY-MM-DD') + ' ' + store.getters['event/getBookingOpensTime'] + ':00' : null, bookingOpensRec: store.getters['event/getBookingOpensRec'] ? 'same' : 'calculate', bringingAnyone: store.getters['event/getBringingAnyone'], closeAfterMin: store.getters['event/getCloseAfterMinEnabled'] ? store.getters['event/getCloseAfterMin'] : null, closeAfterMinBookings: store.getters['event/getCloseAfterMinBookings'], color: store.getters['event/getColor'], customLocation: store.getters['event/getCustomLocation'], customPricing: store.getters['event/getCustomPricing'], customTickets: customTickets, deposit: store.getters['event/getDeposit'], depositPayment: store.getters['event/getDepositEnabled'] ? store.getters['event/getDepositPayment'] : 'disabled', depositPerPerson: store.getters['event/getDepositPerPerson'], description: store.getters['event/getDescription'] && store.getters['event/getDescriptionMode'] === 'text' ? '<!-- Content -->' + store.getters['event/getDescription'] : store.getters['event/getDescription'], fullPayment: store.getters['event/getFullPayment'], gallery: store.getters['event/getGallery'], id: store.getters['event/getId'], locationId: store.getters['event/getLocationId'] === 0 ? null : store.getters['event/getLocationId'], maxCapacity: store.getters['event/getMaxCapacity'], maxCustomCapacity: store.getters['event/getMaxCustomCapacityEnabled'] ? store.getters['event/getMaxCustomCapacity'] : null, maxExtraPeople: store.getters['event/getMaxExtraPeopleEnabled'] ? store.getters['event/getMaxExtraPeople'] : null, name: store.getters['event/getName'], notifyParticipants: store.getters['event/getNotifyParticipants'], organizerId: store.getters['event/getOrganizerId'], parentId: store.getters['event/getParentId'], periods: useEventPeriods(store), price: store.getters['event/getPrice'], providers: !store.getters['event/getId'] ? [{ id: store.getters['auth/getProfile'].id, firstName: store.getters['auth/getProfile'].firstName, lastName: store.getters['auth/getProfile'].lastName, email: store.getters['auth/getProfile'].email, type: 'provider', }] : store.getters['event/getProviders'], recurring: store.getters['event/getRecurringEnabled'] ? Object.assign( {}, store.getters['event/getRecurring'], { until: moment(store.getters['event/getRecurringUntil']).format('YYYY-MM-DD'), monthDate: store.getters['event/getRecurringMonthDate'] ? moment(store.getters['event/getRecurringMonthDate']).format('YYYY-MM-DD') : null, } ) : null, settings: Object.keys(eventSettings).length ? JSON.stringify(eventSettings) : null, show: store.getters['event/getShow'], tags: store.getters['event/getTags'].map(i => new Object({name: i})), timeZone: store.getters['cabinet/getTimeZone'], translations: store.getters['event/getTranslations'], utc: store.getters['cabinet/getTimeZone'] === 'UTC', zoomUserId: store.getters['event/getZoomUserId'], } } function useEventPeriods (store) { return store.getters['event/getPeriods'].map( i => new Object( { id: i.id, eventId: i.eventId, appleCalendarEventId: i.appleCalendarEventId, googleCalendarEventId: i.googleCalendarEventId, googleMeetUrl: i.googleMeetUrl, outlookCalendarEventId: i.outlookCalendarEventId, microsoftTeamsUrl: i.microsoftTeamsUrl, periodStart: store.getters['cabinet/getTimeZone'] === 'UTC' ? moment(i.startDate).utc().format('YYYY-MM-DD') + ' ' + i.startTime + ':00' : moment(i.startDate).format('YYYY-MM-DD') + ' ' + i.startTime + ':00', periodEnd: store.getters['cabinet/getTimeZone'] === 'UTC' ? moment(i.endDate).utc().format('YYYY-MM-DD') + ' ' + i.endTime + ':00' : moment(i.endDate).format('YYYY-MM-DD') + ' ' + i.endTime + ':00', } ) ) } export { useFrontEvent, useBackEvent, useEventPeriods, }
Save
Back