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