import React, { useState } from 'react'; import { Button, Modal, Divider, Card, Tag, ConfigProvider, Typography } from 'antd'; import { NotifAlert, NotifOk, NotifConfirmDialog } from './ToastNotif'; import { approvalUser } from '../../api/user-admin'; import { toAppDateFormatter } from './Formatter'; const { Text } = Typography; const StatusUserButton = ({ color, name, data, readOnly, style }) => { const [isModalVisible, setIsModalVisible] = useState(false); const [confirmLoading, setConfirmLoading] = useState(false); const showModal = () => { setIsModalVisible(true); }; const handleCancel = () => { setIsModalVisible(false); }; const statusColor = data?.warna || color || '#999'; const statusName = data?.status_name || name || 'N/A'; const userCreated = data?.user_add_name || 'Pengguna tidak dikenal'; const userUpdated = data?.user_upd_name || 'Pengguna tidak dikenal'; const handleApprove = async () => { setConfirmLoading(true); try { const payload = { approve_user: true, }; const response = await approvalUser(data?.id_register, payload); if (response?.data?.statusCode === 200) { NotifOk({ icon: 'success', title: 'Berhasil', message: 'User berhasil di-approve.', }); setIsModalVisible(false); } else { NotifAlert({ icon: 'error', title: 'Gagal', message: response?.data?.message || 'Gagal approve user.', }); } } catch (err) { console.error('Error saat approve user:', err); NotifAlert({ icon: 'error', title: 'Error', message: 'Terjadi kesalahan pada server.', }); } finally { setConfirmLoading(false); } }; const handleReject = async () => { setConfirmLoading(true); NotifConfirmDialog({ icon: 'question', title: 'Konfirmasi Penolakan', message: 'Apakah kamu yakin ingin menolak permintaan ini?', confirmButtonText: 'Reject', onConfirm: async () => { try { const payload = { approve_user: false, }; const response = await approvalUser(data.id_register, payload); if (response?.data?.statusCode === 200) { NotifOk({ icon: 'success', title: 'Ditolak', message: 'User berhasil ditolak.', }); setIsModalVisible(false); } else { NotifAlert({ icon: 'error', title: 'Gagal', message: response?.message || 'Gagal reject user.', }); } } catch (err) { NotifAlert({ icon: 'error', title: 'Error', message: 'Terjadi kesalahan pada server.', }); } finally { setConfirmLoading(false); } }, onCancel: () => { }, }); }; return ( <> {statusName} } open={isModalVisible} onCancel={handleCancel} footer={[ <> {data?.status_register === 1 && ( <> )} , ]} > {data ? ( <> {data.updated_at !== data.created_at && (
Updated at {toAppDateFormatter(data.updated_at)}
Diubah terakhir oleh {userUpdated}
)}
Created at {toAppDateFormatter(data.created_at)}
Dibuat oleh {userCreated}
) : ( Belum ada riwayat status. )}
); }; export default StatusUserButton;