Update Add Provider

This commit is contained in:
ivan-sim
2024-01-03 14:37:09 +07:00
parent 0b79c76428
commit a9a342f6dd
5 changed files with 132 additions and 24 deletions

View File

@@ -96,6 +96,16 @@ class MemberController extends Controller
$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);
}

View File

@@ -23,7 +23,10 @@ class RequestLogController extends Controller
{
$data = [
'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(), [
'member_id' => 'required',
@@ -32,6 +35,18 @@ class RequestLogController extends Controller
'member_id.required' => trans('Validation.required',['attribute' => 'Member ID']),
'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())
{
return ApiResponse::apiResponse('Bad Request', $data, $validator->errors(), 400);

View File

@@ -34,5 +34,9 @@
"txtSupportingResultDocument" : "Supporting Result Document",
"txtAddResult" : "Add Result",
"txtServiceType" : "Service Type",
"txtAdditionalDocuments" : "Additional Documents"
"txtAdditionalDocuments" : "Additional Documents",
"txtAddNew" : "Add New",
"txtAddress" : "Address",
"txtProvider": "Provider",
"txtAlertProvider" : "Please enter provider"
}

View File

@@ -34,5 +34,9 @@
"txtSupportingResultDocument" : "Dokumen Hasil Pendukung",
"txtAddResult" : "Tambah Hasil",
"txtServiceType" : "Tipe Layanan",
"txtAdditionalDocuments" : "Dokumen Tambahan"
"txtAdditionalDocuments" : "Dokumen Tambahan",
"txtAddNew" : "Tambah Baru",
"txtAddress" : "Alamat",
"txtProvider": "Penyedia",
"txtAlertProvider" : "Mohon masukan provider"
}

View File

@@ -16,10 +16,14 @@ 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';
interface MemberType {
members: any;
services: any;
providers:any;
}
interface FormRequestClaimProps {
member: MemberType;
@@ -28,9 +32,15 @@ interface FormRequestClaimProps {
export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRequestClaimProps) {
const { localeData }: any = useContext(LanguageContext);
const [serviceCode, setServiceCode] = useState<string>('');
const [idProvider, setIdProvider] = useState<number>(0);
const [submitLoading, setSubmitLoading] = useState<boolean>(false);
function submitRequest() {
if(!idProvider&& (name == '' || alamat == ''))
{
enqueueSnackbar(localeData.txtAlertProvider, { variant: 'warning' });
return false;
}
if(serviceCode == '')
{
enqueueSnackbar(localeData.txtDialogMember4, { variant: 'warning' });
@@ -39,7 +49,10 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
setSubmitLoading(true);
const formData = {
member_id: member.members.id,
service_code: serviceCode
service_code: serviceCode,
id_provider: idProvider,
name_provider : name,
address_provider: alamat
};
axios
.post('/request-log', formData)
@@ -64,8 +77,26 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
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 (
<Stack direction="column" spacing={4}>
<Stack direction="column" spacing={2}>
<Stack direction="row" justifyContent={'end'} sx={{ marginBottom: 2 }} spacing={2}>
<Typography variant='body2' sx={{color: '#757575'}}>
{localeData.txtDialogMember5}
@@ -74,27 +105,71 @@ export default function FormRequestClaim({ member, handleSubmitSuccess }: FormRe
</Stack>
<Stack direction="row" spacing={2}>
<Stack spacing={2} sx={{width:'100%'}}>
<Typography variant='subtitle1'>{localeData.txtDialogMember1}*</Typography>
<FormControl>
<InputLabel htmlFor="service_type">
{localeData.txtDialogMember1}
</InputLabel>
<Select
id="service_type"
value={serviceCode}
<Stack spacing={2} sx={{ width: '100%' }}>
<Typography variant='subtitle1'>{localeData.txtProvider} *</Typography>
<Autocomplete
id="provider"
options={[{ name: localeData.txtAddNew, id: 0 }, ...member?.providers || []]}
getOptionLabel={(option: Providers) => 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) => (
<TextField
{...params}
label={localeData.txtProvider}
fullWidth
label={localeData.txtDialogMember1}
onChange={(e) => {
setServiceCode(e.target.value);
}}
>
{member && member?.services?.map((item: MemberService, index:number) => (
<MenuItem key={index} value={item.service_code}>{item.name}</MenuItem>
))}
</Select>
/>
)}
/>
{showAddNewForm && (
<Stack direction="column" spacing={1} padding={1}>
<Typography variant='body2'>{localeData.txtAddNew} *</Typography>
<TextField
label={localeData.txtName}
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>
</FormControl>
</Stack>
</Stack>