refactor(FE-114,136): update RecordingForm schema and types to include location and coop fields

This commit is contained in:
rstubryan
2025-10-15 17:39:27 +07:00
parent 2ee88a2742
commit 64a32fd214
3 changed files with 443 additions and 319 deletions
@@ -8,63 +8,73 @@ export const RecordingFormSchema = Yup.object({
label: Yup.string().required(),
}).nullable(),
flock_id: Yup.number().required('Flock wajib diisi!'),
tanggal_recording: Yup.date()
location: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).nullable(),
location_id: Yup.number().required('Lokasi wajib diisi!'),
coop: Yup.object({
value: Yup.number().min(1).required(),
label: Yup.string().required(),
}).nullable(),
coop_id: Yup.number().required('Kandang wajib diisi!'),
recording_date: Yup.date()
.required('Tanggal recording wajib diisi')
.typeError('Format tanggal tidak valid'),
data_pakan: Yup.array()
feed_data: Yup.array()
.of(
Yup.object({
nama_pakan: Yup.string().required('Nama pakan wajib diisi!'),
qty_pakan: Yup.number()
feed_name: Yup.string().required('Nama pakan wajib diisi!'),
feed_qty: Yup.number()
.required('Qty pakan wajib diisi!')
.min(1, 'Qty minimal 1!'),
stock_pakan: Yup.number()
feed_stock: Yup.number()
.required('Stock pakan wajib diisi!')
.min(0, 'Stock minimal 0!'),
})
)
.min(1, 'Minimal harus ada 1 data pakan!')
.required('Data pakan wajib diisi!'),
bobot_badan: Yup.array()
body_weight: Yup.array()
.of(
Yup.object({
berat_ayam: Yup.number()
chicken_weight: Yup.number()
.required('Berat ayam wajib diisi!')
.min(1, 'Berat minimal 1!'),
jumlah_ayam: Yup.number()
chicken_count: Yup.number()
.required('Jumlah ayam wajib diisi!')
.min(1, 'Jumlah minimal 1!'),
rata_rata_berat_ayam: Yup.number()
average_chicken_weight: Yup.number()
.required('Rata-rata berat ayam wajib diisi!')
.min(1, 'Rata-rata minimal 1!'),
})
)
.min(1, 'Minimal harus ada 1 data bobot badan!')
.required('Data bobot badan wajib diisi!'),
vaksinasi: Yup.array()
vaccination: Yup.array()
.of(
Yup.object({
nama_vaksin: Yup.string().required('Nama vaksin wajib diisi!'),
vaccine_name: Yup.string().required('Nama vaksin wajib diisi!'),
total_stock: Yup.number()
.required('Total stock wajib diisi!')
.min(0, 'Total stock minimal 0!'),
jumlah_stock: Yup.number()
used_stock: Yup.number()
.required('Jumlah stock wajib diisi!')
.min(0, 'Jumlah stock minimal 0!'),
})
)
.min(1, 'Minimal harus ada 1 data vaksinasi!')
.required('Data vaksinasi wajib diisi!'),
mortalitas: Yup.array()
mortality: Yup.array()
.of(
Yup.object({
kondisi: Yup.mixed<string>()
condition: Yup.mixed<string>()
.oneOf(
RECORDING_FLAG_OPTIONS.map((opt) => opt.value),
'Kondisi tidak valid!'
)
.required('Kondisi wajib diisi!'),
jumlah: Yup.number()
count: Yup.number()
.required('Jumlah wajib diisi!')
.min(1, 'Jumlah minimal 1!'),
})
@@ -87,34 +97,48 @@ export const getRecordingFormInitialValues = (
}
: null,
flock_id: initialValues?.flock?.id ?? 0,
tanggal_recording: initialValues?.tanggal_recording
? new Date(initialValues.tanggal_recording)
location: initialValues?.location
? {
value: initialValues.location.id,
label: initialValues.location.name,
}
: null,
location_id: initialValues?.location?.id ?? 0,
coop: initialValues?.coop
? {
value: initialValues.coop.id,
label: initialValues.coop.name,
}
: null,
coop_id: initialValues?.coop?.id ?? 0,
recording_date: initialValues?.recording_date
? new Date(initialValues.recording_date)
: new Date(),
data_pakan: initialValues?.data_pakan ?? [
feed_data: initialValues?.feed_data ?? [
{
nama_pakan: '',
qty_pakan: 0,
stock_pakan: 0,
feed_name: '',
feed_qty: 0,
feed_stock: 0,
},
],
bobot_badan: initialValues?.bobot_badan ?? [
body_weight: initialValues?.body_weight ?? [
{
berat_ayam: 0,
jumlah_ayam: 0,
rata_rata_berat_ayam: 0,
chicken_weight: 0,
chicken_count: 0,
average_chicken_weight: 0,
},
],
vaksinasi: initialValues?.vaksinasi ?? [
vaccination: initialValues?.vaccination ?? [
{
nama_vaksin: '',
vaccine_name: '',
total_stock: 0,
jumlah_stock: 0,
used_stock: 0,
},
],
mortalitas: initialValues?.mortalitas ?? [
mortality: initialValues?.mortality ?? [
{
kondisi: '',
jumlah: 0,
condition: '',
count: 0,
},
],
});
File diff suppressed because it is too large Load Diff
+36 -30
View File
@@ -1,28 +1,32 @@
import { BaseMetadata } from '@/types/api/api-general';
import { Flock } from '@/types/api/flock/flock';
import { Location } from '@/types/api/master-data/location';
import { Kandang } from '@/types/api/master-data/kandang';
export type BaseRecording = {
id: number;
flock: Flock;
tanggal_recording: string;
data_pakan: {
nama_pakan: string;
qty_pakan: number;
stock_pakan: number;
recording_date: string;
location: Location;
coop: Kandang;
feed_data: {
feed_name: string;
feed_qty: number;
feed_stock: number;
}[];
bobot_badan: {
berat_ayam: number;
jumlah_ayam: number;
rata_rata_berat_ayam: number;
body_weight: {
chicken_weight: number;
chicken_count: number;
average_chicken_weight: number;
}[];
vaksinasi: {
nama_vaksin: string;
vaccination: {
vaccine_name: string;
total_stock: number;
jumlah_stock: number;
used_stock: number;
}[];
mortalitas: {
kondisi: string;
jumlah: number;
mortality: {
condition: string;
count: number;
}[];
};
@@ -30,25 +34,27 @@ export type Recording = BaseMetadata & BaseRecording;
export type CreateRecordingPayload = {
flock_id: number;
tanggal_recording: string;
data_pakan: {
nama_pakan: string;
qty_pakan: number;
stock_pakan: number;
recording_date: string;
location_id: number;
coop_id: number;
feed_data: {
feed_name: string;
feed_qty: number;
feed_stock: number;
}[];
bobot_badan: {
berat_ayam: number;
jumlah_ayam: number;
rata_rata_berat_ayam: number;
body_weight: {
chicken_weight: number;
chicken_count: number;
average_chicken_weight: number;
}[];
vaksinasi: {
nama_vaksin: string;
vaccination: {
vaccine_name: string;
total_stock: number;
jumlah_stock: number;
used_stock: number;
}[];
mortalitas: {
kondisi: string;
jumlah: number;
mortality: {
condition: string;
count: number;
}[];
};