diff --git a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php index 6178fbd1..5a0e6403 100644 --- a/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php +++ b/Modules/Internal/Http/Controllers/Api/DailyMonitoringController.php @@ -395,6 +395,31 @@ class DailyMonitoringController extends Controller } } + /** + * Delete Listing Daily Monitoring + */ + public function deleteDetailMonitoringListRequestLog(Request $request, $id) + { + $listDailyMonitoring = RequestDailyMonitoring::find($id); + $listDailyMonitoring->reason = $request->reason; + $listDailyMonitoring->save(); + + if (!$listDailyMonitoring) { + return response()->json([ + 'error' => true, + 'message' => "Data not found.", + ], 404); + } + + $listDailyMonitoring->delete(); + + return response()->json([ + 'error' => false, + 'message' => "Delete success", + 'data' => $listDailyMonitoring + ], 200); + } + /** * Update Status Request LOG */ diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php index ff19846f..303a75dc 100644 --- a/Modules/Internal/Routes/api.php +++ b/Modules/Internal/Routes/api.php @@ -178,6 +178,7 @@ Route::prefix('internal')->group(function () { Route::post('detail/{claim_code}/add', [DailyMonitoringController::class, 'AddDetailMonitoringList']); Route::post('detail/{claim_code}/add-request', [DailyMonitoringController::class, 'AddDetailMonitoringListRequestLog']); Route::post('detail/{claim_code}/update-status', [DailyMonitoringController::class, 'UpdateListRequestLog']); + Route::get('detail/{id}/delete', [DailyMonitoringController::class, 'deleteDetailMonitoringListRequestLog']); }); // Laboratorium Result diff --git a/app/Models/RequestDailyMonitoring.php b/app/Models/RequestDailyMonitoring.php index 2d658f68..dd34d374 100644 --- a/app/Models/RequestDailyMonitoring.php +++ b/app/Models/RequestDailyMonitoring.php @@ -4,12 +4,14 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\SoftDeletes; +use Illuminate\Support\Facades\Auth; use DB; class RequestDailyMonitoring extends Model { use HasFactory; - + use SoftDeletes; protected $table = "request_log_daily_monitorings"; protected $fillable = [ @@ -28,6 +30,8 @@ class RequestDailyMonitoring extends Model 'created_by', 'updated_by', 'deleted_by', + 'reason', + 'deleted_at' ]; protected $appends = ['medical_plan', 'non_medikamentosa_plan', 'document', 'discharge_date']; @@ -52,6 +56,18 @@ class RequestDailyMonitoring extends Model // return round($this->attributes['respiration_rate'], 0); // } + protected static function boot() + { + parent::boot(); + + // Event handling untuk deleting + static::deleting(function ($model) { + // Set nilai deleted_by dengan ID pengguna yang melakukan penghapusan (jika ada) + $model->deleted_by = Auth::id(); + $model->save(); + }); + } + public function getMedicalPlanAttribute() { $arr_medical_plan = []; diff --git a/app/Models/RequestLog.php b/app/Models/RequestLog.php index ea538202..b5a865fc 100644 --- a/app/Models/RequestLog.php +++ b/app/Models/RequestLog.php @@ -270,7 +270,7 @@ class RequestLog extends Model public function requestLogDailyMonitorings() { - return $this->hasMany(RequestLogDailyMonitoring::class, 'request_log_id'); + return $this->hasMany(RequestLogDailyMonitoring::class, 'request_log_id')->whereNull('deleted_at'); } public function getPaymentTypeNameAttribute() diff --git a/database/migrations/2024_02_20_152314_add_coloumn_to_request_log_daily_monitorings.php b/database/migrations/2024_02_20_152314_add_coloumn_to_request_log_daily_monitorings.php new file mode 100644 index 00000000..08c9a820 --- /dev/null +++ b/database/migrations/2024_02_20_152314_add_coloumn_to_request_log_daily_monitorings.php @@ -0,0 +1,34 @@ +string('reason'); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('request_log_daily_monitorings', function (Blueprint $table) { + $table->dropColumn('reason'); + $table->dropSoftDeletes(); + }); + } +}; diff --git a/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringList.tsx b/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringList.tsx index 81f61580..573bda2d 100644 --- a/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringList.tsx +++ b/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Components/DetailMonitoringList.tsx @@ -2,10 +2,10 @@ * Core * ============================================ */ -import { useEffect, useState } from 'react'; +import React, { useEffect, useState } from 'react'; import { useFieldArray, useForm } from 'react-hook-form'; import { useNavigate, useParams } from 'react-router-dom'; -import { Box, IconButton, Typography, Grid, Card, List, ListItem } from '@mui/material'; +import { Box, IconButton, Typography, Grid, Card, List, ListItem, Stack, Autocomplete, TextField, Button } from '@mui/material'; import { LoadingButton } from "@mui/lab"; /** @@ -31,6 +31,13 @@ import { fDate, fDateOnly } from '@/utils/formatTime'; import { getMonitoringDetailList } from '../Model/Functions'; import { getOrganizationId } from '../Model/Functions'; import { DetailMonitoringListType } from '../Model/Types'; +import TableMoreMenu from '@/components/table/TableMoreMenu'; +import { MenuItem } from '@mui/material'; +import { Delete } from '@mui/icons-material'; +import MuiDialog from '@/components/MuiDialog'; +import { DialogActions } from '@mui/material'; +import axios from '@/utils/axios'; +import { enqueueSnackbar } from 'notistack'; export default function DetailMonitoringList() { @@ -42,12 +49,91 @@ export default function DetailMonitoringList() { // -------------------- const [detailMonitoringList, setDetailMonitoringList] = useState(); const [organizationId, setOrganizationId] = useState(); + + const [openDialog, setOpenDialog] = useState(false) + // Use Effect // -------------------- useEffect(() => { loadDataTableData(); }, []) + // Dialog + const marginBottom2 = { + marginBottom: 2, + } + const [selectedReason, setSelectedReason] = useState({value:'-', label:''}); + const reason = [ + { value: 'Wrong Setting', label: 'Wrong Setting' }, + { value: 'Hospital Request', label: 'Hospital Request' } + ]; + const [error, setError] = useState(''); + const [id, setId] = useState(null); + const handleCloseDialog = () => { + setOpenDialog(false); + } + const handleDelete = () => { + if(selectedReason.value != '-'){ + const parameters = { + 'reason' : selectedReason.value + } + const response = axios.get(`case_management/daily_monitoring/detail/${id}/delete`, { + params: { ...parameters }, + }); + if (!response.error){ + enqueueSnackbar('Claim Request Updated Successfully!', { variant: 'success' }); + window.location.reload(); + setOpenDialog(false) + } else { + enqueueSnackbar('Claim Request Updated Error!', { variant: 'error' }); + } + } else { + setError('Please select a reason') + } + } + + const getContent = () => ( + + Are you sure to delete this Daily Monitoring ? + + + Reason for Delete* + + 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) => ( + + )} + /> + + + + + + + + + ) + // Load Data // ------------------- const loadDataTableData = async () => { @@ -81,33 +167,49 @@ export default function DetailMonitoringList() { detailMonitoringList?.map((row, index) => { return ( - + {/* card header */} - - + )} + {/* Menempatkan TableMoreMenu di sebelah kanan */} + {setOpenDialog(true); setId(row.id)}}> + + Delete + + } /> + + {/* card body */} @@ -387,6 +489,15 @@ export default function DetailMonitoringList() { } + + {/* Dialog Delete */} + ); diff --git a/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Model/Types.ts b/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Model/Types.ts index 430a8990..5230826f 100644 --- a/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Model/Types.ts +++ b/frontend/dashboard/src/pages/CaseManagement/DailyMonitoring/Model/Types.ts @@ -48,7 +48,7 @@ export type ClaimListType = { * Detail Monitoring List */ export type DetailMonitoringListType = { - id : string|null, + id : number|null, claim_id : string|null, claim_code : string, subject : string, @@ -61,6 +61,7 @@ export type DetailMonitoringListType = { analysis : string, complaints : string, submission_date : string, + discharge_date : string, lab_date : string, provider : string, examination : string,