import * as Yup from 'yup'; import { yupResolver } from '@hookform/resolvers/yup'; import MuiDialog from "@/components/MuiDialog"; import { Button, Autocomplete, Card, Checkbox, DialogActions, Grid, Typography } from "@mui/material"; import { Paper } from "@mui/material"; import { Stack } from '@mui/material'; import React, { useEffect, useState } from 'react'; import { DetailFinalLogType } from "../Model/Types"; import { MedicineType } from "../Model/Types"; import { fDateTimesecond, toTitleCase } from "@/utils/formatTime"; import { useFieldArray, useForm } from 'react-hook-form'; import { FormProvider, RHFDatepicker, RHFSelect, RHFTextField } from '@/components/hook-form'; import axios from "@/utils/axios"; import { enqueueSnackbar } from "notistack"; import { useNavigate } from "react-router"; import { LoadingButton } from '@mui/lab'; import AddIcon from '@mui/icons-material/Add'; import RemoveIcon from '@mui/icons-material/Remove'; import RHFTextFieldMoney from "@/components/hook-form/v2/RHFTextFieldMoney"; import { IconButton } from '@mui/material'; import { postAddMedince } from '../Model/Functions'; type DialogConfirmationType = { openDialog: boolean; setOpenDialog: any; onSubmit?: void; requestLog: DetailFinalLogType|undefined; } export default function DialogMedicine({requestLog, setOpenDialog, openDialog } : DialogConfirmationType ) { const handleCloseDialogMedicine = () => { setOpenDialog(false); } const requestID = requestLog?.id const defaultValues: MedicineType = { medicine : [{ id: 0, medicine_name: '', medicine_price: 0, request_log_id: requestID, medicine: '', // input to database price: 0, // input to database }], }; const validationSchema = Yup.object().shape({ medicine: Yup.array().of( Yup.object().shape({ medicine_name : Yup.string().typeError('').required(''), medicine_price : Yup.number().typeError('').required(''), request_log_id : Yup.number().typeError('').required(''), }) ) }) const methods = useForm({ resolver: yupResolver(validationSchema), defaultValues }); const {fields, append, remove} = useFieldArray({name: 'medicine',control: methods.control}) useEffect(() => { let temp = fields.map((item, i) => { return { medicine_name: 'test', medicine_price: 0, request_log_id: 3, } }) reset({medicine: temp}) }, []) const { handleSubmit, reset, watch, setValue, formState: { isDirty, isSubmitting, errors } } = methods; // Submit Form // ===================================== const submitHandler = async (data: MedicineType) => { const response = await postAddMedince(data); if (response == true) { reset(); // navigate('custormer-service/final-log/detail/'+requestLog?.id); window.location.reload() } } const getContent = () => ( {/* Medicine */} Medicine* {fields.map((field, index) => ( { index != (fields.length-1) ? ( remove(index)}> ) : null } ))} Add ); const getAction = () => null; return ( ); }