'use client'; import Button from '@/components/Button'; import Card from '@/components/Card'; import Modal, { useModal } from '@/components/Modal'; import ConfirmationModal from '@/components/modal/ConfirmationModal'; import ChickinForm from '@/components/pages/production/chickin/form/ChickinForm'; import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; import { ChickinApi } from '@/services/api/production'; import { BaseApiResponse } from '@/types/api/api-general'; import { Chickin, ChickinApprovalPayload, } from '@/types/api/production/chickin'; import { Icon } from '@iconify/react'; import { useRouter, useSearchParams } from 'next/navigation'; import { useState } from 'react'; import toast from 'react-hot-toast'; import useSWR from 'swr'; /** * TODO: Refactor code - pindahin detail ke reuseable component * setelah implement approval and reject */ const DetailChickin = () => { const router = useRouter(); const searchParams = useSearchParams(); const chickinId = searchParams.get('chickinId'); const [isApproveLoading, setIsApproveLoading] = useState(false); const [isDeleteLoading, setIsDeleteLoading] = useState(false); const confirmModal = useModal(); const deleteModal = useModal(); const chickinModal = useModal(); const { data: chickin, isLoading, mutate: refreshChickin, } = useSWR(chickinId, (id: number) => ChickinApi.getSingle(id)); const [isApprovedDisabled, setIsApprovedDisabled] = useState( // chickin.data?.approval.step_number == 1 ? false : true true ); const [isRejectedDisabled, setIsRejectedDisabled] = useState(!isApprovedDisabled); const [approvalAction, setApprovalAction] = useState<'APPROVED' | 'REJECTED'>( !isApprovedDisabled ? 'APPROVED' : 'REJECTED' ); if (!chickinId) { router.back(); return (
); } if (!isLoading && (!chickin || isResponseError(chickin))) { router.replace('/404'); return; } if (!isResponseSuccess(chickin)) { return (
); } const confirmationModalClickHandler = async ({ action = 'APPROVED', }: { action: 'APPROVED' | 'REJECTED'; }) => { if (chickin?.data.id === undefined) return; setIsApproveLoading(true); const approveChickinRes = await ChickinApi.customRequest< BaseApiResponse, ChickinApprovalPayload >(`/approvals`, { method: 'POST', payload: { action: action, approvable_ids: [chickin.data.id], }, }); if (isResponseSuccess(approveChickinRes)) { if (refreshChickin) { await refreshChickin(); } toast.success(approveChickinRes.message as string); } if (isResponseError(approveChickinRes)) { toast.error(approveChickinRes?.message as string); } confirmModal.closeModal(); setIsApproveLoading(false); }; const confirmationModalDeleteClickHandler = async () => { setIsDeleteLoading(true); const deleteProjectFlockRes = await ChickinApi.delete( chickin.data?.id as number ); if (isResponseSuccess(deleteProjectFlockRes)) { toast.success(deleteProjectFlockRes?.message as string); router.push('/production/chickin'); } if (isResponseError(deleteProjectFlockRes)) { toast.error(deleteProjectFlockRes?.message as string); } deleteModal.closeModal(); setIsDeleteLoading(false); }; return ( <>
{isLoading && } {!isLoading && isResponseSuccess(chickin) && ( <> {/*
*/}
Flock
{ chickin?.data?.project_flock_kandang?.project_flock?.flock ?.name }
Area
{ chickin.data.project_flock_kandang?.project_flock.area .name }
Kategori
{chickin.data.project_flock_kandang?.project_flock.category}
Lokasi
{ chickin.data.project_flock_kandang?.project_flock.location .name }
Periode
{chickin.data.project_flock_kandang?.project_flock.period}
Kandang
{chickin.data.project_flock_kandang?.kandang.name}
Flock Kandang
{ chickin?.data?.project_flock_kandang?.project_flock?.flock ?.name }{' '} - {chickin.data.project_flock_kandang?.kandang.name}
Tanggal Chickin
{chickin.data.chick_in_date ? new Date(chickin.data.chick_in_date).toLocaleDateString( 'id-ID' ) : '-'}
Jumlah (Ekor)
{chickin.data.quantity?.toLocaleString('id-ID')}
Catatan
{chickin.data.note}
)}

Chickin Kandang -{' '} {chickin?.data?.project_flock_kandang && chickin?.data?.project_flock_kandang.kandang?.name}

{ confirmationModalClickHandler({ action: approvalAction, }); }, }} /> ); }; export default DetailChickin;