mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-22 06:15:47 +00:00
feat(FE-136): add flock and recording management with validation in forms
This commit is contained in:
@@ -0,0 +1,121 @@
|
||||
import * as Yup from 'yup';
|
||||
import { RECORDING_FLAG_OPTIONS } from '@/config/constant';
|
||||
|
||||
export const RecordingFormSchema = Yup.object({
|
||||
flock_id: Yup.number().required('Flock wajib diisi!'),
|
||||
tanggal: Yup.string().required('Tanggal wajib diisi!'),
|
||||
data_pakan: Yup.array()
|
||||
.of(
|
||||
Yup.object({
|
||||
nama_pakan: Yup.string().required('Nama pakan wajib diisi!'),
|
||||
qty_pakan: Yup.number()
|
||||
.required('Qty pakan wajib diisi!')
|
||||
.min(1, 'Qty minimal 1!'),
|
||||
stock_pakan: 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()
|
||||
.of(
|
||||
Yup.object({
|
||||
berat_ayam: Yup.number()
|
||||
.required('Berat ayam wajib diisi!')
|
||||
.min(1, 'Berat minimal 1!'),
|
||||
jumlah_ayam: Yup.number()
|
||||
.required('Jumlah ayam wajib diisi!')
|
||||
.min(1, 'Jumlah minimal 1!'),
|
||||
rata_rata_berat_ayam: 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()
|
||||
.of(
|
||||
Yup.object({
|
||||
nama_vaksin: 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()
|
||||
.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()
|
||||
.of(
|
||||
Yup.object({
|
||||
kondisi: Yup.mixed<string>()
|
||||
.oneOf(
|
||||
RECORDING_FLAG_OPTIONS.map((opt) => opt.value),
|
||||
'Kondisi tidak valid!'
|
||||
)
|
||||
.required('Kondisi wajib diisi!'),
|
||||
jumlah: Yup.number()
|
||||
.required('Jumlah wajib diisi!')
|
||||
.min(1, 'Jumlah minimal 1!'),
|
||||
})
|
||||
)
|
||||
.min(1, 'Minimal harus ada 1 data mortalitas!')
|
||||
.required('Data mortalitas wajib diisi!'),
|
||||
});
|
||||
|
||||
export const UpdateRecordingFormSchema = RecordingFormSchema;
|
||||
|
||||
export type RecordingFormValues = Yup.InferType<typeof RecordingFormSchema>;
|
||||
|
||||
export const getRecordingFormInitialValues = (
|
||||
initialValues?: Partial<RecordingFormValues>
|
||||
): RecordingFormValues => ({
|
||||
flock_id: initialValues?.flock_id ?? 0,
|
||||
tanggal: initialValues?.tanggal ?? '',
|
||||
data_pakan:
|
||||
Array.isArray(initialValues?.data_pakan) &&
|
||||
initialValues.data_pakan.length > 0
|
||||
? initialValues.data_pakan
|
||||
: [
|
||||
{
|
||||
nama_pakan: '',
|
||||
qty_pakan: 0,
|
||||
stock_pakan: 0,
|
||||
},
|
||||
],
|
||||
bobot_badan:
|
||||
Array.isArray(initialValues?.bobot_badan) &&
|
||||
initialValues.bobot_badan.length > 0
|
||||
? initialValues.bobot_badan
|
||||
: [
|
||||
{
|
||||
berat_ayam: 0,
|
||||
jumlah_ayam: 0,
|
||||
rata_rata_berat_ayam: 0,
|
||||
},
|
||||
],
|
||||
vaksinasi:
|
||||
Array.isArray(initialValues?.vaksinasi) &&
|
||||
initialValues.vaksinasi.length > 0
|
||||
? initialValues.vaksinasi
|
||||
: [
|
||||
{
|
||||
nama_vaksin: '',
|
||||
total_stock: 0,
|
||||
jumlah_stock: 0,
|
||||
},
|
||||
],
|
||||
mortalitas:
|
||||
Array.isArray(initialValues?.mortalitas) &&
|
||||
initialValues.mortalitas.length > 0
|
||||
? initialValues.mortalitas
|
||||
: [
|
||||
{
|
||||
kondisi: '',
|
||||
jumlah: 0,
|
||||
},
|
||||
],
|
||||
});
|
||||
Reference in New Issue
Block a user