diff --git a/src/api/role.jsx b/src/api/role.jsx index 17ace06..5a0b62f 100644 --- a/src/api/role.jsx +++ b/src/api/role.jsx @@ -1,49 +1,76 @@ import { SendRequest } from '../components/Global/ApiRequest'; const getAllRole = async (queryParams) => { - const response = await SendRequest({ - method: 'get', - prefix: `roles/roles?${queryParams.toString()}`, - }); + try { + const response = await SendRequest({ + method: 'get', + prefix: `roles?${queryParams.toString()}`, + }); - console.log('Role API Response:', response); + console.log('Role API Response:', response); - // Parse query params to get page and limit - const params = Object.fromEntries(queryParams); - const currentPage = parseInt(params.page) || 1; - const currentLimit = parseInt(params.limit) || 10; + // Check if backend returns paginated data + if (response.paging) { + // Backend already provides pagination info + return { + status: response.statusCode || 200, + data: { + data: response.data || [], + paging: response.paging, + total: response.paging.total || 0 + } + }; + } - // Backend returns all data, so we need to do client-side pagination - const allData = response.data || []; - const totalData = allData.length; + // Fallback: If backend returns all data without pagination + const params = Object.fromEntries(queryParams); + const currentPage = parseInt(params.page) || 1; + const currentLimit = parseInt(params.limit) || 10; - // Calculate start and end index for current page - const startIndex = (currentPage - 1) * currentLimit; - const endIndex = startIndex + currentLimit; + const allData = response.data || []; + const totalData = allData.length; - // Slice data for current page - const paginatedData = allData.slice(startIndex, endIndex); + // Client-side pagination + const startIndex = (currentPage - 1) * currentLimit; + const endIndex = startIndex + currentLimit; + const paginatedData = allData.slice(startIndex, endIndex); - // Transform response to match TableList expected structure - return { - status: response.statusCode || 200, - data: { - data: paginatedData, - paging: { - page: currentPage, - limit: currentLimit, + return { + status: response.statusCode || 200, + data: { + data: paginatedData, + paging: { + page: currentPage, + limit: currentLimit, + total: totalData, + page_total: Math.ceil(totalData / currentLimit), + }, total: totalData, - page_total: Math.ceil(totalData / currentLimit), }, - total: totalData, - }, - }; + }; + } catch (error) { + console.error('getAllRole error:', error); + return { + status: 500, + data: { + data: [], + paging: { + page: 1, + limit: 10, + total: 0, + page_total: 0 + }, + total: 0 + }, + error: error.message + }; + } }; const getRoleById = async (id) => { const response = await SendRequest({ method: 'get', - prefix: `roles/roles/${id}`, + prefix: `roles/${id}`, }); return response.data; }; @@ -51,7 +78,7 @@ const getRoleById = async (id) => { const createRole = async (queryParams) => { const response = await SendRequest({ method: 'post', - prefix: `roles/roles`, + prefix: `roles`, params: queryParams, }); @@ -90,7 +117,7 @@ const createRole = async (queryParams) => { const updateRole = async (role_id, queryParams) => { const response = await SendRequest({ method: 'put', - prefix: `roles/roles/${role_id}`, + prefix: `roles/${role_id}`, params: queryParams, }); @@ -129,7 +156,7 @@ const updateRole = async (role_id, queryParams) => { const deleteRole = async (queryParams) => { const response = await SendRequest({ method: 'delete', - prefix: `roles/roles/${queryParams}`, + prefix: `roles/${queryParams}`, }); console.log('Delete API Response:', response);