import MuiDialog from "@/components/MuiDialog"; import { Autocomplete, Button, Card, Checkbox, DialogActions, Grid, TextField, Typography, Select } from "@mui/material"; import { Paper } from "@mui/material"; import { Stack, MenuItem } from '@mui/material'; import React, { useEffect, useState } from 'react'; import { DetailFinalLogType } from "../Model/Types"; import { fDateOnly, fDateTimesecond, toTitleCase } from "@/utils/formatTime"; import axios from "@/utils/axios"; import { enqueueSnackbar } from "notistack"; import { useNavigate } from "react-router"; type DialogConfirmationType = { openDialog: boolean; setOpenDialog: any; onSubmit?: void; requestLog: DetailFinalLogType|undefined; } export default function DialogEditFinalLOG({requestLog, setOpenDialog, openDialog, onSubmit} : DialogConfirmationType ) { const navigate = useNavigate(); const [formData, setFormData] = useState({ billing_no: requestLog?.billing_no, invoice_no: requestLog?.invoice_no, discharge_date: requestLog?.discharge_date, id: requestLog?.id, catatan: requestLog?.catatan, icdCodes: requestLog?.diagnosis, reason: requestLog?.reason, type_of_member: requestLog?.type_of_member }); const [error, setError] = useState(false); const [icdOptions, setIcdOptions] = useState([ { value: '-', label: '-' } ]); const [searchIcd, setSearchIcd] = useState(''); useEffect(() => { // Ambil data dari API dan atur opsi ICD axios.get('diagnosis') .then((response) => { setIcdOptions(response.data.data); }) .catch((error) => { console.error('Error fetching ICD options:', error); }); }, []); // useEffect dijalankan hanya sekali saat komponen dimount useEffect(() => { setFormData({ discharge_date: requestLog?.discharge_date|| '', billing_no: requestLog?.billing_no|| '', invoice_no: requestLog?.invoice_no|| '', id: requestLog?.id|| 0, catatan: requestLog?.catatan|| '', icdCodes: requestLog?.diagnosis|| [], reason: requestLog?.reason|| '', type_of_member: requestLog?.type_of_member|| '', }); }, [requestLog]); const handleChange = (field, value) => { setFormData((prevData) => ({ ...prevData, [field]: value, })); if (field === 'reason') { setIsReasonSelected(!!value); } }; const handleApprove = () => { setFormData((prevData) => ({ ...prevData, })); handleSubmit(); }; const handleSearch = (search) => { setSearchIcd(search); axios.get('diagnosis?search=' + search) .then((response) => { setIcdOptions(response.data.data); }) .catch((error) => { console.error('Error fetching ICD options:', error); }); } const handleSubmit = () => { if (formData.type_of_member == "" && requestLog?.corporate_id == 5) { setError(true); alert('Silakan pilih Type Of Member sebelum mengirimkan data.'); } else if (isReasonSelected && formData.reason !== '') { axios .post(`customer-service/request/final-log`, formData) .then((response) => { enqueueSnackbar('Verification Request LOG Success', { variant: 'success' }); setOpenDialog(false); navigate('/custormer-service/final-log/detail/' + requestLog?.id) window.location.reload() }) .catch(({ response }) => { enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' }); }); } else { setIsReasonSelected(false); alert('Silakan pilih alasan sebelum mengirimkan data.'); } } const style1 = { color: '#919EAB', width: '30%' } const style2 = { width: '70%' } const marginBottom1 = { marginBottom: 1, } const marginBottom2 = { marginBottom: 2, } const resetForm = () => { setFormData({ discharge_date: requestLog?.discharge_date ?? '', id: requestLog?.id ?? 0, billing_no: requestLog?.billing_no ?? '', invoice_no: requestLog?.invoice_no ?? '', catatan: requestLog?.catatan ?? '', icdCodes: requestLog?.diagnosis ?? [], reason: requestLog?.reason ?? '', type_of_member: requestLog?.type_of_member ?? '', }); }; const [isReasonSelected, setIsReasonSelected] = useState(true); const handleCloseDialog = () => { setOpenDialog(false); resetForm(); } const reasons = [ { value: 'agreement', label: 'Agreement changed' }, { value: 'endorsement', label: 'Endorsement' }, { value: 'renewal', label: 'Renewal' }, { value: 'wrong_setting', label: 'Wrong Setting' }, // Add more options as needed ]; // console.log(formData.type_of_member) const getContent = () => ( Are you sure to edit this final log ? Member ID {requestLog?.member_id} Policy Number {requestLog?.policy_number} Name {requestLog?.name} Submission Date {requestLog?.submission_date ? fDateTimesecond(requestLog?.submission_date) : '-'} Claim Method {requestLog?.claim_method ? toTitleCase(requestLog?.claim_method) : '-'} Service Type {requestLog?.service_type} Invoice Provider handleChange('invoice_no', e.target.value)} /> Billing Number handleChange('billing_no', e.target.value)} /> Type Of Member* Discharge Date handleChange('discharge_date', e.target.value)} /> Catatan handleChange('catatan', e.target.value)} /> Diagnosis ICD - X option.label} fullWidth value={formData.icdCodes} onChange={(e, newValues) => handleChange('icdCodes', newValues)} inputValue={searchIcd} onInputChange={(e, newInputValue) => handleSearch(newInputValue)} renderInput={(params) => ( )} /> Reason* option.label} fullWidth value={reasons.find((r) => r.value == formData.reason) || null} // Use find to match the default value onChange={(e, newValue) => handleChange('reason', newValue?.value)} renderInput={(params) => ( )} /> ); return ( ); }