From 27b060845b6e5c0a3ea14148d8399803d70e92bb Mon Sep 17 00:00:00 2001 From: bragaz_rexita Date: Wed, 17 Sep 2025 12:19:00 +0700 Subject: [PATCH] Add api --- src/api/auth.jsx | 52 +++++++++++++++++++++++ src/api/dashboard-home.jsx | 48 ++++++++++++++++++++++ src/api/master-apd.jsx | 45 ++++++++++++++++++++ src/api/user-admin.jsx | 84 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 229 insertions(+) create mode 100644 src/api/auth.jsx create mode 100644 src/api/dashboard-home.jsx create mode 100644 src/api/master-apd.jsx create mode 100644 src/api/user-admin.jsx diff --git a/src/api/auth.jsx b/src/api/auth.jsx new file mode 100644 index 0000000..468e938 --- /dev/null +++ b/src/api/auth.jsx @@ -0,0 +1,52 @@ +import { SendRequest } from '../components/Global/ApiRequest'; +import RegistrationRequest from '../components/Global/RegisterRequest'; + +const login = async (params) => { + const response = await SendRequest({ + method: 'post', + prefix: `auth/login`, + params: params, + }); + return response || []; +}; + +const uploadFile = async (formData) => { + const response = await RegistrationRequest({ + method: 'post', + prefix: 'file-upload', + params: formData, + headers: { 'Content-Type': 'multipart/form-data' }, + }); + return response || {}; +}; + +const register = async (params) => { + const response = await RegistrationRequest({ + method: 'post', + prefix: 'register', + params: params, + headers: { 'Content-Type': 'application/json' }, + }); + return response || {}; +}; + +const verifyRedirect = async (params) => { + const response = await SendRequest({ + method: 'post', + prefix: 'auth/verify-redirect', + params: params, + token: false, + }); + return response || {}; +}; + +const checkUsername = async (queryParams) => { + const response = await SendRequest({ + method: 'get', + prefix: `register/check-username?${queryParams.toString()}`, + }); + return response || {}; +}; + + +export { login, uploadFile, register, verifyRedirect, checkUsername }; diff --git a/src/api/dashboard-home.jsx b/src/api/dashboard-home.jsx new file mode 100644 index 0000000..6f14ea0 --- /dev/null +++ b/src/api/dashboard-home.jsx @@ -0,0 +1,48 @@ +import { SendRequest } from '../components/Global/ApiRequest'; + +const getTotal = async (query = '') => { + const prefix = `${query ? `?${query}` : ''}`; + const fullUrl = `${import.meta.env.VITE_API_SERVER}/dashboard/${prefix}`; + try { + const response = await SendRequest({ + method: 'get', + prefix: `dashboard/${prefix}`, + }); + return response; + } catch (error) { + console.error(`[API Call] Failed: GET ${fullUrl}`, error); + throw error; + } +}; + +const getTotalPermit = async (query = '') => { + const prefix = `dashboard/permit-total${query ? `?${query}` : ''}`; + const fullUrl = `${import.meta.env.VITE_API_SERVER}/${prefix}`; + try { + const response = await SendRequest({ + method: 'get', + prefix, + }); + return response; + } catch (error) { + console.error(`[API Call] Failed: GET ${fullUrl}`, error); + throw error; + } +}; + +const getTotalPermitPerYear = async (query = '') => { + const prefix = `dashboard/permit-breakdown${query ? `?${query}` : ''}`; + const fullUrl = `${import.meta.env.VITE_API_SERVER}/${prefix}`; + try { + const response = await SendRequest({ + method: 'get', + prefix, + }); + return response; + } catch (error) { + console.error(`[API Call] Failed: GET ${fullUrl}`, error); + throw error; + } +}; + +export { getTotal, getTotalPermit, getTotalPermitPerYear }; \ No newline at end of file diff --git a/src/api/master-apd.jsx b/src/api/master-apd.jsx new file mode 100644 index 0000000..c39c14a --- /dev/null +++ b/src/api/master-apd.jsx @@ -0,0 +1,45 @@ +import { SendRequest } from '../components/Global/ApiRequest'; + +const getAllApd = async (queryParams) => { + const response = await SendRequest({ + method: 'get', + prefix: `apd?${queryParams.toString()}`, + }); + return response; +}; + +const createApd = async (queryParams) => { + const response = await SendRequest({ + method: 'post', + prefix: `apd`, + params: queryParams, + }); + return response.data; +}; + +const updateApd = async (vendor_id, queryParams) => { + const response = await SendRequest({ + method: 'put', + prefix: `apd/${vendor_id}`, + params: queryParams, + }); + return response.data; +}; + +const deleteApd = async (queryParams) => { + const response = await SendRequest({ + method: 'delete', + prefix: `apd/${queryParams}`, + }); + return response.data; +}; + +const getJenisPermit = async () => { + const response = await SendRequest({ + method: 'get', + prefix: `apd/jenis-permit`, + }); + return response.data; +}; + +export { getAllApd, createApd, updateApd, deleteApd, getJenisPermit }; diff --git a/src/api/user-admin.jsx b/src/api/user-admin.jsx new file mode 100644 index 0000000..72dba82 --- /dev/null +++ b/src/api/user-admin.jsx @@ -0,0 +1,84 @@ +// user-admin.jsx +import axios from 'axios'; +import { SendRequest } from '../components/Global/ApiRequest'; + +const baseURL = import.meta.env.VITE_API_SERVER; + +const getAllUser = async (queryParams) => { + const response = await SendRequest({ + method: 'get', + prefix: `admin-user?${queryParams.toString()}`, + }); + return response; +}; + +const getUserDetail = async (id) => { + const response = await SendRequest({ + method: 'get', + prefix: `admin-user/${id}`, + }); + return response; +}; + +const updateUser = async (id, data) => { + const response = await SendRequest({ + method: 'put', + prefix: `admin-user/${id}`, + params: data, + }); + return response; +}; + +const deleteUser = async (id) => { + const response = await SendRequest({ + method: 'delete', + prefix: `admin-user/${id}`, + }); + return response; +}; + +const approvalUser = async (id, queryParams) => { + const response = await SendRequest({ + method: 'post', + prefix: `admin-user/approve/${id}`, + params: queryParams, + }); + return response; +}; + +const uploadFile = async (formData) => { + try { + const token = localStorage.getItem('token')?.replace(/"/g, '') || ''; + const url = `${baseURL}/file-upload`; + + const response = await axios.post(url, formData, { + headers: { + Authorization: `Bearer ${token}`, + 'Accept-Language': 'en_US', + 'Content-Type': 'multipart/form-data', + }, + }); + + return { + statusCode: response.data?.statusCode ?? 0, + message: response.data?.message ?? '', + data: response.data?.data ?? {}, + }; + } catch (error) { + console.error('❌ ERROR di uploadFile:', error); + return { + statusCode: error?.response?.status || 500, + message: error?.response?.data?.message || 'Upload gagal', + data: {}, + }; + } +}; + + + + + + + + +export { getAllUser, getUserDetail, updateUser, deleteUser, approvalUser, uploadFile }; \ No newline at end of file