diff --git a/src/app/production/project-flock/chickin/detail/layout.tsx b/src/app/production/project-flock/chickin/detail/layout.tsx deleted file mode 100644 index 7220dfa1..00000000 --- a/src/app/production/project-flock/chickin/detail/layout.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import SuspenseHelper from '@/components/helper/SuspenseHelper'; - -const Layout = ({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) => { - return {children}; -}; - -export default Layout; diff --git a/src/app/production/project-flock/chickin/detail/page.tsx b/src/app/production/project-flock/chickin/detail/page.tsx deleted file mode 100644 index daea0f0a..00000000 --- a/src/app/production/project-flock/chickin/detail/page.tsx +++ /dev/null @@ -1,343 +0,0 @@ -'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/chickin'; -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; diff --git a/src/components/pages/production/project-flock/ProjectFlockTable.tsx b/src/components/pages/production/project-flock/ProjectFlockTable.tsx index b455725e..a315b332 100644 --- a/src/components/pages/production/project-flock/ProjectFlockTable.tsx +++ b/src/components/pages/production/project-flock/ProjectFlockTable.tsx @@ -579,7 +579,7 @@ const ProjectFlockTable = () => { (() => { + const trimFlock = + initialValues?.flock_name?.slice( + 0, + initialValues?.flock_name?.lastIndexOf(' ') + ) ?? ''; return { - name: initialValues?.flock_name, - flock: initialValues?.flock + flock: initialValues?.flock_name ? { - value: initialValues?.flock?.id ?? 0, + value: + optionsFlock.find((flock) => { + return flock.label == trimFlock; + })?.value ?? 0, label: - initialValues?.flock?.name ?? initialValues?.flock_name ?? '', + formType != 'detail' + ? (optionsFlock.find((flock) => { + return flock.label == trimFlock; + })?.label ?? '') + : initialValues?.flock_name, } : null, area: initialValues?.area @@ -318,8 +329,16 @@ const ProjectFlockForm = ({ label: initialValues.location.name, } : null, - flock_id: initialValues?.flock?.id ?? 0, - flock_name: initialValues?.flock_name ?? '', + flock_name: + optionsFlock.find((flock) => { + return ( + flock.label == + initialValues?.flock_name?.slice( + 0, + initialValues?.flock_name?.lastIndexOf(' ') + ) + ); + })?.label ?? '', area_id: initialValues?.area?.id ?? 0, category: initialValues?.category as NonNullable< 'GROWING' | 'LAYING' | undefined @@ -331,17 +350,35 @@ const ProjectFlockForm = ({ | undefined )[], }; - }, [initialValues]); + }, [initialValues, optionsFlock]); // Formik const formik = useFormik({ initialValues: { - name: initialValues?.flock_name, - flock: initialValues?.flock + flock: initialValues?.flock_name ? { - value: initialValues?.flock?.id ?? 0, + value: + optionsFlock.find((flock) => { + return ( + flock.label == + initialValues?.flock_name?.slice( + 0, + initialValues?.flock_name?.lastIndexOf(' ') + ) + ); + })?.value ?? 0, label: - initialValues?.flock?.name ?? initialValues?.flock_name ?? '', + formType != 'detail' + ? (optionsFlock.find((flock) => { + return ( + flock.label == + initialValues?.flock_name?.slice( + 0, + initialValues?.flock_name?.lastIndexOf(' ') + ) + ); + })?.label ?? '') + : initialValues?.flock_name, } : null, area: initialValues?.area @@ -368,8 +405,18 @@ const ProjectFlockForm = ({ label: initialValues.location.name, } : null, - flock_id: initialValues?.flock?.id ?? 0, - flock_name: initialValues?.flock_name ?? '', + flock_name: + formType != 'detail' + ? optionsFlock.find((flock) => { + return ( + flock.label == + initialValues?.flock_name?.slice( + 0, + initialValues?.flock_name?.lastIndexOf(' ') + ) + ); + })?.label + : (initialValues?.flock_name ?? ''), area_id: initialValues?.area?.id ?? 0, category: initialValues?.category as NonNullable< 'GROWING' | 'LAYING' | undefined @@ -390,7 +437,7 @@ const ProjectFlockForm = ({ onSubmit: async (values) => { setProjectFlockFormErrorMessage(''); const payload: CreateProjectFlockPayload = { - flock_name: values.flock?.label as string, + flock_name: values.flock_name as string, area_id: values.area_id as number, category: values.category as string, fcr_id: values.fcr_id as number, @@ -599,7 +646,6 @@ const ProjectFlockForm = ({
Informasi Umum
- {selectedFlock}
{ - return flock.label === selectedFlock; + return flock.label === formik.values.flock_name; })?.value, } as OptionType) : undefined } onChange={(val) => { optionChangeHandler(val, 'flock'); - setSelectedFlock((val as OptionType)?.label as string); + setSelectedFlock((val as OptionType)?.label); formik.setFieldValue( 'flock_name', (val as OptionType)?.label @@ -812,7 +858,7 @@ const ProjectFlockForm = ({