update fitur delete all import

This commit is contained in:
2023-11-09 17:25:16 +07:00
parent 3100a1a1b2
commit cea8b476e0
7 changed files with 92 additions and 4 deletions

View File

@@ -507,6 +507,17 @@ class CorporateController extends Controller
];
}
public function deleteAllImportPlanBenefit(Request $request, $corporate_id){
$deleteBenefit = CorporateBenefit::where('corporate_id', $corporate_id)->delete();
$deletePlan = Plan::where('corporate_id', $corporate_id)->delete();
if ( $deleteBenefit && $deletePlan ){
return Helper::responseJson(data: [], message: 'Berhasil delete semua benefit');
} else {
return Helper::responseJson(data: [], message: 'Gagal delete semua benefit', statusCode:404);
}
}
public function importDocumentExample($document_type)
{
switch ($document_type) {

View File

@@ -76,6 +76,7 @@ Route::prefix('internal')->group(function () {
Route::get('corporates/import-document-example/{document_type}', [CorporateController::class, 'importDocumentExample']);
Route::put('corporates/{corporate_id}/activation', [CorporateController::class, 'activation']);
Route::post('corporates/{corporate_id}/import-plan-benefit', [CorporateController::class, 'importPlanBenefit']);
Route::post('corporates/{corporate_id}/delete-import-plan-benefit', [CorporateController::class, 'deleteAllImportPlanBenefit']);
Route::get('corporates/{corporate_id}/data-plan-benefit', [CorporateController::class, 'dataPlanBenefit']);
Route::get('corporates/{corporate_id}/code', [CorporateController::class, 'corporateCode']);
Route::get('corporates/{corporate_id}/payor_id', [CorporateController::class, 'corporatePayorId']);

View File

@@ -237,7 +237,6 @@ class CorporateService
->where('corporate_plan_id', $benefit_data['plan_code'])
->first();
$benefit_data['plan_code'] = $plan->id;
$benefit = Benefit::updateOrCreate([
'code' => $benefit_data['code'],
'service_code' => $plan->service_code,

View File

@@ -38,9 +38,12 @@ import CancelIcon from '@mui/icons-material/Cancel';
import HistoryIcon from '@mui/icons-material/History';
import CachedOutlinedIcon from '@mui/icons-material/CachedOutlined';
import FindInPageOutlinedIcon from '@mui/icons-material/FindInPageOutlined';
import { DialogTitle, DialogContent, DialogActions } from '@mui/material';
import { yupResolver } from '@hookform/resolvers/yup';
import { useForm } from 'react-hook-form';
import CloseIcon from '@mui/icons-material/Close';
// hooks
import React, { ChangeEvent, Component, useEffect, useRef, useState } from 'react';
@@ -77,6 +80,7 @@ import { fData, fNumber } from '@/utils/formatNumber';
import DialogUpdateStatus from '@/components/DialogUpdateStatus';
import { ro } from 'date-fns/locale';
import { Dialog } from '@mui/material';
export default function PlanList() {
const { themeStretch } = useSettings();
@@ -264,6 +268,7 @@ export default function PlanList() {
<MenuItem onClick={handleImportButton}>Import</MenuItem>
<MenuItem onClick={() => {handleGetTemplate('plan-benefit')}}>Download Template</MenuItem>
<MenuItem onClick={() => {handleGetData('data-plan-benefit')}}>Download Data Plan & Benefit</MenuItem>
<MenuItem onClick={() => {setDialogDeleteOpen(true)}}>Delete All Import</MenuItem>
</Menu>
</Stack>
)}
@@ -954,7 +959,6 @@ export default function PlanList() {
} = methods;
const handleUpdate = (active: number, id: number, reason:string) => {
console.log(active)
axios
.put(`/benefits/${id}/activation`, {
active: active,
@@ -966,6 +970,19 @@ export default function PlanList() {
}
const handleDeleteAllImport = () => {
axios
.post(`/corporates/${corporate_id}/delete-import-plan-benefit`)
.then((res) => {
window.location.reload();
});
}
const [isOpenDialogDelete, setDialogDeleteOpen] = useState(false);
const handleCloseDialogDelete = () => {
setDialogDeleteOpen(false);
};
const getContent = () => (
<>
<Stack paddingX={2} paddingY={2}>
@@ -1153,6 +1170,27 @@ export default function PlanList() {
content={getContent()}
// maxWidth='50px'
/>
<Dialog open={isOpenDialogDelete} onClose={handleCloseDialogDelete} fullWidth={true} >
<DialogTitle sx={{ backgroundColor: '#19BBBB', color: '#FFF', padding: 2 }}>
<Stack direction="row" alignItems="center" justifyContent="space-between">
<Stack direction="row" alignItems='center' spacing={1}>
<Typography variant="h6">Delete Import Benefit</Typography>
</Stack>
<IconButton sx={{ color: '#FFF' }} onClick={handleCloseDialogDelete}>
<CloseIcon />
</IconButton>
</Stack>
</DialogTitle>
<DialogContent>
<Stack spacing={2} sx={{marginTop: 2, padding: 2}}>
<Typography variant='subtitle1'>Are you sure delete all data benefit and plan?</Typography>
</Stack>
</DialogContent>
<DialogActions>
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialogDelete}>Cancel</Button>
<Button sx={{backgroundColor: '#19BBBB'}} variant="contained" onClick={() => handleDeleteAllImport()}>Delete</Button>
</DialogActions>
</Dialog>
</Stack>
);
}

View File

@@ -58,6 +58,9 @@ import { Download, Edit } from '@mui/icons-material';
import TableMoreMenu from '@/components/table/TableMoreMenu';
import Label from '@/components/Label';
import DialogUpdateStatus from '@/components/DialogUpdateStatus';
import {Dialog, DialogTitle, DialogContent, DialogActions } from '@mui/material';
import CloseIcon from '@mui/icons-material/Close';
export default function CorporatePlanList() {
const { themeStretch } = useSettings();
@@ -327,6 +330,8 @@ export default function CorporatePlanList() {
<MenuItem onClick={handleImportButton}>Import</MenuItem>
<MenuItem onClick={() => {handleGetTemplate('plan-benefit')}}>Download Template</MenuItem>
<MenuItem onClick={() => {handleGetData('data-plan-benefit')}}>Download Plans & Benefit</MenuItem>
<MenuItem onClick={() => {setDialogDeleteOpen(true)}}>Delete All Import</MenuItem>
</Menu>
</Grid>
</Grid>
@@ -891,6 +896,18 @@ export default function CorporatePlanList() {
});
}
const handleDeleteAllImport = () => {
axios
.post(`/corporates/${corporate_id}/delete-import-plan-benefit`)
.then((res) => {
window.location.reload();
});
}
const [isOpenDialogDelete, setDialogDeleteOpen] = useState(false);
const handleCloseDialogDelete = () => {
setDialogDeleteOpen(false);
};
const getContent = () => (
<>
<Stack paddingX={2} paddingY={2}>
@@ -1062,6 +1079,28 @@ export default function CorporatePlanList() {
content={getContent()}
// maxWidth='50px'
/>
<Dialog open={isOpenDialogDelete} onClose={handleCloseDialogDelete} fullWidth={true} >
<DialogTitle sx={{ backgroundColor: '#19BBBB', color: '#FFF', padding: 2 }}>
<Stack direction="row" alignItems="center" justifyContent="space-between">
<Stack direction="row" alignItems='center' spacing={1}>
<Typography variant="h6">Delete Import Benefit</Typography>
</Stack>
<IconButton sx={{ color: '#FFF' }} onClick={handleCloseDialogDelete}>
<CloseIcon />
</IconButton>
</Stack>
</DialogTitle>
<DialogContent>
<Stack spacing={2} sx={{marginTop: 2, padding: 2}}>
<Typography variant='subtitle1'>Are you sure delete all data benefit and plan?</Typography>
</Stack>
</DialogContent>
<DialogActions>
<Button variant="outlined" sx={{color: '#212B36', borderColor: '#919EAB52'}} onClick={handleCloseDialogDelete}>Cancel</Button>
<Button sx={{backgroundColor: '#19BBBB'}} variant="contained" onClick={() => handleDeleteAllImport()}>Delete</Button>
</DialogActions>
</Dialog>
</Stack>
);
}

View File

@@ -596,7 +596,7 @@ export default function Divisions() {
<Card sx={{'marginTop': 5}}>
<Grid container padding={2}>
<Grid item xs={12} paddingY={2}>
<Typography color={'#19BBBB'} variant='subtitle1'>Free Admin Fee*</Typography>
<Typography color={'#19BBBB'} variant='subtitle1'>Admin Fee*</Typography>
</Grid>
<Grid item xs={12} paddingX={2} paddingY={2}>
<FormControlLabel

View File

@@ -496,7 +496,7 @@ export default function List() {
<TableHead>
<TableRow>
<TableCell colSpan={4} sx={{ py: 1 }}>
Free Admin Fee
Admin Fee
</TableCell>
</TableRow>
</TableHead>