feat: migrate comprehensive venue module
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import { request } from './request'
|
||||
import { compactParams, toArray, toNumber } from './mappers'
|
||||
import { toPrivateBooking } from './booking'
|
||||
import { toOrderBrief } from './order'
|
||||
|
||||
const toQuoteCourt = (backendCourt = {}) => ({
|
||||
id: backendCourt.id ?? null,
|
||||
name: backendCourt.name || '',
|
||||
court_type: backendCourt.court_type || '',
|
||||
court_type_label: backendCourt.court_type_label || ''
|
||||
})
|
||||
|
||||
const toPrivateQuote = (backendQuote = {}) => ({
|
||||
amount: backendQuote.amount || '0.00',
|
||||
unit_count: toNumber(backendQuote.unit_count),
|
||||
start_at: backendQuote.start_at || '',
|
||||
end_at: backendQuote.end_at || '',
|
||||
courts: toArray(backendQuote.courts).map(toQuoteCourt)
|
||||
})
|
||||
|
||||
const toPrivateCreateResult = (backendData = {}) => ({
|
||||
booking: toPrivateBooking(backendData.booking),
|
||||
order: toOrderBrief(backendData.order)
|
||||
})
|
||||
|
||||
const toPrivateTimeOption = (backendOption = {}) => ({
|
||||
start_at: backendOption.start_at || '',
|
||||
end_at: backendOption.end_at || '',
|
||||
available_court_count: toNumber(backendOption.available_court_count),
|
||||
available_courts: toArray(backendOption.available_courts).map(toQuoteCourt)
|
||||
})
|
||||
|
||||
const toPrivateBookingOptions = (backendData = {}) => ({
|
||||
date: backendData.date || '',
|
||||
court_type: backendData.court_type || '',
|
||||
court_type_label: backendData.court_type_label || '',
|
||||
open_time: backendData.open_time || '',
|
||||
close_time: backendData.close_time || '',
|
||||
unit_price: backendData.unit_price || '0.00',
|
||||
duration_units: toNumber(backendData.duration_units, 2),
|
||||
duration_minutes: toNumber(backendData.duration_minutes, 60),
|
||||
amount_per_court: backendData.amount_per_court || '0.00',
|
||||
total_court_count: toNumber(backendData.total_court_count),
|
||||
time_options: toArray(backendData.time_options).map(toPrivateTimeOption)
|
||||
})
|
||||
|
||||
export const privateBookingApi = {
|
||||
getPrivateBookingOptions(params = {}) {
|
||||
return request({
|
||||
url: '/api/bookings/private/options',
|
||||
data: compactParams({
|
||||
date: params.date,
|
||||
court_type: params.courtType || params.court_type,
|
||||
duration_units: params.durationUnits || params.duration_units
|
||||
})
|
||||
}).then(toPrivateBookingOptions)
|
||||
},
|
||||
quotePrivateBooking(payload = {}) {
|
||||
return request({
|
||||
url: '/api/bookings/private/quote',
|
||||
method: 'POST',
|
||||
data: {
|
||||
court_ids: toArray(payload.court_ids),
|
||||
start_at: payload.start_at,
|
||||
end_at: payload.end_at
|
||||
}
|
||||
}).then(toPrivateQuote)
|
||||
},
|
||||
createPrivateBooking(payload = {}) {
|
||||
return request({
|
||||
url: '/api/bookings/private',
|
||||
method: 'POST',
|
||||
data: {
|
||||
court_ids: toArray(payload.court_ids),
|
||||
start_at: payload.start_at,
|
||||
end_at: payload.end_at
|
||||
}
|
||||
}).then(toPrivateCreateResult)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user