From 9f6fec5a3c5e34d493f44aec9f84e0283b6ff069 Mon Sep 17 00:00:00 2001 From: rstubryan Date: Fri, 23 Jan 2026 20:55:48 +0700 Subject: [PATCH] refactor(FE): Set uniformity week from recording data --- .../uniformity/form/UniformityForm.tsx | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/src/components/pages/production/uniformity/form/UniformityForm.tsx b/src/components/pages/production/uniformity/form/UniformityForm.tsx index ae687213..3ae722b2 100644 --- a/src/components/pages/production/uniformity/form/UniformityForm.tsx +++ b/src/components/pages/production/uniformity/form/UniformityForm.tsx @@ -5,7 +5,6 @@ import { useFormik } from 'formik'; import { useRouter } from 'next/navigation'; import { Icon } from '@iconify/react'; import { toast } from 'react-hot-toast'; -import moment from 'moment'; import DrawerHeader from '@/components/helper/drawer/DrawerHeader'; import { useUiStore } from '@/stores/ui/ui.store'; import { useUniformityStore } from '@/stores/uniformity/uniformity.store'; @@ -28,6 +27,7 @@ import { LocationApi } from '@/services/api/master-data'; import { ProjectFlockApi, ProjectFlockKandangApi, + RecordingApi, } from '@/services/api/production'; import { UniformityApi } from '@/services/api/uniformity'; import { isResponseError, isResponseSuccess } from '@/lib/api-helper'; @@ -40,6 +40,7 @@ import { ProjectFlockKandangLookup, ProjectFlock, } from '@/types/api/production/project-flock'; +import { Recording } from '@/types/api/production/recording'; import { Kandang } from '@/types/api/master-data/kandang'; import UniformityPreviewForm from '@/components/pages/production/uniformity/form/UniformityPreviewForm'; import UniformityResultForm from '@/components/pages/production/uniformity/form/UniformityResultForm'; @@ -200,6 +201,20 @@ const UniformityForm = ({ ? projectFlockKandangLookupData.data : undefined; + // ===== RECORDINGS DATA (FOR WEEK CALCULATION) ===== + const recordingsUrl = useMemo(() => { + const params = new URLSearchParams({ + page: '1', + limit: '100', + }); + return `${RecordingApi.basePath}?${params.toString()}`; + }, []); + + const { data: recordingsData } = useSWR( + recordingsUrl, + RecordingApi.getAllFetcher + ); + // ===== FORM CONFIGURATION ===== const formikInitialValues = useMemo( () => getUniformityFormInitialValues(initialValues), @@ -383,14 +398,24 @@ const UniformityForm = ({ // ===== SIDE EFFECTS ===== useEffect(() => { - if (formik.values.date) { - const date = moment(formik.values.date); - const weekNumber = date.week() - moment(date).startOf('month').week() + 1; - const adjustedWeekNumber = weekNumber <= 0 ? weekNumber + 52 : weekNumber; + if ( + projectFlockKandangLookup?.project_flock_kandang_id && + isResponseSuccess(recordingsData) && + recordingsData.data + ) { + const matchingRecording = recordingsData.data.find( + (recording: Recording) => + recording.project_flock?.project_flock_kandang_id === + projectFlockKandangLookup.project_flock_kandang_id + ); - formik.setFieldValue('week', adjustedWeekNumber); + if (matchingRecording?.project_flock?.production_standart?.week) { + const weekValue = + matchingRecording.project_flock.production_standart.week; + formik.setFieldValue('week', weekValue); + } } - }, [formik.values.date]); + }, [projectFlockKandangLookup?.project_flock_kandang_id, recordingsData]); useEffect(() => { const unsub = subscribeValidate(() => {