import { request } from './request' import { compactParams, toArray, toNumber, toPageQuery, toPagination } from './mappers' const toCourseCourt = (backendCourt = {}) => ({ id: backendCourt.id ?? null, name: backendCourt.name || '', court_type: backendCourt.court_type || '', court_type_label: backendCourt.court_type_label || '' }) export const toSession = (backendSession = {}) => ({ id: backendSession.id ?? null, course_id: backendSession.course_id ?? null, title: backendSession.title || '', cover_image: backendSession.cover_image || '', coach_id: backendSession.coach_id ?? null, coach_name: backendSession.coach_name || '', start_at: backendSession.start_at || '', end_at: backendSession.end_at || '', capacity: toNumber(backendSession.capacity), booked_count: toNumber(backendSession.booked_count), remaining_count: toNumber(backendSession.remaining_count), price: backendSession.price || '0.00', status: backendSession.status || '', status_label: backendSession.status_label || backendSession.status || '', courts: toArray(backendSession.courts).map(toCourseCourt), detail_html: backendSession.detail_html || '', booked: backendSession.booked === true, booking_id: backendSession.booking_id ?? null, booking_type: backendSession.booking_type || null, created_at: backendSession.created_at || '', updated_at: backendSession.updated_at || '' }) const toSessionQuery = (params = {}) => compactParams({ ...toPageQuery(params), date: params.date, coach_id: params.coachId || params.coach_id, court_type: params.courtType || params.court_type }) export const courseApi = { getSessions(params = {}) { return request({ url: '/api/sessions', data: toSessionQuery(params) }).then((data) => toPagination(data, toSession)) }, getSessionDetail(id) { return request({ url: `/api/sessions/${id}` }).then(toSession) }, createCourseBooking(sessionId) { return request({ url: '/api/bookings/course', method: 'POST', data: { session_id: sessionId } }) } }