import { LoadingButton } from '@mui/lab'; import { Avatar, FormControl, InputLabel, Select, FormHelperText, MenuItem } from '@mui/material'; import { Card } from '@mui/material'; import { Stack, Typography } from '@mui/material'; import axios from '@/utils/axios'; import { enqueueSnackbar } from 'notistack'; import { useRef, useState, useContext } from 'react'; import { makeFormData } from '@/utils/jsonToFormData'; import { format } from 'date-fns'; import { LanguageContext } from '@/contexts/LanguageContext'; import Autocomplete from '@mui/material/Autocomplete'; import TextField from '@mui/material/TextField'; import Button from '@mui/material/Button'; import { DatePicker, LocalizationProvider, MobileDatePicker } from '@mui/x-date-pickers'; import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; import { fPostFormat } from '@/utils/formatTime'; interface MemberType { members: any; services: any; providers:any; } interface FormRequestClaimProps { member: MemberType; handleSubmitSuccess: () => void; } export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) { const { localeData }: any = useContext(LanguageContext); const [serviceCode, setServiceCode] = useState(''); const [idProvider, setIdProvider] = useState(0); //Submission date const [submissionDate, setSubmissionDate] = useState(format(new Date(), "yyyy MMM d")); const [submitLoading, setSubmitLoading] = useState(false); function submitRequest() { if(!idProvider&& (name == '' || alamat == '')) { enqueueSnackbar(localeData.txtAlertProvider, { variant: 'warning' }); return false; } if(serviceCode == '') { enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' }); return false; } if(submissionDate == '') { enqueueSnackbar(localeData.txtDialogMember6, { variant: 'warning' }); return false; } setSubmitLoading(true); const formData = { member_id: member.members.id, service_code: serviceCode, organization_id: idProvider, organization_name : name, address_provider: alamat, submission_date: fPostFormat(submissionDate, 'yyyy-MM-dd') }; axios .post('/request-log', formData) .then((response) => { if (response && response.data && response.data.meta) { setTimeout(() => { window.location.reload(); }, 1500); enqueueSnackbar(response.data.meta.message, { variant: 'success' }); handleSubmitSuccess(); } }) .catch(({ response }) => { if (response && response.data && response.data.meta) { enqueueSnackbar(response.data.meta.message, { variant: 'error' }); } }) .then(() => { setSubmitLoading(false); }); } interface MemberService { service_code: string; name: string; } interface Providers { id: number; name: string; } const [showAddNewForm, setShowAddNewForm] = useState(false); const [name, setName] = useState(''); const [alamat, setAlamat] = useState(''); const handleAddNewData = () => { // Logika untuk menambahkan data baru ke database // Pastikan untuk menyesuaikan logika ini sesuai dengan kebutuhan aplikasi Anda console.log('Adding new data:', { name, alamat }); // Setelah menambahkan data baru, Anda mungkin ingin melakukan sesuatu seperti menutup formulir tambahan atau melakukan pengaturan lainnya setShowAddNewForm(false); }; return ( {localeData.txtCreateAt} {format(new Date(), "d MMM yyyy")} {localeData.txtProvider} * option.name || ''} value={member?.providers.find((item: Providers) => item.id === idProvider) || null} onChange={(event: React.ChangeEvent<{}>, newValue: Providers | null) => { if (newValue?.id === 0) { // Pengguna memilih opsi "Tambahkan Data Baru" setIdProvider(0); // Reset nilai setShowAddNewForm(true); // Menampilkan formulir tambahan } else { // Pengguna memilih opsi dari hasil pencarian setIdProvider(newValue?.id || 0); setShowAddNewForm(false); // Menyembunyikan formulir tambahan } }} renderInput={(params) => ( )} /> {showAddNewForm && ( {localeData.txtAddNew} * setName(e.target.value)} /> setAlamat(e.target.value)} /> )} {localeData.txtDialogMember1} * option.name || ''} value={member?.services.find((item: MemberService) => item.service_code === serviceCode) || null} onChange={(event: React.ChangeEvent<{}>, newValue: MemberService | null) => { setServiceCode(newValue?.service_code || ''); }} renderInput={(params) => ( )} /> {localeData.txtDialogMember5} * { setSubmissionDate( (newValue)); }} inputFormat="dd-MM-yyyy" renderInput={(params) => } /> {member?.members.name ?? ''} {member?.members.member_id ?? ''} { submitRequest(); }} loading={submitLoading} > {localeData.txtDialogMember2} ); }