refactor(FE-114,136): update flock references to use ProjectFlock and adjust RecordingForm for new API

This commit is contained in:
rstubryan
2025-10-17 13:16:54 +07:00
parent 79acdb4b7b
commit c77968940e
6 changed files with 71 additions and 25 deletions
@@ -18,7 +18,7 @@ import {
UpdateRecordingFormSchema,
} from './RecordingForm.schema';
import { useRecordingFormHandlers } from './useRecordingFormHandlers';
import { FlockApi } from '@/services/api/flock';
import { ProjectFlockApi } from '@/services/api/production';
import { isResponseSuccess } from '@/lib/api-helper';
import { RECORDING_FLAG_OPTIONS } from '@/config/constant';
import useSWR from 'swr';
@@ -29,15 +29,10 @@ interface RecordingFormProps {
initialValues?: Recording;
}
const DUMMY_FLOCKS = [
{ value: 1, label: 'Flock A' },
{ value: 2, label: 'Flock B' },
{ value: 3, label: 'Flock C' },
{ value: 4, label: 'Flock D' },
];
const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
const [flockSelectInputValue, setFlockSelectInputValue] = useState('');
const [locationSelectInputValue, setLocationSelectInputValue] = useState('');
const [coopSelectInputValue, setCoopSelectInputValue] = useState('');
const [selectedFeed, setSelectedFeed] = useState<number[]>([]);
const [selectedWeight, setSelectedWeight] = useState<number[]>([]);
const [selectedVaccine, setSelectedVaccine] = useState<number[]>([]);
@@ -107,20 +102,20 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
},
});
// // Flock selection
// const flocksUrl = `${FlockApi.basePath}?${new URLSearchParams({ search: flockSelectInputValue }).toString()}`;
// const { data: flocks, isLoading: isLoadingFlocks } = useSWR(
// flocksUrl,
// FlockApi.getAllFetcher
// );
// const flockOptions = isResponseSuccess(flocks)
// ? flocks?.data.map((f) => ({ value: f.id, label: f.name }))
// : [];
// Flock selection
const projectFlocksUrl = `${ProjectFlockApi.basePath}?${new URLSearchParams({ search: flockSelectInputValue }).toString()}`;
const { data: projectFlocks, isLoading: isLoadingFlocks } = useSWR(
projectFlocksUrl,
ProjectFlockApi.getAllFetcher
);
const flockOptions = isResponseSuccess(projectFlocks)
? projectFlocks?.data.map((flock) => ({
value: flock.id,
label: flock.flock.name,
}))
: [];
const flockOptions = DUMMY_FLOCKS;
const [locationSelectInputValue, setLocationSelectInputValue] = useState('');
const [coopSelectInputValue, setCoopSelectInputValue] = useState('');
// Pakan selection
const locationsUrl = `${LocationApi.basePath}?${new URLSearchParams({ search: locationSelectInputValue ?? '' }).toString()}`;
const { data: locations, isLoading: isLoadingLocations } = useSWR(
@@ -366,7 +361,7 @@ const RecordingForm = ({ type = 'add', initialValues }: RecordingFormProps) => {
onChange={flockChangeHandler}
options={flockOptions}
onInputChange={setFlockSelectInputValue}
isLoading={false}
isLoading={isLoadingFlocks}
isError={
formik.touched.flock_id && Boolean(formik.errors.flock_id)
}
+1 -1
View File
@@ -2,7 +2,7 @@ import {
CreateFlockPayload,
Flock,
UpdateFlockPayload,
} from '@/types/api/flock/flock';
} from '@/types/api/master-data/flock';
import {
CreateRecordingPayload,
Recording,
+12
View File
@@ -0,0 +1,12 @@
import { BaseApiService } from './base';
import {
CreateProjectFlockPayload,
ProjectFlock,
UpdateProjectFlockPayload,
} from '@/types/api/production/project-flock';
export const ProjectFlockApi = new BaseApiService<
ProjectFlock,
CreateProjectFlockPayload,
UpdateProjectFlockPayload
>('/production/project_flocks');
+2 -2
View File
@@ -1,11 +1,11 @@
import { BaseMetadata } from '@/types/api/api-general';
import { Flock } from '@/types/api/flock/flock';
import { ProjectFlock } from '@/types/api/production/project-flock';
import { Location } from '@/types/api/master-data/location';
import { Kandang } from '@/types/api/master-data/kandang';
export type BaseRecording = {
id: number;
flock: Flock;
flock: ProjectFlock;
recording_date: string;
location: Location;
coop: Kandang;
+39
View File
@@ -0,0 +1,39 @@
import { Flock } from '@/types/api/master-data/flock';
import { Area } from '@/types/api/master-data/area';
import { ProductCategory } from '@/types/api/master-data/product-category';
import { Fcr } from '@/types/api/master-data/fcr';
import { Kandang } from '@/types/api/master-data/kandang';
import { BaseMetadata } from '@/types/api/api-general';
export type BaseProjectFlock = {
id: number;
name: string;
flock: Flock;
flock_id: number;
area: Area;
area_id: number;
product_category: ProductCategory;
product_category_id: number;
fcr: Fcr;
fcr_id: number;
location: Location;
location_id: number;
period: number;
kandang_ids: number[];
kandangs: Kandang[];
};
export type ProjectFlock = BaseMetadata & BaseProjectFlock;
export type CreateProjectFlockPayload = {
name: string;
flock_id: number;
area_id: number;
product_category_id: number;
fcr_id: number;
location_id: number;
period: number;
kandang_ids: number[];
};
export type UpdateProjectFlockPayload = CreateProjectFlockPayload;