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 (
);
}
@@ -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);
};