Uname: Linux webm012.cluster130.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Software: Apache
PHP version: 8.0.30 [ PHP INFO ] PHP os: Linux
Server Ip: 145.239.37.162
Your Ip: 216.73.216.190
User: dreampi (1009562) | Group: users (100)
Safe Mode: OFF
Disable Function:
_dyuweyrj4,_dyuweyrj4r,dl

name : actions.js
import { event as gtEvent } from "vue-gtag";
import { event as fpEvent } from "./facebookPixel";
import { useCartItem } from "./cart";
import {useAppointmentBookingData, usePackageBookingData} from "./booking";

function trackAmeliaData (data, marketing, type, action) {
  Object.keys(marketing).forEach((analytics) => {
    if (!marketing[analytics] || !window.wpAmeliaSettings[analytics].id) {
      return
    }

    let settings = type in window.wpAmeliaSettings[analytics].tracking ? window.wpAmeliaSettings[analytics].tracking[type] : []

    settings.filter(trackingEvent => trackingEvent.type === action).forEach((trackingEvent) => {
      let trackingEventProperties = {}

      let trackingEventData = {}

      switch (analytics) {
        case ('googleTag'): {
          trackingEventData = trackingEvent

          break
        }

        case ('googleAnalytics'):
        case ('facebookPixel'): {
          trackingEvent.data.forEach((item) => {
            if (item.key.trim() !== '' && item.value.trim() !== '') {
              trackingEventData[item.key] = item.value
            }
          })

          break
        }
      }

      Object.keys(trackingEventData).filter(property => analytics === 'googleAnalytics' || analytics === 'facebookPixel' || property !== 'type').forEach((property) => {
        let originalValue = trackingEventData[property]

        let itemProperties = originalValue.replace(/\s\s+/g, ' ').split('%').join('').split(' ')

        itemProperties.forEach((value) => {
          if (value && !Array.isArray(value) && !(typeof value === 'object') && value !== true) {
            let pathParts = value.split('_')

            let referenceObject = pathParts[0] === 'window' ? window : (data === null ? window : data)

            if (pathParts.length > 1) {
              pathParts.forEach((pathPart) => {
                if (typeof referenceObject !== 'undefined' && pathPart in referenceObject && referenceObject[pathPart] !== null) {
                  referenceObject = referenceObject[pathPart]
                } else {
                  return false
                }
              })

              if (!Array.isArray(referenceObject) && !(typeof referenceObject === 'object')) {
                if (value === 'payment_amount' &&
                  referenceObject.toString().endsWith('.00') &&
                  analytics === 'googleTag' &&
                  property === 'value'
                ) {
                  referenceObject = parseInt(referenceObject)
                }

                originalValue = originalValue.split('%' + value + '%').join(referenceObject).trim()
              } else {
                originalValue = originalValue.split('%' + value + '%').join('').trim()
              }
            } else if (typeof referenceObject !== 'undefined' && value in referenceObject) {
              if (!Array.isArray(referenceObject[value]) && !(typeof referenceObject[value] === 'object')) {
                if (value === 'payment_amount' &&
                  referenceObject[value].endsWith('.00') &&
                  analytics === 'googleTag' &&
                  property === 'value'
                ) {
                  referenceObject[value] = parseInt(referenceObject[value])
                }

                originalValue = originalValue.split('%' + value + '%').join(referenceObject[value]).trim()
              } else {
                originalValue = originalValue.split('%' + value + '%').join('').trim()
              }
            }
          }
        })

        trackingEventProperties[property] = originalValue
      })

      switch (analytics) {
        case ('googleTag'): {
          gtEvent(
            trackingEventProperties.action,
            {
              event_category: trackingEventProperties.category,
              event_label: trackingEventProperties.label,
              value: trackingEventProperties.value
            }
          )

          break
        }

        case ('googleAnalytics'): {
          gtEvent(
            trackingEvent.event,
            trackingEventProperties
          )

          break
        }

        case ('facebookPixel'): {
          fpEvent(
            trackingEvent.event,
            trackingEventProperties
          )

          break
        }
      }
    })
  })
}

function useAction (store, additionalData, action, type, successCallback, errorCallback) {
  let data = {}

  switch (type) {
    case ('appointment'):
    if (additionalData && additionalData.isCartAppointment) {
      data.service = additionalData.serviceId ? store.getters['entities/getService'](additionalData.serviceId) : null
      data.employee = additionalData.providerId ? store.getters['entities/getEmployee'](additionalData.providerId) : null
      data.location = additionalData.locationId ? store.getters['entities/getLocation'](additionalData.locationId) : null

      data.category = data.service ? store.getters['entities/getCategory'](
          data.service.categoryId
      ) : null


      if (data.employee) {
        data.employee.fullName = data.employee.firstName + ' ' + data.employee.lastName
      }
    } else {
      data.service = store.getters['booking/getServiceId'] ? store.getters['entities/getService'](
        store.getters['booking/getServiceId']
      ) : null

      data.employee = store.getters['booking/getEmployeeId'] ? store.getters['entities/getEmployee'](
        store.getters['booking/getEmployeeId']
      ) : null

      if (data.employee) {
        data.employee.fullName = data.employee.firstName + ' ' + data.employee.lastName
      }

      data.location = store.getters['booking/getLocationId'] ? store.getters['entities/getLocation'](
        store.getters['booking/getLocationId']
      ) : null

      data.category = data.service ? store.getters['entities/getCategory'](
        data.service.categoryId
      ) : null

      if (data.service) {
        let cartItem = useCartItem(store)

        if (cartItem && 'services' in cartItem && data.service.id in cartItem.services && cartItem.services[data.service.id].list.length) {

          if (!data.employee) {
            data.employee = cartItem.services[data.service.id].list[0].providerId ? store.getters['entities/getEmployee'](
                cartItem.services[data.service.id].list[0].providerId
            ) : null
          }

          if (data.employee) {
            data.employee.fullName = data.employee.firstName + ' ' + data.employee.lastName
          }

          data.location = cartItem.services[data.service.id].list[0].locationId ? store.getters['entities/getLocation'](
            cartItem.services[data.service.id].list[0].locationId
          ) : null
        }
      }

      data.booking = store.getters['booking/getBooking']

      data.appointments = useAppointmentBookingData(store)
    }

      break

    case ('package'):
      data.package = store.getters['entities/getPackage'] ? store.getters['entities/getPackage'](
        store.getters['booking/getPackageId']
      ) : null

      data.booking = store.getters['booking/getBooking']
      //data.appointments = usePackageBookingData(store)

      break

    case ('event'):
      data.booking = {
        customer: store.getters['customerInfo/getAllData'],
        customFields: Object.values(store.getters['customFields/getAllData'].customFields),
        persons: store.getters['persons/getPersons']
      }
      data.event = store.getters['eventEntities/getEvent'](store.getters['eventBooking/getSelectedEventId'])
      break
  }

  trackAmeliaData(Object.assign(data, additionalData), {facebookPixel: true, googleAnalytics: true, googleTag: true}, type, action)

  if ('ameliaActions' in window && action in window.ameliaActions) {
    window.ameliaActions[action](successCallback, errorCallback, data)
  } else if (successCallback !== null) {
    successCallback()
  }
}

export default useAction
© 2026 GrazzMean-Shell