diff --git a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php index 20376706..ef25abe9 100644 --- a/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php +++ b/Modules/Internal/Http/Controllers/Api/ClaimRequestController.php @@ -37,9 +37,18 @@ class ClaimRequestController extends Controller ->when($request->search, function ($q, $search) { $q->where('code', 'LIKE', "%".$search."%"); $q->orWhereHas('member', function ($subQuery) use ($search) { - $subQuery->where('name', 'LIKE', "%".$search.""); + $subQuery->where('name', 'LIKE', "%".$search."%"); }); }) + ->when($request->start_date, function ($q, $startDate) { + $q->where('submission_date', '>', $startDate); + }) + ->when($request->end_date, function ($q, $endDate) { + $q->where('submission_date', '<', $endDate); + }) + ->when($request->service_code, function ($q, $serviceCode) { + $q->whereIn('service_code', $serviceCode); + }) ->when($request->orderBy, function ($q, $orderBy) use ($request) { if (in_array($orderBy, ['submission_date', 'code'])) { $q->orderBy($orderBy, $request->order); @@ -262,12 +271,8 @@ class ClaimRequestController extends Controller 'claim', 'organization', ]); - $organization = Organization::where('code', $request->provider_code)->first(); - if (!$organization) { - return response()->json(['error' => true, 'message' => 'Data tidak ditemukan'], 404); - } - $updateClaimRequest = ClaimRequestService::updateClaimRequest(organization_id: $organization->id, claim_request_id: $id); + $updateClaimRequest = ClaimRequestService::updateClaimRequest(reason: $request->reason, submission_date: $request->date, claim_request_id: $id); ClaimRequested::dispatch($updateClaimRequest); // Log History diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php index 560bae58..ff19846f 100644 --- a/Modules/Internal/Routes/api.php +++ b/Modules/Internal/Routes/api.php @@ -312,7 +312,7 @@ Route::prefix('internal')->group(function () { Route::post('claim-requests/{id}/approve', [ClaimRequestController::class, 'approve'])->name('claim-requests.approve'); Route::get('claim-requests/{id}', [ClaimRequestController::class, 'show'])->name('claim-requests.show'); Route::post('claim-requests', [ClaimRequestController::class, 'createNew']); // Bagaskoro, BSD 2 November 2023 - Route::put('claim-requests/{id}', [ClaimRequestController::class, 'update'])->name('claim-requests.update'); + Route::post('claim-requests/{id}/update', [ClaimRequestController::class, 'update']); Route::post('claim-requests/import', [ClaimRequestController::class, 'importClaim'])->name('claim-requests.importClaim'); Route::get('claim-requests/detail/{id}', [ClaimRequestController::class, 'claimRequestDetail']); Route::post('claim-requests/{id}/invoice-files', [ClaimRequestController::class, 'invoiceFiles']); diff --git a/Modules/Internal/Transformers/ClaimRequestShowResource.php b/Modules/Internal/Transformers/ClaimRequestShowResource.php index 33af672a..0e07c0bf 100644 --- a/Modules/Internal/Transformers/ClaimRequestShowResource.php +++ b/Modules/Internal/Transformers/ClaimRequestShowResource.php @@ -4,6 +4,7 @@ namespace Modules\Internal\Transformers; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Support\Str; +use App\Models\Service; class ClaimRequestShowResource extends JsonResource { @@ -17,6 +18,15 @@ class ClaimRequestShowResource extends JsonResource { $data = parent::toArray($request); + $service = Service::where('code',$data['service_code'])->first(); + if($service){ + $serviceName = $service->name; + } else { + $serviceName = '-'; + } + + $data['service_name'] = $serviceName; + // Map Histories to Group by Dates $historiesGroupByDate = $this->histories->mapToGroups(function($history) { return [$history->created_at->format('Y-m-d') => $history]; diff --git a/app/Models/ClaimRequest.php b/app/Models/ClaimRequest.php index 6622efc4..a46b36c8 100644 --- a/app/Models/ClaimRequest.php +++ b/app/Models/ClaimRequest.php @@ -8,6 +8,7 @@ use App\Traits\Blameable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; +use Altek\Accountant\Contracts\Recordable; use Str; class ClaimRequest extends Model @@ -28,7 +29,8 @@ class ClaimRequest extends Model 'claim_id', 'organization_id', 'code', - 'request_log_id' + 'request_log_id', + 'reason' ]; protected $hidden = [ diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 8b88ce96..456eb067 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -14,6 +14,7 @@ use App\Models\CorporateBenefit; use App\Models\Member; use App\Models\MemberPlan; use App\Models\CorporateHospital; +use App\Models\ClaimRequest; use App\Models\ExclusionRules; use App\Models\ExclusionImport; use App\Models\Icd; @@ -147,6 +148,15 @@ class AppServiceProvider extends ServiceProvider $this->logAuditTrail($model, 'deleted'); }); + ClaimRequest::updated(function ($model) { + + $this->logAuditTrail($model, 'updated'); + }); + + ClaimRequest::deleted(function ($model) { + $this->logAuditTrail($model, 'deleted'); + }); + // ICD or exlusion Icd::updated(function ($model) { $this->logAuditTrail($model, 'updated'); diff --git a/app/Services/ClaimRequestService.php b/app/Services/ClaimRequestService.php index c840e2da..3ecac549 100644 --- a/app/Services/ClaimRequestService.php +++ b/app/Services/ClaimRequestService.php @@ -110,19 +110,23 @@ class ClaimRequestService{ } } - public static function updateClaimRequest($organization_id, $claim_request_id){ + public static function updateClaimRequest($reason, $submission_date, $claim_request_id){ try { - $data = [ - 'organization_id' => $organization_id - ]; - DB::commit(); - $update = ClaimRequest::where('id', $claim_request_id)->update($data); - return ClaimRequest::find($claim_request_id); - + $claimRequest = ClaimRequest::find($claim_request_id); + + if (!$claimRequest) { + throw new \Exception("Claim request not found"); + } + + $claimRequest->submission_date = $submission_date; + $claimRequest->reason = $reason; + + $claimRequest->save(); + + return $claimRequest; + } catch (\Exception $error) { - DB::rollBack(); - - throw new \Exception($error); + throw new \Exception($error->getMessage()); } } diff --git a/database/migrations/2024_02_20_121654_add_coloumn_claim_requests_table.php b/database/migrations/2024_02_20_121654_add_coloumn_claim_requests_table.php new file mode 100644 index 00000000..8936d362 --- /dev/null +++ b/database/migrations/2024_02_20_121654_add_coloumn_claim_requests_table.php @@ -0,0 +1,32 @@ +string('reason')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('claim_requests', function (Blueprint $table) { + $table->dropColumn('reason'); + }); + } +}; diff --git a/frontend/dashboard/src/@types/claims.ts b/frontend/dashboard/src/@types/claims.ts index 4329ae71..d1938af7 100644 --- a/frontend/dashboard/src/@types/claims.ts +++ b/frontend/dashboard/src/@types/claims.ts @@ -10,12 +10,16 @@ export type ClaimRequest = { service_code: string; claim_method: string; service_type: string; + service_name: string; code_provider: string; file_condition: Files; member: Member; claim: { organization: Organizations } + organization: { + code: string + } }; export type Claims = { diff --git a/frontend/dashboard/src/pages/ClaimRequests/Components/DialogConfirmation.tsx b/frontend/dashboard/src/pages/ClaimRequests/Components/DialogConfirmation.tsx new file mode 100644 index 00000000..ce78fa0b --- /dev/null +++ b/frontend/dashboard/src/pages/ClaimRequests/Components/DialogConfirmation.tsx @@ -0,0 +1,174 @@ +import MuiDialog from "@/components/MuiDialog"; +import { Autocomplete, Button, Card, Checkbox, DialogActions, Grid, TextField, Typography } from "@mui/material"; +import { Paper } from "@mui/material"; +import { Stack } from '@mui/material'; +import React, { useEffect, useState } from 'react'; +import { ClaimRequest, Files } from '@/@types/claims'; +import { fDateOnly, fDateTimesecond, toTitleCase } from "@/utils/formatTime"; +import axios from "@/utils/axios"; +import { enqueueSnackbar, useSnackbar } from "notistack"; +import { useNavigate } from "react-router"; +import * as Yup from 'yup'; +import { yupResolver } from '@hookform/resolvers/yup'; + +type DialogConfirmationType = { + openDialog: boolean; + setOpenDialog: any; + onSubmit?: void; + approve: string; + claimRequest: ClaimRequest|undefined; +} + +export default function DialogConfirmation({claimRequest, setOpenDialog, openDialog, approve, onSubmit} : DialogConfirmationType ) { + + const navigate = useNavigate(); + const { enqueueSnackbar } = useSnackbar(); + + const [formData, setFormData] = useState({ + date: claimRequest?.date, + id: claimRequest?.id, + reason: claimRequest?.reason + }); + + const handleChange = (field, value) => { + setFormData((prevData) => ({ + ...prevData, + [field]: value, + })); + + }; + + const handleSubmit = () => { + axios + .post(`customer-service/request/final-log`, formData) + .then((response) => { + enqueueSnackbar('Verification Request LOG Success', { variant: 'success' }); + setOpenDialog(false); + if (requestLog?.service_type == 'Inpatient'){ + navigate('/case_management/inpatient_monitoring'); + } else { + navigate('/custormer-service/final-log'); + } + }) + .catch(({ response }) => { + enqueueSnackbar(response.data.message ?? 'Something went wrong!', { variant: 'error' }); + }); + } + + + const style1 = { + color: '#919EAB', + width: '30%' + } + const style2 = { + width: '70%' + } + const marginBottom1 = { + marginBottom: 1, + } + const marginBottom2 = { + marginBottom: 2, + } + const handleCloseDialog = () => { + setOpenDialog(false); + } + + + + const getContent = () => ( + + Are you sure to {approve == 'approved' ? 'approve' : 'deciline'} 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} + + + + + + Discharge Date + handleChange('discharge_date', e.target.value)} + /> + + + Catatan + handleChange('catatan', e.target.value)} + /> + + + Diagnosis ICD - X + option.label} + fullWidth + value={icdOptions.filter((icd) => formData.icdCodes.includes(icd.value))} + onChange={(e, newValues) => handleChange('icdCodes', newValues.map((value) => value.value))} + renderInput={(params) => ( + + )} + /> + + + + + + + {approve == 'approved' ? ( + + ) : ( + + ) } + + + + ); + + + return ( + + ); +} \ No newline at end of file diff --git a/frontend/dashboard/src/pages/ClaimRequests/Components/FormEdit.tsx b/frontend/dashboard/src/pages/ClaimRequests/Components/FormEdit.tsx index faa95bf0..f91d3284 100644 --- a/frontend/dashboard/src/pages/ClaimRequests/Components/FormEdit.tsx +++ b/frontend/dashboard/src/pages/ClaimRequests/Components/FormEdit.tsx @@ -5,7 +5,7 @@ import { yupResolver } from '@hookform/resolvers/yup'; import { Controller, useForm } from 'react-hook-form'; import React, { useRef, useEffect, useMemo, useState } from 'react'; import axios from '../../../utils/axios'; -import { FormProvider, RHFTextField } from '../../../components/hook-form'; +import { FormProvider, RHFDatepicker, RHFTextField } from '../../../components/hook-form'; import { makeFormData } from '@/utils/jsonToFormData'; import { @@ -31,6 +31,7 @@ import { Divider, ButtonBase, Box, + DialogActions, } from '@mui/material'; import Iconify from '../../../components/Iconify'; import CalendarTodayIcon from '@mui/icons-material/CalendarToday'; @@ -39,7 +40,10 @@ import { fCurrency } from '../../../utils/formatNumber'; import MemberSelectDialog from '../../../components/dialogs/MemberSelectDialog'; import { Add, ArrowBackIosNew, DeleteOutline } from '@mui/icons-material'; import { ClaimRequest, Files } from '@/@types/claims'; -import { fDateTimesecond } from '@/utils/formatTime'; +import { fDateOnly, fDateTimesecond, fPostFormat } from '@/utils/formatTime'; +import RHFDatePicker from '@/components/hook-form/RHFDatePickerV2'; +import RHFDateTimePicker from '@/components/hook-form/v2/RHFDateTimePicker'; +import MuiDialog from '@/components/MuiDialog'; interface FormValuesProps extends Partial { taxes: boolean; @@ -57,7 +61,7 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { const { enqueueSnackbar } = useSnackbar(); const EditClaimSchema = Yup.object().shape({ - organization_id: Yup.string().required('Code Provider is required'), + date: Yup.string().required('Date Submission is required'), }); const defaultValues = useMemo( @@ -73,6 +77,16 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { [currentClaim] ); + + const [date, setDate] = useState(currentClaim?.submission_date) + const id = currentClaim?.id + + useEffect(() => { + setDate(currentClaim?.submission_date) + }, [currentClaim]); + + console.log(date); + useEffect(() => { if (isEdit && currentClaim) { reset(defaultValues); @@ -80,9 +94,6 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { if (!isEdit) { reset(defaultValues); } - // setFileKondisis(currentClaim?.files_by_type?.claim_diagnosis); - // setFileDiagnosas(currentClaim?.files_by_type?.claim_diagnosis); - setFileHasilPenunjangCurrent(currentClaim?.files_by_type?.claim_result); }, [isEdit, currentClaim]); @@ -97,99 +108,25 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { control, setValue, getValues, - setError, handleSubmit, formState: { isSubmitting }, } = methods; - const values = watch(); - - const [isCheckingLimit, setIsCheckingLimit] = useState(false); - const [isEligible, setIsEligible] = useState(false); - const [memberBenefits, setMemberBenefits] = useState([]); - const [diagnosisOption, setDiagnosisOption] = useState([]); - const [isMemberDialogOpen, setIsMemberDialogOpen] = useState(false); - const [member, setMember] = useState({}) // ---------------------------------------------------------------------- - - // Files Result Kondisi - const fileKondisiInput = useRef(null); - const [fileKondisis, setFileKondisis] = useState([]); - - const handleKondisiInputChange = (event) => { - if (event.target.files[0]) { - setFileKondisis([...fileKondisis, ...event.target.files]); - } else { - console.log('NO FILE'); - } - }; - const removeKondisiFiles = (filesState, index) => { - setFileKondisis( - filesState.filter((file, fileIndex) => { - return fileIndex != index; - }) - ); - }; - - // Files Result Diagnosa - const fileDiagnosaInput = useRef(null); - const [fileDiagnosas, setFileDiagnosas] = useState([]); - - const handleDiagnosaInputChange = (event) => { - if (event.target.files[0]) { - setFileDiagnosas([...fileDiagnosas, ...event.target.files]); - } else { - console.log('NO FILE'); - } - }; - const removeDiagnosaFiles = (filesState, index) => { - setFileDiagnosas( - filesState.filter((file, fileIndex) => { - return fileIndex != index; - }) - ); - }; - - // Files Result Hasil Penunjang - const fileHasilPenunjangInput = useRef(null); - const [fileHasilPenunjangs, setFileHasilPenunjangs] = useState([]); - const [fileHasilPenunjangsCurrent, setFileHasilPenunjangCurrent] = useState([]); - - const handleResultInputChange = (event) => { - if (event.target.files[0]) { - setFileHasilPenunjangs([...fileHasilPenunjangs, ...event.target.files]); - } else { - console.log('NO FILE'); - } - }; - const removeFiles = (filesState, index) => { - setFileHasilPenunjangs( - filesState.filter((file, fileIndex) => { - return fileIndex != index; - }) - ); - }; - - const onSubmit = async (data: FormValuesProps) => { try { - // const formData = new FormData(); + const formData = new FormData(); // formData.append('result_files', fileHasilPenunjangs); // formData.append('diagnosa_files', fileDiagnosaInput); // formData.append('kondisi_files', fileKondisiInput); // formData.append('provider_code', data.organization_id); // formData.append('_method', 'PUT'); - const formData = makeFormData({ - result_files: fileHasilPenunjangs, - diagnosa_files: fileDiagnosas, - kondisi_files: fileKondisis, - provider_code: data.organization_id, - _method: 'PUT' - }); - - const response = await axios.put(`/claim-requests/${data.id}`, formData); + // formData.append('date', fPostFormat(id)); + + // const response = await axios.post(`/claim-requests/${data.id}/update`, formData); + reset(); enqueueSnackbar('Claim Request Updated Successfully!', { variant: 'success' }); navigate('/claim-requests'); @@ -205,6 +142,118 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { } }; + const handleApprove = () => { + if(selectedReason.value != '-'){ + const formData = makeFormData({ + date: fPostFormat(date), + reason: selectedReason.value, + }); + const response = axios.post(`/claim-requests/${id}/update`, formData); + + if (!response.error){ + reset(); + enqueueSnackbar('Claim Request Updated Successfully!', { variant: 'success' }); + navigate('/claim-requests'); + } else { + enqueueSnackbar('Claim Request Updated Error!', { variant: 'error' }); + } + } else { + setError('Please select a reason') + } + } + const [openDialog, setOpenDialog] = useState(false); + const style1 = { + color: '#919EAB', + width: '30%' + } + const style2 = { + width: '70%' + } + const marginBottom1 = { + marginBottom: 1, + } + const marginBottom2 = { + marginBottom: 2, + } + const handleCloseDialog = () => { + setOpenDialog(false); + } + + const reason = [ + { value: 'Wrong Setting', label: 'Wrong Setting' }, + { value: 'Hospital Request', label: 'Hospital Request' } + ]; + const [selectedReason, setSelectedReason] = React.useState({value:'-', label:''}); + const [error, setError] = useState(''); + + const getContent = () => ( + + Are you sure to update this claim ? + + + + Code + {currentClaim?.code} + + + Name + {currentClaim?.member?.name} + + + Date of Submission + {date ? fDateTimesecond(date) : '-'} + + + Claim Method + {currentClaim?.payment_type} + + + Service Type + {currentClaim?.service_name || '-'} + + + Code Provider + {currentClaim?.organization?.code || '-'} + + + + Reason for Update* + + option.label} + fullWidth + value={selectedReason} + onChange={(event, newValue) => { + setSelectedReason(newValue); + // Validasi jika newValue adalah null + if (!newValue) { + setError('Please select a reason'); + } else { + setError(''); + } + }} + renderInput={(params) => ( + + )} + /> + + + + + + + + + ) + return ( @@ -254,12 +303,18 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { - - - - ), }} - name="date" label="Date of Submission" disabled/> + ( + setDate(field.value)} + /> + )} + /> @@ -268,161 +323,8 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { - + - - - {/* -------------------------------Upload Dokumen Kondisi------------------------------- */} - - - Condition Document - - - {fileKondisis && - fileKondisis.map((file, index) => ( - - {file.name} - { - removeKondisiFiles(fileKondisis, index); - }} - > - - ))} - - - fileKondisiInput.current?.click()}> - - - - Add File - - - - - - - {/* -------------------------------Upload Dokumen Diagnosa------------------------------- */} - - - Diagnosis Document - - - {fileDiagnosas && - fileDiagnosas.map((file, index) => ( - - {file.name} - { - removeDiagnosaFiles(fileDiagnosas, index); - }} - > - - ))} - - - fileDiagnosaInput.current?.click()}> - - - - Add Result - - - - - - - {/* -------------------------------Upload Result Hasil Penunjang------------------------------- */} - - - Supporting Result Document - - - {fileHasilPenunjangs && - fileHasilPenunjangs.map((file, index) => ( - - {file.name} - { - removeFiles(fileHasilPenunjangs, index); - }} - > - - ))} - - - fileHasilPenunjangInput.current?.click()}> - - - - Add Result - - - - - - - @@ -440,17 +342,24 @@ export default function FormEdit({ isEdit, currentClaim }: Props) { > Cancel - date ? setOpenDialog(true) : setOpenDialog(false)} > Update - + + ); } diff --git a/frontend/dashboard/src/pages/ClaimRequests/CreateUpdate.tsx b/frontend/dashboard/src/pages/ClaimRequests/CreateUpdate.tsx index c710deaa..c1e6307d 100644 --- a/frontend/dashboard/src/pages/ClaimRequests/CreateUpdate.tsx +++ b/frontend/dashboard/src/pages/ClaimRequests/CreateUpdate.tsx @@ -33,7 +33,6 @@ export default function ClaimsCreateUpdate() { useEffect(() => { if (isEdit) { axios.get('/claim-requests/' + id).then((res) => { - console.log('Yeet', res.data); setCurrentClaim(res.data.data); }); diff --git a/frontend/dashboard/src/pages/ClaimRequests/List.tsx b/frontend/dashboard/src/pages/ClaimRequests/List.tsx index 98e193f4..c2df449c 100644 --- a/frontend/dashboard/src/pages/ClaimRequests/List.tsx +++ b/frontend/dashboard/src/pages/ClaimRequests/List.tsx @@ -19,6 +19,7 @@ import { Chip, TableHead, Grid, + Autocomplete, } from '@mui/material'; import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'; import KeyboardArrowRightIcon from '@mui/icons-material/KeyboardArrowRight'; @@ -43,25 +44,59 @@ import { enqueueSnackbar } from 'notistack'; import { Divider } from '@mui/material'; import Iconify from '@/components/Iconify'; import DialogDetailClaim from '@/components/dialogs/DialogDetailClaim'; -import { fDateTimesecond } from '@/utils/formatTime'; +import { fDateOnly, fDateTimesecond } from '@/utils/formatTime'; import { capitalizeFirstLetter } from '@/utils/formatString'; import Label from '@/components/Label'; import TableMoreMenu from '@/components/table/TableMoreMenu'; import { Import } from '@/@types/claims'; +import { DesktopDatePicker, LocalizationProvider } from '@mui/x-date-pickers'; +import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns'; // import LoadingButton from '@/theme/overrides/LoadingButton'; export default function List() { + type ServiceCode = { + value: string, + label: string + } const { themeColorPresets } = useSettings(); const [searchParams, setSearchParams] = useSearchParams(); const [importResult, setImportResult] = useState(null); + const [selectedOptions, setSelectedOptions] = useState([]); // State untuk nilai terpilih const navigate = useNavigate() + const defaultValue = [ + { + value: '-', + label: '-' + } + ]; + const [serviceCode, setServiceCode] = useState(defaultValue); + + const handleOptionService = () => { + + } + + const handleFilter = (event: React.SyntheticEvent, newValue: { value: string, label: string }[], name:string) => { // + const serviceCodeArray :string[] = []; + const codeArray :string[] = []; + const typeArray :string[] = []; + const planArray :string[] = []; + if (name == 'service_code'){ + newValue.map(row => { + serviceCodeArray.push(row.value); + }) + setSelectedOptions(newValue) + } + var entries = [...searchParams.entries(), ['service_code', serviceCodeArray ?? '']]; + const filter = Object.fromEntries(entries); + loadDataTableData(filter); + } function SearchInput(props: any) { // SEARCH const searchInput = useRef(null); const [searchText, setSearchText] = useState(''); - + const handleSearchChange = (event: any) => { const newSearchText = event.target.value ?? ''; setSearchText(newSearchText); @@ -79,16 +114,83 @@ export default function List() { return (
- + + + + + + + { + try { + if (value && !!Date.parse(value)) { + const date:string = value ? fDateOnly(value) : ''; + var entries = [...searchParams.entries(), ['start_date', date ?? '']]; + const filter = Object.fromEntries(entries); + setSearchParams(filter); + loadDataTableData(filter); + } + } catch (e) {} + }} + renderInput={(params) => } + /> + + + + + { + try { + if (value && !!Date.parse(value)) { + const date = fDateOnly(value); + var entries = [...searchParams.entries(), ['end_date', date ?? '']]; + const filter = Object.fromEntries(entries); + setSearchParams(filter); + loadDataTableData(filter); + } + } catch (e) {} + }} + renderInput={(params) => } + /> + + + + handleFilter(event, newValue, 'service_code') + } + fullWidth + disableCloseOnSelect + getOptionLabel={(option) => option.label} + renderInput={(params) => ( + + )} + /> + + + + + ); } @@ -279,11 +381,21 @@ export default function List() { ); const loadDataTableData = async (appliedFilter: any | null = null) => { + + axios.get('service').then((response) => { + const formattedData = response.data.data.map(service => ({ + value: service.code, + label: service.name + })); + setServiceCode(formattedData); + }); + setDataTableLoading(true); const filter = appliedFilter ? appliedFilter : Object.fromEntries([...searchParams.entries()]); const response = await axios.get('/claim-requests', { params: filter }); - // console.log(response.data); + console.log(response.data); setDataTableLoading(false); + setDataTableData(response.data); };