diff --git a/src/components/pages/production/chickin/form/tabs/ChickLogsView.tsx b/src/components/pages/production/chickin/form/tabs/ChickLogsView.tsx
index bdffda33..ba489b89 100644
--- a/src/components/pages/production/chickin/form/tabs/ChickLogsView.tsx
+++ b/src/components/pages/production/chickin/form/tabs/ChickLogsView.tsx
@@ -23,7 +23,7 @@ const ChickinLogsView = ({
rawDataApprovals: BaseApproval[];
}) => {
const [chickinErrorMessage, setChickinErrorMessage] = useState('');
- const { openChickinApproveModal } = useChickinStore();
+ const { openChickinApproveModal, openChickinDeleteModal } = useChickinStore();
const handleClickApprove = () => {
openChickinApproveModal(initialValues, async (notes?: string) => {
@@ -44,6 +44,21 @@ const ChickinLogsView = ({
});
};
+ const handleDeleteChickin = (chickinId: number) => {
+ openChickinDeleteModal(chickinId, async () => {
+ const deleteRes = await ChickinApi.delete(chickinId);
+
+ if (isResponseSuccess(deleteRes)) {
+ toast.success(deleteRes?.message || 'Chickin berhasil dihapus');
+ afterSubmit && afterSubmit();
+ }
+
+ if (isResponseError(deleteRes)) {
+ toast.error(deleteRes?.message || 'Gagal menghapus chickin');
+ }
+ });
+ };
+
return (
<>
@@ -86,14 +101,30 @@ const ChickinLogsView = ({
Chick In #{index + 1} - {latestApproval?.step_number}
-
+
+
+
+ {isApproved && (
+
+ )}
+
{/* Tanggal Chick In */}
@@ -169,6 +200,7 @@ const ChickinLogsView = ({
)}
+
>
);
};
diff --git a/src/components/pages/production/project-flock/ProjectFlockTable.tsx b/src/components/pages/production/project-flock/ProjectFlockTable.tsx
index 1ae56fa2..bdc271a6 100644
--- a/src/components/pages/production/project-flock/ProjectFlockTable.tsx
+++ b/src/components/pages/production/project-flock/ProjectFlockTable.tsx
@@ -200,6 +200,7 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
const confirmModal = useModal();
const successModal = useModal();
const chickinApproveModal = useModal();
+ const chickinDeleteModal = useModal();
const closingModal = useModal();
const [approvalAction, setApprovalAction] = useState<'APPROVED' | 'REJECTED'>(
'APPROVED'
@@ -214,6 +215,11 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
chickinApproveCallback,
closeChickinApproveModal,
setChickinApproveLoading,
+ isChickinDeleteModalOpen,
+ isChickinDeleteLoading,
+ chickinDeleteCallback,
+ closeChickinDeleteModal,
+ setChickinDeleteLoading,
} = useChickinStore();
const {
@@ -478,6 +484,14 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
}
}, [isChickinApproveModalOpen, chickinApproveModal]);
+ useEffect(() => {
+ if (isChickinDeleteModalOpen) {
+ chickinDeleteModal.openModal();
+ } else {
+ chickinDeleteModal.closeModal();
+ }
+ }, [isChickinDeleteModalOpen, chickinDeleteModal]);
+
useEffect(() => {
if (isClosingModalOpen) {
closingModal.openModal();
@@ -1208,6 +1222,38 @@ const ProjectFlockTable = ({ refresh }: { refresh?: () => void }) => {
}}
/>
+ {/* Chickin Delete Modal */}
+ {
+ closeChickinDeleteModal();
+ },
+ }}
+ className={{
+ modal: 'z-9999',
+ }}
+ primaryButton={{
+ text: 'Ya',
+ color: 'error',
+ isLoading: isChickinDeleteLoading,
+ onClick: async () => {
+ if (chickinDeleteCallback) {
+ setChickinDeleteLoading(true);
+ try {
+ await chickinDeleteCallback();
+ } finally {
+ setChickinDeleteLoading(false);
+ closeChickinDeleteModal();
+ }
+ }
+ },
+ }}
+ />
+
{/* Filter Modal */}
()(
devtools(
(...args) => ({
...createChickinApprovalSlice(...args),
+ ...createChickinDeleteSlice(...args),
}),
{
name: 'ChickinStore',
diff --git a/src/stores/production/chickin/slices/chickin-delete.slice.ts b/src/stores/production/chickin/slices/chickin-delete.slice.ts
new file mode 100644
index 00000000..5f110b85
--- /dev/null
+++ b/src/stores/production/chickin/slices/chickin-delete.slice.ts
@@ -0,0 +1,57 @@
+import { StateCreator } from 'zustand';
+
+export type ChickinDeleteSlice = {
+ // State
+ isChickinDeleteModalOpen: boolean;
+ selectedChickinIdForDelete: number | null;
+ isChickinDeleteLoading: boolean;
+ chickinDeleteCallback: (() => Promise) | null;
+
+ // Actions
+ openChickinDeleteModal: (
+ chickinId: number,
+ callback: () => Promise
+ ) => void;
+ closeChickinDeleteModal: () => void;
+ setChickinDeleteLoading: (loading: boolean) => void;
+ resetChickinDelete: () => void;
+};
+
+export const createChickinDeleteSlice: StateCreator<
+ ChickinDeleteSlice,
+ [],
+ [],
+ ChickinDeleteSlice
+> = (set) => ({
+ // Initial state
+ isChickinDeleteModalOpen: false,
+ selectedChickinIdForDelete: null,
+ isChickinDeleteLoading: false,
+ chickinDeleteCallback: null,
+
+ // Actions
+ openChickinDeleteModal: (chickinId, callback) =>
+ set({
+ isChickinDeleteModalOpen: true,
+ selectedChickinIdForDelete: chickinId,
+ chickinDeleteCallback: callback,
+ }),
+
+ closeChickinDeleteModal: () =>
+ set({
+ isChickinDeleteModalOpen: false,
+ selectedChickinIdForDelete: null,
+ chickinDeleteCallback: null,
+ }),
+
+ setChickinDeleteLoading: (loading) =>
+ set({ isChickinDeleteLoading: loading }),
+
+ resetChickinDelete: () =>
+ set({
+ isChickinDeleteModalOpen: false,
+ selectedChickinIdForDelete: null,
+ isChickinDeleteLoading: false,
+ chickinDeleteCallback: null,
+ }),
+});