evaluations.service.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import http from '@/core/api/http'
  2. import type { ApiResponse, PaginationParams } from '@/types/common.types'
  3. import type {
  4. CreateEvaluation,
  5. GetEvaluationDetailResponse,
  6. GetEvaluationItems,
  7. GetEvaluationsResponse,
  8. } from '@/types/evaluations.types'
  9. const BASE_URL = '/admin/evaluations'
  10. const BASE_ITEMS__URL = '/admin/items'
  11. export const evaluationsService = {
  12. list: async (params?: PaginationParams): Promise<GetEvaluationsResponse> => {
  13. const searchParams = new URLSearchParams()
  14. if (params?.page) searchParams.set('page', String(params.page))
  15. if (params?.per_page) searchParams.set('per_page', String(params.per_page))
  16. if (params?.status) searchParams.set('status', params.status)
  17. const query = searchParams.toString()
  18. const url = query ? `${BASE_URL}?${query}` : BASE_URL
  19. return http.get<GetEvaluationsResponse>(url)
  20. },
  21. detail: async (evaluationId: number | string) => {
  22. const res = await http.get<GetEvaluationDetailResponse>(
  23. `${BASE_URL}/${evaluationId}`
  24. )
  25. return res?.data?.evaluation
  26. },
  27. store: async (evaluationId: number | string, payload: CreateEvaluation) => {
  28. const res = await http.post<ApiResponse<void>>(
  29. `${BASE_URL}/${evaluationId}/store`,
  30. payload
  31. )
  32. return res?.data
  33. },
  34. items: async () => {
  35. const res = await http.get<GetEvaluationItems>(BASE_ITEMS__URL)
  36. return res?.items
  37. },
  38. retry: async (evaluationId: number | string) => {
  39. const res = await http.post<ApiResponse<void>>(
  40. `${BASE_URL}/${evaluationId}/retry`
  41. )
  42. return res?.data
  43. },
  44. }