FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
v3
/
src
/
assets
/
js
/
admin
Edit File: event.js
import moment from "moment"; import { useConvertedUtcToLocalDateTime } from "../common/date"; import { getNameTranslated, getTicketTranslated } from "../public/translation"; import {useAmount} from "../common/pricing"; function useParsedEvents (events, timeZone, store) { let eventsDay = {} events.forEach(event => { if (timeZone === '') { event.periods.forEach(period => { period.periodStart = useConvertedUtcToLocalDateTime(period.periodStart) period.periodEnd = useConvertedUtcToLocalDateTime(period.periodEnd) }) } let startDate = moment(event.periods[0].periodStart, 'YYYY-MM-DD HH:mm:ss') let dateString = startDate.format('YYYY-MM-DD') let availableTranslationsShort = store.getters['getSettings'].general.usedLanguages.map( key => key.length > 2 ? key.slice(0, 2) : key ) let useTranslations = store.getters['getSettings'].general.usedLanguages.indexOf(store.getters['getLocalLanguage']) !== -1 || availableTranslationsShort.indexOf(store.getters['getLocalLanguage'].split('_')[0]) !== -1 if (useTranslations) { event.name = getNameTranslated(event) event.customTickets.forEach((ticket) => { ticket.name = getTicketTranslated(ticket) }) } if (event.recurring && event.recurring.until) { event.recurring.until = event.recurring.until.split(' ')[0] } if (!(dateString in eventsDay)) { eventsDay[dateString] = { date: dateString, events: [] } } let isWaiting = event.bookings.some(booking => booking.status === 'waiting') if (event.full && event.status === 'approved') { event.status = 'full' } else if (event.upcoming && event.status === 'approved') { event.status = 'upcoming' } if (isWaiting) { event.status = 'waiting' } if (store.getters['auth/getProfile'].type === 'provider') { let clonedEvent = JSON.parse(JSON.stringify(event)) eventsDay[dateString].events.push(clonedEvent) } else { event.bookings.forEach((booking) => { let clonedEvent = JSON.parse(JSON.stringify(event)) clonedEvent.bookings = [booking] eventsDay[dateString].events.push(clonedEvent) }) } }) return eventsDay } function useEventBookingsPrice (event) { let price = 0 event.bookings.forEach((booking) => { if (['approved', 'pending'].includes(booking.status)) { let subTotal = 0 if (booking.ticketsData.length > 0) { for (let i = 0; i < booking.ticketsData.length; i++) { subTotal += booking.ticketsData[i].persons * booking.ticketsData[i].price } } else { subTotal += event.price } let amountData = useAmount( event, booking.coupon, booking.tax ? booking.tax[0] : null, subTotal, false, ) price += amountData.price - amountData.discount + amountData.tax } }) return price >= 0 ? price : 0 } function usePeriodsData(connectedPeriods) { let result = [] connectedPeriods.forEach((period) => { let startDate = moment(period.periodStart.split(' ')[0], 'YYYY-MM-DD') let endDate = moment(period.periodEnd.split(' ')[0], 'YYYY-MM-DD') let startTime = period.periodStart.split(' ')[1].slice(0, 5) let endTime = period.periodEnd.split(' ')[1].slice(0, 5) if (endTime === '00:00') { endTime = '24:00' endDate.subtract(1, 'days') } let periodDates = [] while (startDate.isSameOrBefore(endDate)) { periodDates.push(startDate.format('YYYY-MM-DD')) startDate.add(1, 'days') } periodDates.forEach((dateString) => { result.push({ date: dateString, startTime: startTime, endTime: endTime, periodStart: dateString + ' ' + startTime, periodEnd: dateString + ' ' + endTime, zoomLink: connectedPeriods.length > 1 && period.zoomMeeting ? period.zoomMeeting.joinUrl : '', lessonSpaceLink: connectedPeriods.length > 1 && period.lessonSpace ? period.lessonSpace : '', googleMeetLink: connectedPeriods.length > 1 && period.googleMeetUrl ? period.googleMeetUrl : '', microsoftTeamsLink: connectedPeriods.length > 1 && period.microsoftTeamsUrl ? period.microsoftTeamsUrl : '', }) }) }) return result } function useTicketsData(event) { let result = {} event.bookings.forEach((booking) => { if (['approved', 'pending'].includes(booking.status) && booking.ticketsData && booking.ticketsData.length) { booking.ticketsData.forEach((ticketData) => { if (!(ticketData.eventTicketId in result)) { result[ticketData.eventTicketId] = { persons: 0, price: ticketData.price, name: event.customTickets.find(i => i.id === ticketData.eventTicketId).name, } } result[ticketData.eventTicketId].persons = result[ticketData.eventTicketId].persons + ticketData.persons }) } }) return result } function useEventLocation (store, event) { let locations = store.getters['entities/getLocations'] if (event.locationId && locations.length) { let location = locations.find(location => location.id === event.locationId) return typeof location !== 'undefined' ? location : null } else if (event.customLocation) { return { address: '', name: event.customLocation } } return null } export { useParsedEvents, useEventBookingsPrice, usePeriodsData, useTicketsData, useEventLocation, }
Save
Back