Update Add Provider
This commit is contained in:
@@ -96,6 +96,16 @@ class MemberController extends Controller
|
|||||||
|
|
||||||
$res_data['type'] = $request->type;
|
$res_data['type'] = $request->type;
|
||||||
|
|
||||||
|
// Provider
|
||||||
|
$providers = DB::table('organizations')
|
||||||
|
->select(
|
||||||
|
'organizations.id',
|
||||||
|
'organizations.name'
|
||||||
|
)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$res_data['providers'] = $providers;
|
||||||
|
|
||||||
|
|
||||||
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
|
return ApiResponse::apiResponse("Success", $res_data, trans('Message.success'), 200);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ class RequestLogController extends Controller
|
|||||||
{
|
{
|
||||||
$data = [
|
$data = [
|
||||||
'member_id' => $request->member_id,
|
'member_id' => $request->member_id,
|
||||||
'service_code' => $request->service_code
|
'service_code' => $request->service_code,
|
||||||
|
'id_provider' => $request->id_provider,
|
||||||
|
'name_provider' => $request->name_provider,
|
||||||
|
'adress_provider' => $request->address_provider
|
||||||
];
|
];
|
||||||
$validator = Validator::make($request->all(), [
|
$validator = Validator::make($request->all(), [
|
||||||
'member_id' => 'required',
|
'member_id' => 'required',
|
||||||
@@ -32,6 +35,18 @@ class RequestLogController extends Controller
|
|||||||
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
||||||
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
||||||
]);
|
]);
|
||||||
|
if($request->id_provider)
|
||||||
|
{
|
||||||
|
$validator = Validator::make($request->all(), [
|
||||||
|
'id_provider' => 'required',
|
||||||
|
'member_id' => 'required',
|
||||||
|
'service_code' => 'required'
|
||||||
|
], [
|
||||||
|
'id_provider.required' => trans('Validation.required',['attribute' => 'Provider ID']),
|
||||||
|
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
|
||||||
|
'service_code.required' => trans('Validation.required',['attribute' => 'Service Code']),
|
||||||
|
]);
|
||||||
|
}
|
||||||
if ($validator->fails())
|
if ($validator->fails())
|
||||||
{
|
{
|
||||||
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
|
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);
|
||||||
|
|||||||
@@ -34,5 +34,9 @@
|
|||||||
"txtSupportingResultDocument" : "Supporting Result Document",
|
"txtSupportingResultDocument" : "Supporting Result Document",
|
||||||
"txtAddResult" : "Add Result",
|
"txtAddResult" : "Add Result",
|
||||||
"txtServiceType" : "Service Type",
|
"txtServiceType" : "Service Type",
|
||||||
"txtAdditionalDocuments" : "Additional Documents"
|
"txtAdditionalDocuments" : "Additional Documents",
|
||||||
|
"txtAddNew" : "Add New",
|
||||||
|
"txtAddress" : "Address",
|
||||||
|
"txtProvider": "Provider",
|
||||||
|
"txtAlertProvider" : "Please enter provider"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,5 +34,9 @@
|
|||||||
"txtSupportingResultDocument" : "Dokumen Hasil Pendukung",
|
"txtSupportingResultDocument" : "Dokumen Hasil Pendukung",
|
||||||
"txtAddResult" : "Tambah Hasil",
|
"txtAddResult" : "Tambah Hasil",
|
||||||
"txtServiceType" : "Tipe Layanan",
|
"txtServiceType" : "Tipe Layanan",
|
||||||
"txtAdditionalDocuments" : "Dokumen Tambahan"
|
"txtAdditionalDocuments" : "Dokumen Tambahan",
|
||||||
|
"txtAddNew" : "Tambah Baru",
|
||||||
|
"txtAddress" : "Alamat",
|
||||||
|
"txtProvider": "Penyedia",
|
||||||
|
"txtAlertProvider" : "Mohon masukan provider"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,10 +16,14 @@ import { useRef, useState, useContext } from 'react';
|
|||||||
import { makeFormData } from '@/utils/jsonToFormData';
|
import { makeFormData } from '@/utils/jsonToFormData';
|
||||||
import { format } from 'date-fns';
|
import { format } from 'date-fns';
|
||||||
import { LanguageContext } from '@/contexts/LanguageContext';
|
import { LanguageContext } from '@/contexts/LanguageContext';
|
||||||
|
import Autocomplete from '@mui/material/Autocomplete';
|
||||||
|
import TextField from '@mui/material/TextField';
|
||||||
|
import Button from '@mui/material/Button';
|
||||||
|
|
||||||
interface MemberType {
|
interface MemberType {
|
||||||
members: any;
|
members: any;
|
||||||
services: any;
|
services: any;
|
||||||
|
providers:any;
|
||||||
}
|
}
|
||||||
interface FormRequestClaimProps {
|
interface FormRequestClaimProps {
|
||||||
member: MemberType;
|
member: MemberType;
|
||||||
@@ -28,9 +32,15 @@ interface FormRequestClaimProps {
|
|||||||
export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) {
|
export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) {
|
||||||
const { localeData }: any = useContext(LanguageContext);
|
const { localeData }: any = useContext(LanguageContext);
|
||||||
const [serviceCode, setServiceCode] = useState<string>('');
|
const [serviceCode, setServiceCode] = useState<string>('');
|
||||||
|
const [idProvider, setIdProvider] = useState<number>(0);
|
||||||
|
|
||||||
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
|
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
|
||||||
function submitRequest() {
|
function submitRequest() {
|
||||||
|
if(!idProvider&& (name == '' || alamat == ''))
|
||||||
|
{
|
||||||
|
enqueueSnackbar(localeData.txtAlertProvider, { variant: 'warning' });
|
||||||
|
return false;
|
||||||
|
}
|
||||||
if(serviceCode == '')
|
if(serviceCode == '')
|
||||||
{
|
{
|
||||||
enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' });
|
enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' });
|
||||||
@@ -39,7 +49,10 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
setSubmitLoading(true);
|
setSubmitLoading(true);
|
||||||
const formData = {
|
const formData = {
|
||||||
member_id: member.members.id,
|
member_id: member.members.id,
|
||||||
service_code: serviceCode
|
service_code: serviceCode,
|
||||||
|
id_provider: idProvider,
|
||||||
|
name_provider : name,
|
||||||
|
address_provider: alamat
|
||||||
};
|
};
|
||||||
axios
|
axios
|
||||||
.post('/request-log', formData)
|
.post('/request-log', formData)
|
||||||
@@ -64,8 +77,26 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
name: 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 (
|
return (
|
||||||
<Stack direction="column" spacing={4}>
|
<Stack direction="column" spacing={2}>
|
||||||
<Stack direction="row" justifyContent={'end'} sx={{ marginBottom: 2 }} spacing={2}>
|
<Stack direction="row" justifyContent={'end'} sx={{ marginBottom: 2 }} spacing={2}>
|
||||||
<Typography variant='body2' sx={{color: '#757575'}}>
|
<Typography variant='body2' sx={{color: '#757575'}}>
|
||||||
{localeData.txtDialogMember5}
|
{localeData.txtDialogMember5}
|
||||||
@@ -74,27 +105,71 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
|
|||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
<Stack direction="row" spacing={2}>
|
<Stack direction="row" spacing={2}>
|
||||||
<Stack spacing={2} sx={{width:'100%'}}>
|
<Stack spacing={2} sx={{ width: '100%' }}>
|
||||||
<Typography variant='subtitle1'>{localeData.txtDialogMember1}*</Typography>
|
<Typography variant='subtitle1'>{localeData.txtProvider} *</Typography>
|
||||||
<FormControl>
|
<Autocomplete
|
||||||
<InputLabel htmlFor="service_type">
|
id="provider"
|
||||||
{localeData.txtDialogMember1}
|
options={[{ name: localeData.txtAddNew, id: 0 }, ...member?.providers || []]}
|
||||||
</InputLabel>
|
getOptionLabel={(option: Providers) => option.name || ''}
|
||||||
<Select
|
value={member?.providers.find((item: Providers) => item.id === idProvider) || null}
|
||||||
id="service_type"
|
onChange={(event: React.ChangeEvent<{}>, newValue: Providers | null) => {
|
||||||
value={serviceCode}
|
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) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label={localeData.txtProvider}
|
||||||
fullWidth
|
fullWidth
|
||||||
label={localeData.txtDialogMember1}
|
/>
|
||||||
onChange={(e) => {
|
)}
|
||||||
setServiceCode(e.target.value);
|
/>
|
||||||
}}
|
{showAddNewForm && (
|
||||||
>
|
<Stack direction="column" spacing={1} padding={1}>
|
||||||
{member && member?.services?.map((item: MemberService, index:number) => (
|
<Typography variant='body2'>{localeData.txtAddNew} *</Typography>
|
||||||
<MenuItem key={index} value={item.service_code}>{item.name}</MenuItem>
|
<TextField
|
||||||
))}
|
label={localeData.txtName}
|
||||||
</Select>
|
fullWidth
|
||||||
|
onChange={(e) => setName(e.target.value)}
|
||||||
|
/>
|
||||||
|
<TextField
|
||||||
|
label={localeData.txtAddress}
|
||||||
|
fullWidth
|
||||||
|
onChange={(e) => setAlamat(e.target.value)}
|
||||||
|
/>
|
||||||
|
</Stack>
|
||||||
|
)}
|
||||||
|
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
||||||
|
</Stack>
|
||||||
|
</Stack>
|
||||||
|
|
||||||
|
<Stack direction="row" spacing={2}>
|
||||||
|
<Stack spacing={2} sx={{ width: '100%' }}>
|
||||||
|
<Typography variant='subtitle1'>{localeData.txtDialogMember1} *</Typography>
|
||||||
|
<Autocomplete
|
||||||
|
id="service_type"
|
||||||
|
options={member?.services || []}
|
||||||
|
getOptionLabel={(option: MemberService) => 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) => (
|
||||||
|
<TextField
|
||||||
|
{...params}
|
||||||
|
label={localeData.txtDialogMember1}
|
||||||
|
fullWidth
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
<FormHelperText style={{ color: 'red' }}></FormHelperText>
|
||||||
</FormControl>
|
|
||||||
</Stack>
|
</Stack>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user