feat: implement CRUD operations for status management in master-status API
This commit is contained in:
168
src/api/master-status.jsx
Normal file
168
src/api/master-status.jsx
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
import { SendRequest } from '../components/Global/ApiRequest';
|
||||||
|
|
||||||
|
const getAllStatus = async (queryParams) => {
|
||||||
|
try {
|
||||||
|
const response = await SendRequest({
|
||||||
|
method: 'get',
|
||||||
|
prefix: `status?${queryParams.toString()}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.error) {
|
||||||
|
console.error('getAllStatus error response:', response);
|
||||||
|
return {
|
||||||
|
status: response.statusCode || 500,
|
||||||
|
data: {
|
||||||
|
data: [],
|
||||||
|
paging: {
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 0,
|
||||||
|
page_total: 0
|
||||||
|
},
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
error: response.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (response.paging) {
|
||||||
|
const totalData = response.data?.[0]?.total_data || response.rows || response.data?.length || 0;
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: response.statusCode || 200,
|
||||||
|
data: {
|
||||||
|
data: response.data || [],
|
||||||
|
paging: {
|
||||||
|
page: response.paging.current_page || 1,
|
||||||
|
limit: response.paging.current_limit || 10,
|
||||||
|
total: totalData,
|
||||||
|
page_total: response.paging.total_page || Math.ceil(totalData / (response.paging.current_limit || 10))
|
||||||
|
},
|
||||||
|
total: totalData
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
const params = Object.fromEntries(queryParams);
|
||||||
|
const currentPage = parseInt(params.page) || 1;
|
||||||
|
const currentLimit = parseInt(params.limit) || 10;
|
||||||
|
|
||||||
|
const allData = response.data || [];
|
||||||
|
const totalData = allData.length;
|
||||||
|
|
||||||
|
const startIndex = (currentPage - 1) * currentLimit;
|
||||||
|
const endIndex = startIndex + currentLimit;
|
||||||
|
const paginatedData = allData.slice(startIndex, endIndex);
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: response.statusCode || 200,
|
||||||
|
data: {
|
||||||
|
data: paginatedData,
|
||||||
|
paging: {
|
||||||
|
page: currentPage,
|
||||||
|
limit: currentLimit,
|
||||||
|
total: totalData,
|
||||||
|
page_total: Math.ceil(totalData / currentLimit)
|
||||||
|
},
|
||||||
|
total: totalData
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} catch (error) {
|
||||||
|
console.error('getAllStatus catch error:', error);
|
||||||
|
return {
|
||||||
|
status: 500,
|
||||||
|
data: {
|
||||||
|
data: [],
|
||||||
|
paging: {
|
||||||
|
page: 1,
|
||||||
|
limit: 10,
|
||||||
|
total: 0,
|
||||||
|
page_total: 0
|
||||||
|
},
|
||||||
|
total: 0
|
||||||
|
},
|
||||||
|
error: error.message
|
||||||
|
};
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getStatusById = async (id) => {
|
||||||
|
const response = await SendRequest({
|
||||||
|
method: 'get',
|
||||||
|
prefix: `status/${id}`,
|
||||||
|
});
|
||||||
|
return response.data;
|
||||||
|
};
|
||||||
|
|
||||||
|
const createStatus = async (queryParams) => {
|
||||||
|
const response = await SendRequest({
|
||||||
|
method: 'post',
|
||||||
|
prefix: `status`,
|
||||||
|
params: queryParams,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.error) {
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 500,
|
||||||
|
data: null,
|
||||||
|
message: response.message || 'Request failed',
|
||||||
|
rows: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 200,
|
||||||
|
data: response.data?.[0] || response.data,
|
||||||
|
message: response.message,
|
||||||
|
rows: response.rows
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const updateStatus = async (status_id, queryParams) => {
|
||||||
|
const response = await SendRequest({
|
||||||
|
method: 'put',
|
||||||
|
prefix: `status/${status_id}`,
|
||||||
|
params: queryParams,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.error) {
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 500,
|
||||||
|
data: null,
|
||||||
|
message: response.message || 'Request failed',
|
||||||
|
rows: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 200,
|
||||||
|
data: response.data?.[0] || response.data,
|
||||||
|
message: response.message,
|
||||||
|
rows: response.rows
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteStatus = async (queryParams) => {
|
||||||
|
const response = await SendRequest({
|
||||||
|
method: 'delete',
|
||||||
|
prefix: `status/${queryParams}`,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (response.error) {
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 500,
|
||||||
|
data: null,
|
||||||
|
message: response.message || 'Request failed',
|
||||||
|
rows: 0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
statusCode: response.statusCode || 200,
|
||||||
|
data: response.data,
|
||||||
|
message: response.message,
|
||||||
|
rows: response.rows
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
export { getAllStatus, getStatusById, createStatus, updateStatus, deleteStatus };
|
||||||
Reference in New Issue
Block a user