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 : restore.js
import { useRemoveUrlParameter } from "../common/helper.js";
import {
  useAppointmentCalendarData,
  usePackageCalendarData,
  useEventCalendarData,
  useBookingError,
  useNotify
} from "./booking.js";
import httpClient from "../../../plugins/axios";
import {settings} from "../../../plugins/settings";

function fixType (item, key) {
  item[key] = !item[key] ? null : parseInt(item[key])
}

function fixCacheData (data) {
  let keys = []

  data.request.state.attachments = []

  data.request.state.booked = null

  data.request.state.loading = true

  data.request.state.ready = false

  if (!('extras' in data.request.state.appointment.bookings[0])) {
    data.request.state.appointment.bookings[0].extras = []
  }

  fixType(data.request.state, 'packageId')

  fixType(data.request.state, 'appointmentsIndex')

  data.request.state.appointments.forEach((a) => {
    keys = ['index', 'packageId', 'serviceId']

    keys.forEach((key) => {
      fixType(a, key)
    })

    for (let serviceId in a.services) {
      a.services[serviceId].list.forEach((i) => {
        keys = ['locationId', 'providerId']

        keys.forEach((key) => {
          fixType(i, key)
        })
      })

      keys = ['locationId', 'providerId']

      keys.forEach((key) => {
        fixType(a.services[serviceId], key)
      })
    }
  })

  keys = ['locationId', 'providerId', 'serviceId', 'categoryId', 'packageId']

  keys.forEach((key) => {
    fixType(data.request.state.appointment, key)
  })
}

function useRestore (store, shortcodeData) {
  let data = 'ameliaCache' in window && window.ameliaCache.length && window.ameliaCache[0] ?
    JSON.parse(window.ameliaCache[0]) : null

  if (!data || (parseInt(data.request.form.shortcode.counter) !== parseInt(shortcodeData.counter))) {
    return null
  }

  try {
    window.history.replaceState(
      null,
      null,
      useRemoveUrlParameter(
        useRemoveUrlParameter(
          window.location.href,
          'ameliaWcCache'
        ),
        'ameliaCache'
      )
    )
  } catch (e) {
    console.log(e)
  }

  if (data.request.state.attachments && (data.request.state.attachments.length || Object.keys(data.request.state.attachments).length)) {
    fixCacheData(data)
  }

  if ('bookableType' in data.request.state && data.request.state.bookableType === 'event') {
    store.commit('eventEntities/setEventsDisplay', data.request.state.eventsDisplay)
    store.commit('bookableType/setType', data.request.state.bookableType)
    store.commit('pagination/setAllData', data.request.state.pagination)
    store.commit('params/setAllData', data.request.state.params)
    store.commit('eventBooking/setEventId', data.request.state.eventId)
    store.commit('coupon/setCoupon', data.request.state.coupon)
    store.commit('customFields/setAllData', data.request.state.customFields)
    store.commit('customerInfo/setAllData', data.request.state.customerInfo)
    store.commit('payment/setAllData', data.request.state.payment)
    store.commit('persons/setAllData', data.request.state.persons)
    store.commit('tickets/setAllData', data.request.state.tickets)

    // * Request because event params and pagination
    if (data.request.state.eventsDisplay === 'calendar') {
      store.dispatch('eventEntities/requestEvents', 'calendar')
      store.dispatch('eventEntities/requestEvents', 'upcoming')
    } else {
      store.dispatch('eventEntities/requestEvents')
    }
  } else {
    store.state.booking = {...data.request.state }
  }

  if (settings.payments.mollie.cancelBooking && data.status === null) {
    let bookings = []
    if (data.response.type === 'package') {
      bookings = data.response.package.map(p => p.booking)
    } else {
      bookings = [data.response.booking].concat(data.response.recurring.map(r => r.booking))
    }

    bookings.forEach(booking => {
      httpClient.get(
          '/bookings/cancel/' + booking.id + '&token=' + booking.token + '&type=' + data.response.type + '&fromForm=' + true,
      ).catch(e => {
        console.log(e.message)
      })
    })

    return {
      result: 'canceled',
      steps: data.request.form.steps,
      sidebar: data.request.form.sidebar,
    }
  } else {
    switch ((data.status !== null) ? data.status : 'paid') {
      case ('canceled'):
        return {
          result: 'canceled',
          steps: data.request.form.steps,
          sidebar: data.request.form.sidebar,
        }

      case ('failed'):
        store.commit('booking/setError', useBookingError(data, store))

        return {
          result: 'error',
          steps: data.request.form.steps,
          sidebar: data.request.form.sidebar,
        }

      case ('paid'):
        switch (data.response.type) {
          case ('appointment'):
            store.commit('booking/setBooked', useAppointmentCalendarData(store, data.response))

            break

          case ('package'):
            store.commit('booking/setBooked', usePackageCalendarData(store, data.response))

            break

          case ('event'):
            store.commit('eventBooking/setBooked', useEventCalendarData(store, data.response))

            break
        }


        if (!('request' in data &&
          'form' in data.request &&
          'shortcode' && data.request.form &&
          'trigger' in data.request.form.shortcode &&
          data.request.form.shortcode.trigger
        )) {
          useNotify(store, data.response, () => {}, () => {})
        }

        return {
          result: 'success',
          steps: data.request.form.steps,
          sidebar: data.request.form.sidebar,
        }
    }
  }
}

export default useRestore
© 2026 GrazzMean-Shell