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 / store / modules / appointment.js
ameliabooking / v3 / src / store / modules Last commit date
appointment.js 1 year ago attendee.js 1 year ago auth.js 1 year ago bookableType.js 3 years ago booking.js 1 year ago cabinet.js 1 year ago cabinetFilters.js 1 year ago coupon.js 2 years ago customFields.js 2 years ago customerInfo.js 1 year ago employee.js 1 year ago entities.js 1 year ago event.js 1 year ago eventBooking.js 3 years ago eventEntities.js 1 year ago eventWaitingListOptions.js 1 year ago pagination.js 3 years ago params.js 1 year ago payment.js 2 years ago persons.js 1 year ago recurring.js 1 year ago shortcodeParams.js 2 years ago tickets.js 1 year ago
appointment.js
342 lines
1 function getDefaultAppointment() {
2 return {
3 id: null,
4 categoryId: null,
5 serviceId: null,
6 locationId: null,
7 lessonSpace: null,
8 providerId: null,
9 startDate: '',
10 startTime: '',
11 notifyParticipants: true,
12 internalNotes: '',
13 bookings: [],
14 customFields: [],
15 customFieldsRules: {},
16 employeeService: null,
17 targetedDate: null,
18 active: false,
19 }
20 }
21
22 export default {
23 namespaced: true,
24
25 state: getDefaultAppointment(),
26
27 getters: {
28 getSelection(state) {
29 return {
30 categoryId: state.categoryId,
31 serviceId: state.serviceId,
32 providerId: state.providerId,
33 locationId: state.locationId,
34 }
35 },
36
37 getId(state) {
38 return state.id
39 },
40
41 getCategoryId(state) {
42 return state.categoryId
43 },
44
45 getServiceId(state) {
46 return state.serviceId
47 },
48
49 getProviderId(state) {
50 return state.providerId
51 },
52
53 getLocationId(state) {
54 return state.locationId
55 },
56
57 getLessonSpace(state) {
58 return state.lessonSpace
59 },
60
61 getStartDate(state) {
62 return state.startDate
63 },
64
65 getStartTime(state) {
66 return state.startTime
67 },
68
69 getNotifyParticipants(state) {
70 return state.notifyParticipants
71 },
72
73 getInternalNotes(state) {
74 return state.internalNotes
75 },
76
77 getBooking: (state) => (index) => {
78 return state.bookings[index]
79 },
80
81 getBookings(state) {
82 return state.bookings
83 },
84
85 getAppointmentData(state) {
86 return {
87 id: state.id,
88 categoryId: state.categoryId,
89 serviceId: state.serviceId,
90 locationId: state.locationId,
91 lessonSpace: state.lessonSpace,
92 providerId: state.providerId,
93 startDate: state.startDate,
94 startTime: state.startTime,
95 notifyParticipants: state.notifyParticipants,
96 internalNotes: state.internalNotes,
97 bookings: state.bookings,
98 }
99 },
100
101 getEmployeeService(state) {
102 return state.employeeService
103 },
104
105 getTargetedDate(state) {
106 return state.targetedDate
107 },
108
109 getActive(state) {
110 return state.active
111 },
112
113 getCustomFields(state) {
114 return state.customFields
115 },
116
117 getCustomFieldsRules(state) {
118 return state.customFieldsRules
119 },
120 },
121
122 mutations: {
123 resetAppointment(state, payload) {
124 Object.assign(state, getDefaultAppointment(), payload)
125 },
126
127 setAppointment(state, payload) {
128 Object.assign(state, payload)
129 },
130
131 setCategoryId(state, payload) {
132 state.categoryId = payload
133 },
134
135 setServiceId(state, payload) {
136 state.serviceId = payload
137 },
138
139 setProviderId(state, payload) {
140 state.providerId = payload
141 },
142
143 setLocationId(state, payload) {
144 state.locationId = payload
145 },
146
147 setLessonSpace(state, payload) {
148 state.lessonSpace = payload
149 },
150
151 setStartDate(state, payload) {
152 state.startDate = payload
153 },
154
155 setStartTime(state, payload) {
156 state.startTime = payload
157 },
158
159 setNotifyParticipants(state, payload) {
160 state.notifyParticipants = payload
161 },
162
163 setInternalNotes(state, payload) {
164 state.internalNotes = payload
165 },
166
167 setBooking(state, payload) {
168 if (state.bookings.length === payload.index) {
169 state.bookings.push(payload.value)
170 } else {
171 state.bookings[payload.index] = payload.value
172 }
173 },
174
175 setCustomFields(state, payload) {
176 state.customFields = payload
177 },
178
179 setEmployeeService(state, payload) {
180 state.employeeService = payload
181 },
182
183 setTargetedDate(state, payload) {
184 state.targetedDate = payload
185 },
186
187 setActive(state, payload) {
188 state.active = payload
189 },
190
191 setBookingStatus(state, payload) {
192 state.bookings[payload.index].status = payload.value
193 },
194
195 setAllBookingsStatus(state, payload) {
196 state.bookings.forEach((booking) => {
197 booking.status = payload
198 })
199 },
200
201 setBookingPersons(state, payload) {
202 state.bookings[payload.index].persons = payload.value
203 },
204
205 setBookingDuration(state, payload) {
206 state.bookings[payload.index].duration = payload.value
207 },
208 },
209
210 actions: {
211 serviceCustomFieldsFiltration({ state, commit, rootGetters }) {
212 if (state.employeeService !== null) {
213 let customFieldsEntity = rootGetters['entities/getCustomFields']
214 let filteredCustomFields = customFieldsEntity.filter(
215 (i) =>
216 i.allServices ||
217 (i.services.map((s) => s.id).indexOf(state.employeeService.id) !==
218 -1 &&
219 i.type !== 'content')
220 )
221
222 commit('setCustomFields', filteredCustomFields)
223 } else {
224 commit('setCustomFields', [])
225 }
226 },
227
228 updateEmployeeService({ state, commit, dispatch, rootGetters }, payload) {
229 if (payload) {
230 let employeeService = rootGetters['entities/getEmployees']
231 .find((i) => i.id === state.providerId)
232 .serviceList.find((i) => i.id === payload)
233
234 commit(
235 'setEmployeeService',
236 typeof employeeService !== 'undefined'
237 ? employeeService
238 : rootGetters['entities/getServices']
239 .find((i) => i.id === state.serviceId)
240 )
241 // * Set custom fields based on service selection
242 dispatch('serviceCustomFieldsFiltration')
243 } else {
244 state.employeeService = null
245 }
246 },
247
248 resetBookingsExtras({ state }, index) {
249 state.bookings[index].extras = state.employeeService.extras.map(
250 (e) => new Object({ extraId: e.id, quantity: 0 })
251 )
252 },
253
254 deleteAllBookingCustomFields({ state }) {
255 state.bookings.forEach((booking) => {
256 booking.customFields = {}
257 })
258 },
259
260 resetBookingCustomFields({ state, getters }, key) {
261 state.bookings[key].customFields = getters['getCustomFields'].reduce(
262 (actual, current) => {
263 actual[current.id] = {
264 label: current.label,
265 type: current.type,
266 value:
267 current.type === 'checkbox' || current.type === 'file' ? [] : '',
268 }
269
270 return actual
271 },
272 {}
273 )
274 },
275
276 updateBookingCustomField({ state }, payload) {
277 const { bookingKey, fieldId, value } = payload
278 state.bookings[bookingKey].customFields[fieldId].value = value
279 },
280
281 deleteAllCustomFieldsFormRules({ state }) {
282 state.customFieldsRules = {}
283 },
284
285 addCustomFieldsFormRules({ state, getters }, payload) {
286 const { key, label } = payload
287 getters['getCustomFields'].forEach((field) => {
288 state.customFieldsRules[`${key}cf${field.id}`] = [
289 {
290 message: label,
291 required: field.required,
292 trigger: ['submit', 'change'],
293 },
294 ]
295 })
296 },
297
298 addAllCustomFieldsFormRules({ state, getters }, payload) {
299 const { label } = payload
300 state.bookings.forEach((booking, index) => {
301 getters['getCustomFields'].forEach((field) => {
302 state.customFieldsRules[`${index}cf${field.id}`] = [
303 {
304 message: label,
305 required: field.required,
306 trigger: ['submit', 'change'],
307 },
308 ]
309 })
310 })
311 },
312
313 recreateAllBookingCustomFields({ state, dispatch }, payload) {
314 const { label } = payload
315
316 if (state.bookings.length) {
317 // * Delete all booking custom fields
318 dispatch('deleteAllBookingCustomFields')
319 // * Delete all custom fields form rules
320 dispatch('deleteAllCustomFieldsFormRules')
321 }
322
323 state.bookings.forEach((booking, index) => {
324 // * Reset booking extras
325 dispatch('resetBookingsExtras', index)
326
327 // * Reset (Add blank) booking custom fields
328 dispatch('resetBookingCustomFields', index)
329
330 // * Add custom fields form rules
331 dispatch('addCustomFieldsFormRules', { key: index, label })
332 })
333 },
334
335 removeBooking({ state, getters ,commit}, payload) {
336 state.bookings.splice(payload, 1)
337
338 commit('customerInfo/setCustomersIds', getters['getBookings'].map((i) => i.customer.id), { root: true })
339 },
340 },
341 }
342