import axios from 'axios'; import Constants from 'expo-constants'; const api = axios.create({ baseURL: Constants?.expoConfig?.extra?.URL_API }); export const apiCheckPhoneLogin = async (body: { phone: string }) => { const response = await api.post('/auth/login', body) return response.data; } export const apiSendOtp = async (body: { phone: string, otp: number }) => { const res = await axios.get(`${Constants.expoConfig?.extra?.URL_OTP}/code?nom=${body.phone}&text=*Desa%2B*%0AMasukkan%20kode%20ini%20*${encodeURIComponent(body.otp)}*%20pada%20aplikasi%20Desa%2B%20anda.%20Jangan%20berikan%20pada%20siapapun.`) return res.status } export const apiGetProfile = async ({ id }: { id: string }) => { const response = await api.get(`mobile/user/${id}`); return response.data; }; export const apiEditProfile = async (data: FormData) => { const response = await api.put(`/mobile/user/profile`, data, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data; }; export const apiGetSearch = async ({ text, user }: { text: string, user: string }) => { const response = await api.get(`mobile/home/search?search=${text}&user=${user}`); return response.data; }; export const apiGetBanner = async ({ user }: { user: string }) => { const response = await api.get(`mobile/banner?user=${user}`); return response.data; }; export const apiCreateBanner = async (data: FormData) => { const response = await api.post('mobile/banner', data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiDeleteBanner = async (data: { user: string }, id: string) => { const response = await api.delete(`mobile/banner/${id}`, { data }) return response.data; }; export const apiGetBannerOne = async ({ user, id }: { user: string, id: string }) => { const response = await api.get(`mobile/banner/${id}?user=${user}`); return response.data; }; export const apiEditBanner = async (data: FormData, id: string) => { const response = await api.put(`mobile/banner/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiGetDataHome = async ({ cat, user }: { cat: 'kegiatan' | 'division' | 'progress' | 'dokumen' | 'event' | 'discussion' | 'header' | 'check-late-project', user: string }) => { const response = await api.get(`mobile/home?user=${user}&cat=${cat}`); return response.data; }; export const apiGetGroup = async ({ user, active, search }: { user: string, active: string, search: string }) => { const response = await api.get(`mobile/group?user=${user}&active=${active}&search=${search}`); return response.data; }; export const apiCreateGroup = async (data: { user: string, name: string }) => { await api.post('mobile/group', data).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiEditGroup = async (data: { user: string, name: string }, id: string) => { await api.put(`mobile/group/${id}`, data).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiDeleteGroup = async (data: { user: string, isActive: boolean }, id: string) => { await api.delete(`mobile/group/${id}`, { data }).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiGetPosition = async ({ user, active, search, group }: { user: string, active: string, search: string, group?: string }) => { const response = await api.get(`mobile/position?user=${user}&active=${active}&group=${group}&search=${search}`); return response.data; }; export const apiCreatePosition = async (data: { user: string, name: string, idGroup: string }) => { await api.post('mobile/position', data).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiDeletePosition = async (data: { user: string, isActive: boolean }, id: string) => { await api.delete(`mobile/position/${id}`, { data }).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiEditPosition = async (data: { user: string, name: string, idGroup: string }, id: string) => { const response = await api.put(`mobile/position/${id}`, data) return response.data }; export const apiGetUser = async ({ user, active, search, group, page }: { user: string, active: string, search: string, group?: string, page?: number }) => { const response = await api.get(`mobile/user?user=${user}&active=${active}&group=${group}&search=${search}&page=${page}`); return response.data; }; export const apiCreateUser = async ({ data }: { data: FormData }) => { const response = await api.post('/mobile/user', data, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data; }; export const apiDeleteUser = async (data: { user: string, isActive: boolean }, id: string) => { const response = await api.delete(`mobile/user/${id}`, { data }) return response.data }; export const apiEditUser = async (data: FormData, id: string) => { const response = await api.put(`/mobile/user/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data; }; export const apiGetDiscussionGeneral = async ({ user, active, search, group, page }: { user: string, active: string, search: string, group?: string, page?: number }) => { const response = await api.get(`mobile/discussion-general?user=${user}&active=${active}&group=${group}&search=${search}&page=${page}`); return response.data; }; export const apiGetDiscussionGeneralOne = async ({ id, user, cat }: { id: string, user: string, cat: string }) => { const response = await api.get(`mobile/discussion-general/${id}?user=${user}&cat=${cat}`); return response.data; }; export const apiSendDiscussionGeneralCommentar = async ({ id, data }: { id: string, data: { desc: string, user: string } }) => { const response = await api.post(`/mobile/discussion-general/${id}/comment`, data) return response.data; }; export const apiDeleteMemberDiscussionGeneral = async (data: { user: string, idUser: string }, id: string) => { await api.delete(`mobile/discussion-general/${id}/member`, { data }).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiUpdateStatusDiscussionGeneral = async ({ id, data }: { id: string, data: { status: number, user: string } }) => { const response = await api.post(`/mobile/discussion-general/${id}`, data) return response.data; }; export const apiDeleteDiscussionGeneral = async (data: { user: string, active: boolean }, id: string) => { await api.delete(`mobile/discussion-general/${id}`, { data }).then(response => { return response.data; }) .catch(error => { console.error('Error:', error); }); }; export const apiEditDiscussionGeneral = async (data: { user: string, title: string, desc: string }, id: string) => { const response = await api.put(`/mobile/discussion-general/${id}`, data) return response.data; }; export const apiCreateDiscussionGeneral = async ({ data }: { data: { idGroup: string, title: string, desc: string, user: string, member: [] } }) => { const response = await api.post(`/mobile/discussion-general`, data) return response.data; }; export const apiAddMemberDiscussionGeneral = async ({ data, id }: { data: { user: string, member: any[] }, id: string }) => { const response = await api.post(`/mobile/discussion-general/${id}/member`, data) return response.data; }; export const apiGetAnnouncement = async ({ user, search, page }: { user: string, search: string, page?: number }) => { const response = await api.get(`mobile/announcement?user=${user}&search=${search}&page=${page}`); return response.data; }; export const apiGetDivisionGroup = async ({ user }: { user: string }) => { const response = await api.get(`mobile/group/get-division?user=${user}`); return response.data; }; export const apiCreateAnnouncement = async ({ data }: { data: { title: string, desc: string, user: string, groups: any[] } }) => { const response = await api.post(`/mobile/announcement/`, data) return response.data; }; export const apiGetAnnouncementOne = async ({ user, id }: { user: string, id: string }) => { const response = await api.get(`mobile/announcement/${id}?user=${user}`); return response.data; }; export const apiEditAnnouncement = async (data: { title: string, desc: string, user: string, groups: any[] }, id: string) => { const response = await api.put(`/mobile/announcement/${id}`, data) return response.data; }; export const apiDeleteAnnouncement = async (data: { user: string }, id: string) => { const response = await api.delete(`mobile/announcement/${id}`, { data }) return response.data }; export const apiGetProject = async ({ user, status, search, group, kategori, page }: { user: string, status: string, search: string, group?: string, kategori?: string, page?: number }) => { const response = await api.get(`mobile/project?user=${user}&status=${status}&group=${group}&search=${search}&cat=${kategori}&page=${page}`); return response.data; }; export const apiGetProjectOne = async ({ user, cat, id }: { user: string, cat: 'data' | 'progress' | 'task' | 'file' | 'member' | 'link', id: string }) => { const response = await api.get(`mobile/project/${id}?user=${user}&cat=${cat}`); return response.data; }; export const apiEditProject = async (data: { name: string, user: string }, id: string) => { const response = await api.put(`/mobile/project/${id}`, data) return response.data; }; export const apiReportProject = async (data: { report: string, user: string }, id: string) => { const response = await api.put(`/mobile/project/${id}/lainnya`, data) return response.data; }; export const apiCreateProjectTask = async ({ data, id }: { data: { name: string, dateStart: string, user: string, dateEnd: string, dataDetail: any[] }, id: string }) => { const response = await api.post(`/mobile/project/${id}`, data) return response.data; }; export const apiCancelProject = async (data: { user: string, reason: string }, id: string) => { const response = await api.delete(`mobile/project/${id}`, { data }) return response.data }; export const apiUpdateStatusProjectTask = async (data: { user: string, status: number, idProject: string }, id: string) => { const response = await api.put(`mobile/project/detail/${id}`, data) return response.data }; export const apiDeleteProjectTask = async (data: { user: string, idProject: string }, id: string) => { const response = await api.delete(`mobile/project/detail/${id}`, { data }) return response.data }; export const apiGetProjectTask = async ({ user, id, cat }: { user: string, id: string, cat?: string }) => { const response = await api.get(`mobile/project/detail/${id}?user=${user}${cat ? `&cat=${cat}` : ""}`); return response.data; }; export const apiEditProjectTask = async ({ data, id }: { data: { title: string, dateStart: string, user: string, dateEnd: string, dataDetail: any[] }, id: string }) => { const response = await api.post(`/mobile/project/detail/${id}`, data) return response.data; }; export const apiDeleteProjectMember = async (data: { user: string, idUser: string }, id: string) => { const response = await api.delete(`mobile/project/${id}/member`, { data }) return response.data }; export const apiAddMemberProject = async ({ data, id }: { data: { user: string, member: any[] }, id: string }) => { const response = await api.post(`/mobile/project/${id}/member`, data) return response.data; }; export const apiCreateProject = async (data: FormData) => { const response = await api.post(`/mobile/project`, data, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data; }; export const apiDeleteProject = async (data: { user: string }, id: string) => { const response = await api.delete(`/mobile/project/${id}/lainnya`, { data }) return response.data; }; export const apiAddLinkProject = async (data: { user: string, link: string }, id: string) => { const response = await api.post(`/mobile/project/${id}/link`, data) return response.data; }; export const apiAddFileProject = async ({ data, id }: { data: FormData, id: string }) => { const response = await api.post(`/mobile/project/file/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiCheckFileProject = async ({ data, id }: { data: FormData, id: string }) => { const response = await api.put(`/mobile/project/file/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiDeleteFileProject = async (data: { user: string }, id: string) => { const response = await api.delete(`/mobile/project/file/${id}`, { data }) return response.data; }; export const apiDeleteLinkProject = async (data: { idLink: string, user: string }, id: string) => { const response = await api.delete(`/mobile/project/${id}/link`, { data }) return response.data; }; export const apiGetDivision = async ({ user, search, group, kategori, active, page }: { user: string, search: string, group?: string, kategori?: string, active?: string, page?: number }) => { const response = await api.get(`mobile/division?user=${user}&active=${active}&group=${group}&search=${search}&cat=${kategori}&page=${page}`); return response.data; }; export const apiGetDivisionReport = async ({ user, cat, date, dateEnd, division, group }: { user: string, cat: 'table-progress' | 'lainnya', date: string, dateEnd: string, division: string, group?: string }) => { const response = await api.get(`mobile/division/report?user=${user}&cat=${cat}&date=${date}&date-end=${dateEnd}&division=${division}&group=${group}`); return response.data; }; export const apiGetDivisionOneFeature = async ({ user, cat, id }: { user: string, cat: 'jumlah' | 'today-task' | 'new-file' | 'new-discussion' | 'check-member' | 'check-admin', id: string }) => { const response = await api.get(`mobile/division/${id}/detail?user=${user}&cat=${cat}`); return response.data; }; export const apiGetDivisionOneDetail = async ({ user, id }: { user: string, id: string }) => { const response = await api.get(`mobile/division/${id}?user=${user}`); return response.data; }; export const apiUpdateStatusAdminDivision = async (data: { user: string, id: string, isAdmin: boolean }, id: string) => { const response = await api.put(`mobile/division/${id}/detail`, data) return response.data }; export const apiDeleteMemberDivision = async (data: { user: string, id: string }, id: string) => { const response = await api.delete(`/mobile/division/${id}/detail`, { data }) return response.data; }; export const apiAddMemberDivision = async ({ data, id }: { data: { user: string, member: any[] }, id: string }) => { const response = await api.post(`/mobile/division/${id}/detail`, data) return response.data; }; export const apiEditDivision = async (data: { user: string, name: string, desc: string }, id: string) => { const response = await api.put(`mobile/division/${id}`, data) return response.data }; export const apiUpdateStatusDivision = async ({ data, id }: { data: { user: string, isActive: boolean }, id: string }) => { const response = await api.post(`/mobile/division/${id}/status`, data) return response.data; }; export const apiGetDivisionMember = async ({ user, id, search }: { user: string, id: string, search: string }) => { const response = await api.get(`mobile/division/${id}/member?user=${user}&search=${search}`); return response.data; }; export const apiGetListDivisionByIdDivision = async ({ user, search, division }: { user: string, search: string, division: string }) => { const response = await api.get(`mobile/division/more?user=${user}&search=${search}&division=${division}`); return response.data; }; export const apiCreateDivision = async (data: { data: { idGroup: string, name: string, desc: string }, member: [], admin: string[], user: string }) => { const response = await api.post(`/mobile/division`, data) return response.data; }; export const apiGetDiscussion = async ({ user, search, division, active, page }: { user: string, search: string, division: string, active?: string, page?: number }) => { const response = await api.get(`mobile/discussion?user=${user}&active=${active}&search=${search}&division=${division}&page=${page}`); return response.data; }; export const apiGetDiscussionOne = async ({ id, user, cat }: { id: string, user: string, cat: 'data' | 'comment' }) => { const response = await api.get(`mobile/discussion/${id}?user=${user}&cat=${cat}`); return response.data; }; export const apiSendDiscussionCommentar = async ({ data, id }: { data: { user: string, comment: string }, id: string }) => { const response = await api.post(`/mobile/discussion/${id}/comment`, data) return response.data; }; export const apiEditDiscussion = async ({ data, id }: { data: { user: string, desc: string }, id: string }) => { const response = await api.post(`/mobile/discussion/${id}`, data) return response.data; }; export const apiArchiveDiscussion = async (data: { user: string, active: boolean }, id: string) => { const response = await api.put(`mobile/discussion/${id}`, data) return response.data }; export const apiOpenCloseDiscussion = async (data: { user: string, status: number }, id: string) => { const response = await api.delete(`mobile/discussion/${id}`, { data }) return response.data }; export const apiCreateDiscussion = async ({ data }: { data: { user: string, desc: string, idDivision: string } }) => { const response = await api.post(`/mobile/discussion`, data) return response.data; }; export const apiGetCalendarByDateDivision = async ({ user, date, division }: { user: string, date: string, division: string, }) => { const response = await api.get(`mobile/calendar?user=${user}&date=${date}&division=${division}`); return response.data; }; export const apiGetIndicatorCalendar = async ({ user, date, division }: { user: string, date: string, division: string, }) => { const response = await api.get(`mobile/calendar/indicator?user=${user}&date=${date}&division=${division}`); return response.data; }; export const apiGetCalendarOne = async ({ user, id, cat }: { user: string, id: string, cat: 'data' | 'member' }) => { const response = await api.get(`mobile/calendar/${id}?user=${user}&cat=${cat}`); return response.data; }; export const apiDeleteCalendarMember = async (data: { user: string, idUser: string }, id: string) => { const response = await api.delete(`/mobile/calendar/${id}/member`, { data }) return response.data }; export const apiAddMemberCalendar = async ({ data, id }: { data: { user: string, member: any[] }, id: string }) => { const response = await api.post(`/mobile/calendar/${id}/member`, data) return response.data; }; export const apiDeleteCalendar = async (data: { user: string }, id: string) => { const response = await api.delete(`/mobile/calendar/${id}`, { data }) return response.data }; export const apiGetCalendarHistory = async ({ user, search, division, page }: { user: string, search: string, division: string, page?: number }) => { const response = await api.get(`mobile/calendar/history?user=${user}&search=${search}&division=${division}&page=${page}`); return response.data; }; export const apiCreateCalendar = async ({ data }: { data: { idDivision: string, title: string, desc: string, timeStart: string, timeEnd: string, dateStart: string, repeatEventTyper: string, repeatValue: string, linkMeet: string, member: any[], user: string } }) => { const response = await api.post(`/mobile/calendar`, data) return response.data; }; export const apiUpdateCalendar = async ({ data, id }: { data: { title: string, desc: string, timeStart: string, timeEnd: string, dateStart: string, repeatEventTyper: string, repeatValue: number, linkMeet: string, user: string }, id: string }) => { const response = await api.put(`/mobile/calendar/${id}`, data) return response.data; }; export const apiGetTask = async ({ user, status, search, division, page }: { user: string, status: string, search: string, division: string, page?: number }) => { const response = await api.get(`mobile/task?user=${user}&status=${status}&division=${division}&search=${search}&page=${page}`); return response.data; }; export const apiGetTaskOne = async ({ user, cat, id }: { user: string, cat: 'data' | 'progress' | 'task' | 'file' | 'member' | 'link', id: string }) => { const response = await api.get(`mobile/task/${id}?user=${user}&cat=${cat}`); return response.data; }; export const apiUpdateStatusTaskDivision = async (data: { user: string, status: number, idProject: string }, id: string) => { const response = await api.put(`mobile/task/detail/${id}`, data) return response.data }; export const apiGetTaskTugas = async ({ user, id, cat }: { user: string, id: string, cat?: string }) => { const response = await api.get(`mobile/task/detail/${id}?user=${user}${cat ? `&cat=${cat}` : ""}`); return response.data; }; export const apiEditTaskTugas = async ({ data, id }: { data: { title: string, dateStart: string, user: string, dateEnd: string, dataDetail: any[] }, id: string }) => { const response = await api.post(`/mobile/task/detail/${id}`, data) return response.data; }; export const apiDeleteTaskTugas = async (data: { user: string, idProject: string }, id: string) => { const response = await api.delete(`mobile/task/detail/${id}`, { data }) return response.data }; export const apiDeleteFileTask = async (data: { user: string }, id: string) => { const response = await api.delete(`/mobile/task/file/${id}`, { data }) return response.data; }; export const apiDeleteLinkTask = async (data: { user: string, idLink: string }, id: string) => { const response = await api.delete(`/mobile/task/${id}/link`, { data }) return response.data; }; export const apiDeleteTaskMember = async (data: { user: string, idUser: string }, id: string) => { const response = await api.delete(`mobile/task/${id}/member`, { data }) return response.data }; export const apiCreateTaskTugas = async ({ data, id }: { data: { title: string, dateStart: string, user: string, dateEnd: string, idDivision: string, dataDetail: any[] }, id: string }) => { const response = await api.post(`/mobile/task/${id}`, data) return response.data; }; export const apiCheckFileTask = async ({ data, id }: { data: FormData, id: string }) => { const response = await api.put(`/mobile/task/file/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiAddFileTask = async ({ data, id }: { data: FormData, id: string }) => { const response = await api.post(`/mobile/task/file/${id}`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiEditTask = async (data: { title: string, user: string }, id: string) => { const response = await api.put(`/mobile/task/${id}`, data) return response.data; }; export const apiReportTask = async (data: { report: string, user: string }, id: string) => { const response = await api.put(`/mobile/task/${id}/lainnya`, data) return response.data; }; export const apiCancelTask = async (data: { user: string, reason: string }, id: string) => { const response = await api.delete(`mobile/task/${id}`, { data }) return response.data }; export const apiAddMemberTask = async ({ data, id }: { data: { user: string, member: any[], idDivision: string }, id: string }) => { const response = await api.post(`/mobile/task/${id}/member`, data) return response.data; }; export const apiCreateTask = async (data: FormData) => { const response = await api.post(`/mobile/task`, data, { headers: { 'Content-Type': 'multipart/form-data', }, }) return response.data; }; export const apiDeleteTask = async (data: { user: string }, id: string) => { const response = await api.delete(`/mobile/task/${id}/lainnya`, { data }) return response.data; }; export const apiAddLinkTask = async (data: { user: string, link: string, idDivision: string }, id: string) => { const response = await api.post(`/mobile/task/${id}/link`, data) return response.data; }; export const apiGetDocument = async ({ user, path, division, category }: { user: string, path: string, division: string, category: 'all' | 'folder' }) => { const response = await api.get(`mobile/document?user=${user}&path=${path}&division=${division}&category=${category}`); return response.data; }; export const apiGetDocumentInformasi = async ({ user, item, cat }: { user: string, item: string, cat: 'share' | 'lainnya' }) => { const response = await api.get(`mobile/document/more?user=${user}&item=${item}&cat=${cat}`); return response.data; }; export const apiDocumentRename = async (data: { name: string, user: string, id: string, path: string, idDivision: string, extension: string }) => { const response = await api.put(`/mobile/document`, data) return response.data; }; export const apiDocumentDelete = async (data: { user: string, data: any[] }) => { const response = await api.delete(`/mobile/document`, { data }) return response.data }; export const apiCreateFolderDocument = async ({ data }: { data: { name: string, path: string, idDivision: string, user: string } }) => { const response = await api.post(`/mobile/document`, data) return response.data; }; export const apiUploadFileDocument = async ({ data }: { data: FormData }) => { const response = await api.post(`/mobile/document/upload`, data, { headers: { 'Content-Type': 'multipart/form-data', }, } ) return response.data; }; export const apiMoveDocument = async (data: { path: string, dataItem: any[], user: string }) => { const response = await api.post(`/mobile/document/more`, data) return response.data; }; export const apiCopyDocument = async (data: { path: string, dataItem: any[], user: string, idDivision: string }) => { const response = await api.put(`/mobile/document/more`, data) return response.data; }; export const apiShareDocument = async (data: { dataDivision: any[], dataItem: any[], user: string }) => { const response = await api.delete(`/mobile/document/more`, { data }) return response.data; }; export const apiRegisteredToken = async (data: { user: string, token: string }) => { const response = await api.post(`/mobile/auth-token`, data) return response.data; }; export const apiUnregisteredToken = async (data: { user: string, token: string }) => { const response = await api.put(`/mobile/auth-token`, data) return response.data; }; export const apiGetNotification = async ({ user, page }: { user: string, page?: number }) => { const response = await api.get(`mobile/home/notification?user=${user}&page=${page}`); return response.data; }; export const apiReadOneNotification = async (data: { user: string, id: string }) => { const response = await api.put(`/mobile/home/notification`, data) return response.data; };