import api from './client';

export const apiGetTask = async ({ user, status, search, division, page, year }: { user: string, status: string, search: string, division: string, page?: number, year?: string }) => {
   const response = await api.get(`mobile/task?user=${user}&status=${status}&division=${division}&search=${search}&page=${page}&year=${year}`);
   return response.data;
};

export const apiGetTahunTask = async ({ user, division }: { user: string, division: string }) => {
   const response = await api.get(`mobile/task/tahun?user=${user}&division=${division}`);
   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 apiCreateTask = async (data: FormData) => {
   const response = await api.post(`/mobile/task`, 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 apiDeleteTask = async (data: { user: string }, id: string) => {
   const response = await api.delete(`/mobile/task/${id}/lainnya`, { 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 apiDeleteTaskMember = async (data: { user: string, idUser: string }, id: string) => {
   const response = await api.delete(`mobile/task/${id}/member`, { 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 apiDeleteLinkTask = async (data: { user: string, idLink: string }, id: string) => {
   const response = await api.delete(`/mobile/task/${id}/link`, { 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 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 apiDeleteFileTask = async (data: { user: string }, id: string) => {
   const response = await api.delete(`/mobile/task/file/${id}`, { data })
   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 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 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 apiGetTugasTaskFile = async ({ user, id }: { user: string, id: string }) => {
   const response = await api.get(`/mobile/task/tugas/file/${id}`, { params: { user } })
   return response.data;
};

export const apiAddTugasTaskFile = async ({ data, id }: { data: FormData, id: string }) => {
   const response = await api.post(`/mobile/task/tugas/file/${id}`, data, {
      headers: { 'Content-Type': 'multipart/form-data' },
   })
   return response.data;
};

export const apiLinkTugasTaskFile = async ({ user, idFile, id }: { user: string, idFile: string, id: string }) => {
   const response = await api.patch(`/mobile/task/tugas/file/${id}`, { user, idFile })
   return response.data;
};

export const apiDeleteTugasTaskFile = async (data: { user: string }, id: string) => {
   const response = await api.delete(`/mobile/task/tugas/file/${id}`, { data })
   return response.data;
};

export const apiGetTaskTugasApprovals = async ({ user, id }: { user: string, id: string }) => {
   const response = await api.get(`/mobile/task/tugas/${id}/approval`, { params: { user } })
   return response.data;
};

export const apiSubmitTaskTugas = async ({ user, id }: { user: string, id: string }) => {
   const response = await api.post(`/mobile/task/tugas/${id}/approval`, { user })
   return response.data;
};

export const apiApproveRejectTaskTugas = async ({ user, id, action, note }: { user: string, id: string, action: 'approve' | 'reject', note?: string }) => {
   const response = await api.put(`/mobile/task/tugas/${id}/approval`, { user, action, note })
   return response.data;
};
