PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
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 / attendees.js
ameliabooking / v3 / src / assets / js / common Last commit date
appointments.js 1 year ago attendees.js 1 year ago colorManipulation.js 3 years ago customer.js 1 year ago date.js 1 year ago defaultCustomize.js 1 year ago employee.js 1 year ago events.js 1 year ago formFieldsTemplates.js 3 years ago formatting.js 1 year ago helper.js 1 year ago image.js 1 year ago integrationApple.js 1 year ago integrationGoogle.js 1 year ago integrationOutlook.js 1 year ago integrationStripe.js 1 year ago integrationZoom.js 1 year ago licence.js 2 years ago objectAndArrayManipulation.js 3 years ago pricing.js 1 year ago recurring.js 1 year ago responsive.js 1 year ago scrollElements.js 4 years ago settings.js 1 year ago translationsElementPlus.js 1 year ago
attendees.js
183 lines
1 import { reactive } from "vue";
2 import moment from 'moment'
3 import {useAmount} from "./pricing";
4
5 const globalLabels = reactive(window.wpAmeliaLabels)
6
7 function useFrontAttendee(attendee, defaultAttendee = {}) {
8 return Object.assign(
9 defaultAttendee,
10 {
11 id: attendee.id,
12 eventId: attendee.event.id,
13 customer: attendee.customer,
14 customerId: attendee.customer.id,
15 persons: attendee.persons,
16 customFields: attendee.customFields ? JSON.parse(attendee.customFields) : {},
17 ticketsData: attendee.ticketsData,
18 status: attendee.status,
19 tax: attendee.tax,
20 price: attendee.price,
21 coupon: attendee.coupon,
22 payments: attendee.payments,
23 }
24 )
25 }
26
27 function useBackAttendee(store) {
28 let customFields = {}
29
30 Object.keys(store.getters['attendee/getCustomFields']).forEach((id) => {
31 customFields[id] = {
32 label: store.getters['attendee/getCustomFields'][id].label,
33 type: store.getters['attendee/getCustomFields'][id].type,
34 value: store.getters['attendee/getCustomFields'][id].type === 'datepicker'
35 ? store.getters['attendee/getCustomFields'][id].value
36 ? moment(store.getters['attendee/getCustomFields'][id].value).format('YYYY-MM-DD')
37 : null
38 : store.getters['attendee/getCustomFields'][id].value,
39 }
40 })
41
42 return {
43 id: store.getters['attendee/getId'],
44 type: 'event',
45 eventId: store.getters['attendee/getEventId'],
46 bookings: [
47 {
48 customerId: store.getters['attendee/getCustomerId'],
49 persons: store.getters['attendee/getPersons'],
50 customFields: customFields,
51 ticketsData: store.getters['attendee/getTickets'],
52 status: store.getters['attendee/getStatus'],
53 coupon: store.getters['attendee/getCoupon'],
54 }
55 ],
56 status: store.getters['attendee/getStatus'],
57 validateCoupon: false,
58 isBackendOrCabinet: true,
59 createPaymentLinks: false,
60 payment: {gateway: 'onSite'},
61 }
62 }
63
64 function useInitAttendee(store, attendee, event = null) {
65 let customFields = attendee.customFields
66
67 let ticketsData = event && event.customPricing
68 ? event.customTickets.map(
69 (i, index) => new Object({
70 eventTicketId: i.id,
71 persons: index === 0 && !Object.keys(attendee.ticketsData).length ? 1 : 0,
72 price: i.price,
73 })
74 )
75 : []
76
77 if (event) {
78 store.getters['entities/getCustomFields']
79 .filter(
80 (i) => i.allEvents || (i.events.map((s) => s.id).indexOf(event.id) !== -1 && i.type !== 'content' && i.type !== 'file')
81 ).forEach((i) => {
82 customFields[i.id] = {
83 type: i.type,
84 label: i.label,
85 value: i.id in customFields
86 ? customFields[i.id].value
87 : i.type === 'checkbox' || i.type === 'file' ? [] : '',
88 width: i.width,
89 options: i.options,
90 id: i.id,
91 required: i.required,
92 }
93 })
94
95 if (event.customPricing) {
96 Object.keys(attendee.ticketsData).forEach((id) => {
97 let ticketData = ticketsData.find(i => i.eventTicketId === attendee.ticketsData[id].eventTicketId)
98
99 ticketData.id = attendee.ticketsData[id].id
100
101 ticketData.persons = attendee.ticketsData[id].persons
102
103 ticketData.price = attendee.ticketsData[id].price
104
105 ticketData.customerBookingId = attendee.ticketsData[id].customerBookingId
106 })
107 }
108 }
109
110 return Object.assign(
111 {},
112 attendee,
113 {
114 eventId: event ? event.id : null,
115 customFields: customFields,
116 ticketsData: ticketsData,
117 }
118 )
119 }
120
121 function useAttendeeStatuses() {
122 return [
123 {
124 label: globalLabels.approved,
125 value: 'approved',
126 icon: 'check',
127 color: 'var(--am-c-success)',
128 },
129 {
130 label: globalLabels.waiting,
131 value: 'waiting',
132 icon: 'clock',
133 color: 'var(--am-c-warning)',
134 },
135 {
136 label: globalLabels.canceled,
137 value: 'canceled',
138 icon: 'close',
139 color: 'var(--am-c-error)',
140 },
141 {
142 label: globalLabels['no-show'],
143 value: 'no-show',
144 icon: 'clock',
145 color: 'var(--am-c-warning)',
146 },
147 ]
148 }
149
150 function useAttendeeAmount(store) {
151 let price = 0
152
153 if (store.getters['attendee/getTickets'].length) {
154 store.getters['attendee/getTickets'].forEach(t => {
155 if (t.persons) {
156 price += store.getters['attendee/getAggregatedPrice'] ? t.price * t.persons : t.price
157 }
158 })
159 } else {
160 price = store.getters['attendee/getAggregatedPrice']
161 ? store.getters['attendee/getPrice'] * store.getters['attendee/getPersons']
162 : store.getters['attendee/getPrice']
163 }
164
165 return useAmount(
166 null,
167 store.getters['attendee/getCoupon'],
168 store.getters['attendee/getTax'] && store.getters['attendee/getTax'].length
169 ? store.getters['attendee/getTax'][0]
170 : null,
171 price,
172 false
173 )
174 }
175
176 export {
177 useInitAttendee,
178 useFrontAttendee,
179 useBackAttendee,
180 useAttendeeStatuses,
181 useAttendeeAmount,
182 }
183