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 { ProductWarehouseApi } from '@/services/api/inventory';
|
||||||
import { isResponseSuccess } from '@/lib/api-helper';
|
import { isResponseSuccess } from '@/lib/api-helper';
|
||||||
import {
|
import {
|
||||||
PeriodFlock,
|
|
||||||
ProjectFlockKandangLookup,
|
ProjectFlockKandangLookup,
|
||||||
} from '@/types/api/production/project-flock';
|
} from '@/types/api/production/project-flock';
|
||||||
import { useModal } from '@/components/Modal';
|
import { useModal } from '@/components/Modal';
|
||||||
@@ -153,71 +152,6 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
RecordingApi.getAllFetcher
|
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(
|
const { data: stockProducts, isLoading: isLoadingStockProducts } = useSWR(
|
||||||
stockProductsUrl,
|
stockProductsUrl,
|
||||||
@@ -592,11 +526,11 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const getProjectFlockBadgeAdornment = useCallback(() => {
|
const getProjectFlockBadgeAdornment = useCallback(() => {
|
||||||
if (!isResponseSuccess(projectFlocks) || !projectFlockKandangLookup)
|
if (!projectFlockKandangLookup)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
const isAlreadyRecorded = recordedProjectFlockKandangIds.has(
|
const isAlreadyRecorded = recordedProjectFlockKandangIds.has(
|
||||||
projectFlockKandangLookup.id
|
projectFlockKandangLookup.project_flock_kandang_id
|
||||||
);
|
);
|
||||||
let color: 'neutral' | 'success' | 'warning' | 'error' = 'neutral';
|
let color: 'neutral' | 'success' | 'warning' | 'error' = 'neutral';
|
||||||
|
|
||||||
@@ -619,7 +553,6 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
</Badge>
|
</Badge>
|
||||||
);
|
);
|
||||||
}, [
|
}, [
|
||||||
projectFlocks,
|
|
||||||
recordedProjectFlockKandangIds,
|
recordedProjectFlockKandangIds,
|
||||||
projectFlockKandangLookup,
|
projectFlockKandangLookup,
|
||||||
]);
|
]);
|
||||||
@@ -1124,6 +1057,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
{(type as 'add' | 'edit' | 'detail') === 'detail' ? null : (
|
{(type as 'add' | 'edit' | 'detail') === 'detail' ? null : (
|
||||||
<>
|
<>
|
||||||
<SelectInput
|
<SelectInput
|
||||||
|
key={`location-select-${selectedLocation?.value || 'default'}`}
|
||||||
required
|
required
|
||||||
label='Lokasi'
|
label='Lokasi'
|
||||||
value={selectedLocation}
|
value={selectedLocation}
|
||||||
@@ -1137,6 +1071,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SelectInput
|
<SelectInput
|
||||||
|
key={`project-flock-select-${selectedProjectFlock?.value || 'default'}`}
|
||||||
required
|
required
|
||||||
label='Project Flock'
|
label='Project Flock'
|
||||||
value={selectedProjectFlock}
|
value={selectedProjectFlock}
|
||||||
@@ -1155,6 +1090,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<SelectInput
|
<SelectInput
|
||||||
|
key={`kandang-select-${projectFlockKandangLookup?.project_flock_kandang_id || 'default'}`}
|
||||||
required
|
required
|
||||||
label='Kandang'
|
label='Kandang'
|
||||||
value={selectedKandang}
|
value={selectedKandang}
|
||||||
|
|||||||
Reference in New Issue
Block a user