import { AlertDefaultSystem, ButtonCustom, Grid } from "@/components"; import { apiInvestmentDelete, apiInvestmentUpdateStatus, } from "@/service/api-client/api-investment"; import { router } from "expo-router"; import { useState } from "react"; import Toast from "react-native-toast-message"; export default function Investment_ButtonStatusSection({ id, status, buttonPublish, }: { id: string; status: string; buttonPublish?: React.ReactNode; }) { const path : any= (status: string) => { return `/investment/(tabs)/portofolio?status=${status}`; }; const [isLoading, setIsLoading] = useState(false); const handleBatalkanReview = () => { AlertDefaultSystem({ title: "Batalkan Review", message: "Apakah Anda yakin ingin batalkan review ini?", textLeft: "Batal", textRight: "Ya", onPressRight: async () => { try { setIsLoading(true); const response = await apiInvestmentUpdateStatus({ id: id as string, status: "draft", }); if (response.success) { Toast.show({ type: "success", text1: "Berhasil Batalkan Review", }); router.replace(path("draft")); } else { Toast.show({ type: "error", text1: "Gagal Batalkan Review", }); } } catch (error) { console.log("[ERROR]", error); } finally { setIsLoading(false); } }, }); }; const handleAjukanReview = () => { AlertDefaultSystem({ title: "Ajukan Review", message: "Apakah Anda yakin ingin ajukan review ini?", textLeft: "Batal", textRight: "Ya", onPressRight: async () => { try { setIsLoading(true); const response = await apiInvestmentUpdateStatus({ id: id as string, status: "review", }); if (response.success) { Toast.show({ type: "success", text1: "Berhasil Ajukan Review", }); router.replace(path("review")); } else { Toast.show({ type: "error", text1: "Gagal Ajukan Review", }); } } catch (error) { console.log("[ERROR]", error); } finally { setIsLoading(false); } }, }); }; const handleEditKembali = () => { AlertDefaultSystem({ title: "Edit Kembali", message: "Apakah Anda yakin ingin edit kembali ini?", textLeft: "Batal", textRight: "Ya", onPressRight: async () => { try { setIsLoading(true); const response = await apiInvestmentUpdateStatus({ id: id as string, status: "draft", }); if (response.success) { Toast.show({ type: "success", text1: "Berhasil Update Status", }); router.replace(path("draft")); } else { Toast.show({ type: "error", text1: "Gagal Update Status", }); } } catch (error) { console.log("[ERROR]", error); } finally { setIsLoading(false); } }, }); }; const handleOpenDeleteAlert = () => { AlertDefaultSystem({ title: "Hapus", message: "Apakah Anda yakin ingin menghapus data ini?", textLeft: "Batal", textRight: "Hapus", onPressRight: async () => { try { setIsLoading(true); const response = await apiInvestmentDelete({ id: id as string, }); if (response.success) { Toast.show({ type: "success", text1: "Berhasil Hapus Data", }); router.back(); } else { Toast.show({ type: "error", text1: "Gagal Hapus Data", }); } } catch (error) { console.log("[ERROR]", error); } finally { setIsLoading(false); } }, }); }; const DeleteButton = () => { return ( <> Hapus ); }; switch (status) { case "publish": return <>{buttonPublish}; case "review": return ( Batalkan Review ); case "draft": return ( <> Ajukan Review {DeleteButton()} ); case "reject": return ( <> Edit Kembali {DeleteButton()} ); default: return Status Undifined; } }