mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 13:32:00 +00:00
refactor(FE-170,174): simplify daily recording form by removing unused flock period logic
This commit is contained in:
@@ -37,7 +37,6 @@ import { LocationApi } from '@/services/api/master-data';
|
||||
import { ProductWarehouseApi } from '@/services/api/inventory';
|
||||
import { isResponseSuccess } from '@/lib/api-helper';
|
||||
import {
|
||||
PeriodFlock,
|
||||
ProjectFlockKandangLookup,
|
||||
} from '@/types/api/production/project-flock';
|
||||
import { useModal } from '@/components/Modal';
|
||||
@@ -153,72 +152,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
RecordingApi.getAllFetcher
|
||||
);
|
||||
|
||||
const flockPeriodsUrls = useMemo(() => {
|
||||
if (!isResponseSuccess(projectFlocks)) return [];
|
||||
return (
|
||||
projectFlocks?.data.map(
|
||||
(pf) => `${ProjectFlockApi.basePath}/flocks/${pf.flock.id}/periods`
|
||||
) || []
|
||||
);
|
||||
}, [projectFlocks]);
|
||||
|
||||
const { data: flockPeriodsData } = useSWR<BaseApiResponse<PeriodFlock>[]>(
|
||||
flockPeriodsUrls.length > 0 ? flockPeriodsUrls : null,
|
||||
(urls: string[]) =>
|
||||
Promise.all(urls.map((url) => fetch(url).then((res) => res.json()))),
|
||||
{
|
||||
revalidateOnFocus: false,
|
||||
dedupingInterval: 60000,
|
||||
}
|
||||
);
|
||||
|
||||
const recordedProjectFlockIds = useMemo(() => {
|
||||
if (!isResponseSuccess(existingRecordings)) return new Set<number>();
|
||||
|
||||
const todayRecordings = existingRecordings?.data || [];
|
||||
const recordedIds = new Set<number>();
|
||||
|
||||
todayRecordings.forEach((recording) => {
|
||||
const recordingDate = recording.record_datetime?.split('T')[0];
|
||||
|
||||
const isRecordedToday = recordingDate === today;
|
||||
|
||||
let isCorrectPeriod = false;
|
||||
if (
|
||||
isRecordedToday &&
|
||||
flockPeriodsData &&
|
||||
isResponseSuccess(projectFlocks)
|
||||
) {
|
||||
const flockIndex = projectFlocks.data.findIndex(
|
||||
(pf) => pf.id === recording.project_flock_kandangs_id
|
||||
);
|
||||
if (
|
||||
flockIndex !== undefined &&
|
||||
flockIndex >= 0 &&
|
||||
flockPeriodsData[flockIndex]
|
||||
) {
|
||||
const flockPeriod = flockPeriodsData[flockIndex];
|
||||
const currentProjectFlock = projectFlocks.data[flockIndex];
|
||||
|
||||
if (
|
||||
currentProjectFlock &&
|
||||
isResponseSuccess(flockPeriod) &&
|
||||
flockPeriod.data?.next_period
|
||||
) {
|
||||
const expectedDay = flockPeriod.data.next_period - 1;
|
||||
isCorrectPeriod = recording.day === expectedDay;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isRecordedToday && (isCorrectPeriod || !flockPeriodsData)) {
|
||||
recordedIds.add(recording.project_flock_kandangs_id);
|
||||
}
|
||||
});
|
||||
|
||||
return recordedIds;
|
||||
}, [existingRecordings, today, flockPeriodsData, projectFlocks]);
|
||||
|
||||
|
||||
const { data: stockProducts, isLoading: isLoadingStockProducts } = useSWR(
|
||||
stockProductsUrl,
|
||||
ProductWarehouseApi.getAllFetcher
|
||||
@@ -592,11 +526,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
);
|
||||
|
||||
const getProjectFlockBadgeAdornment = useCallback(() => {
|
||||
if (!isResponseSuccess(projectFlocks) || !projectFlockKandangLookup)
|
||||
if (!projectFlockKandangLookup)
|
||||
return null;
|
||||
|
||||
const isAlreadyRecorded = recordedProjectFlockKandangIds.has(
|
||||
projectFlockKandangLookup.id
|
||||
projectFlockKandangLookup.project_flock_kandang_id
|
||||
);
|
||||
let color: 'neutral' | 'success' | 'warning' | 'error' = 'neutral';
|
||||
|
||||
@@ -619,7 +553,6 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
</Badge>
|
||||
);
|
||||
}, [
|
||||
projectFlocks,
|
||||
recordedProjectFlockKandangIds,
|
||||
projectFlockKandangLookup,
|
||||
]);
|
||||
@@ -1124,6 +1057,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
{(type as 'add' | 'edit' | 'detail') === 'detail' ? null : (
|
||||
<>
|
||||
<SelectInput
|
||||
key={`location-select-${selectedLocation?.value || 'default'}`}
|
||||
required
|
||||
label='Lokasi'
|
||||
value={selectedLocation}
|
||||
@@ -1137,6 +1071,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
/>
|
||||
|
||||
<SelectInput
|
||||
key={`project-flock-select-${selectedProjectFlock?.value || 'default'}`}
|
||||
required
|
||||
label='Project Flock'
|
||||
value={selectedProjectFlock}
|
||||
@@ -1155,6 +1090,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
||||
/>
|
||||
|
||||
<SelectInput
|
||||
key={`kandang-select-${projectFlockKandangLookup?.project_flock_kandang_id || 'default'}`}
|
||||
required
|
||||
label='Kandang'
|
||||
value={selectedKandang}
|
||||
|
||||
Reference in New Issue
Block a user