diff --git a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
index 93f4e075..52c82bee 100755
--- a/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
+++ b/Modules/Internal/Http/Controllers/Api/CorporateMemberController.php
@@ -10,6 +10,7 @@ use App\Models\Member;
use Box\Spout\Reader\Common\Creator\ReaderEntityFactory;
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
use Box\Spout\Common\Entity\Row;
+use Carbon\Carbon;
use Illuminate\Contracts\Support\Renderable;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
@@ -42,10 +43,10 @@ class CorporateMemberController extends Controller
'claims' => function ($claim) {
// return $claim->whereBetween('requested_at', [now()->startOfYear(), now()->endOfYear()]);
// return $claim->used(now()->startOfYear(), now()->endOfYear());
- }
+ },
+ 'currentPlan',
+ 'currentPlan.benefits'
])
- ->with('currentPlan')
- // ->with
->paginate()
->appends($request->all());
@@ -231,15 +232,23 @@ class CorporateMemberController extends Controller
}
- public function generateLog($member_id)
+ public function generateLog(Request $request, $member_id)
{
$member = Member::findOrFail($member_id)
- ->load(['currentPlan', 'currentPolicy', 'currentPlan.corporateBenefits', 'currentPlan.corporateBenefits.benefit']);
+ ->load([
+ 'currentPlan',
+ 'currentPolicy',
+ 'currentPlan.corporateBenefits' => function ($benefit) use ($request) {
+ return $benefit->when($request->benefit_ids, function ($q, $ids) {
+ return $q->whereIn('id', $ids);
+ });
+ },
+ 'currentPlan.corporateBenefits.benefit']);
- // dd($member->currentPlan->corporateBenefits->toArray());
+ $dateOfAdmission = $request->date_of_admission ? Carbon::parse($request->date_of_admission) : now();
// return view('pdf.guaranted_leter', compact('member'));
- $pdf = PDF::loadView('pdf.guaranted_leter', compact('member'));
+ $pdf = PDF::loadView('pdf.guaranted_leter', compact(['member', 'dateOfAdmission']));
return $pdf->download('Guaranted Letter - '.$member->full_name.'.pdf');
}
}
diff --git a/Modules/Internal/Routes/api.php b/Modules/Internal/Routes/api.php
index 7041f488..3c8f664c 100755
--- a/Modules/Internal/Routes/api.php
+++ b/Modules/Internal/Routes/api.php
@@ -131,7 +131,7 @@ Route::prefix('internal')->group(function () {
Route::resource('doctors', DoctorController::class);
- Route::get('generate-log/{member_id}', [CorporateMemberController::class, 'generateLog']);
+ Route::post('generate-log/{member_id}', [CorporateMemberController::class, 'generateLog']);
Route::get('claim-requests', [ClaimRequestController::class, 'index'])->name('claim-requests.index');
Route::post('claim-requests/{id}/approve', [ClaimRequestController::class, 'approve'])->name('claim-requests.approve');
diff --git a/frontend/dashboard/src/pages/Corporates/Member/List.tsx b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
index dac4b68c..14c5a85d 100755
--- a/frontend/dashboard/src/pages/Corporates/Member/List.tsx
+++ b/frontend/dashboard/src/pages/Corporates/Member/List.tsx
@@ -46,6 +46,7 @@ import { Member } from '../../../@types/member';
import BasePagination from '../../../components/BasePagination';
import { enqueueSnackbar } from 'notistack';
import { LoadingButton } from '@mui/lab';
+import DialogLog from './sections/DialogLog';
export default function CorporatePlanList() {
const { themeStretch } = useSettings();
@@ -198,19 +199,17 @@ export default function CorporatePlanList() {
enqueueSnackbar('No File Selected', { variant: 'warning' });
}
};
-
- const handleGetTemplate = (type :string) => {
- axios.get('corporates/import-document-example/' + type)
- .then((response) => {
- const link = document.createElement('a');
- link.href = response.data.data.file_url;
- link.setAttribute('download', response.data.data.file_name);
- document.body.appendChild(link);
- link.click();
- handleClose();
- })
- }
+ const handleGetTemplate = (type: string) => {
+ axios.get('corporates/import-document-example/' + type).then((response) => {
+ const link = document.createElement('a');
+ link.href = response.data.data.file_url;
+ link.setAttribute('download', response.data.data.file_name);
+ document.body.appendChild(link);
+ link.click();
+ handleClose();
+ });
+ };
return (
@@ -248,7 +247,13 @@ export default function CorporatePlanList() {
}}
>
-
+
)}
@@ -329,6 +334,15 @@ export default function CorporatePlanList() {
const { row } = props;
const [open, setOpen] = React.useState(false);
const [loadingLog, setLoadingLog] = React.useState(false);
+ const [dialogLogOpen, setDialogLogOpen] = React.useState(false);
+
+ // useEffect(function () {
+ // if (row.full_name == 'Pajri') {
+ // setDialogLogOpen(true);
+ // console.log('fuck');
+ // }
+ // }, []);
+
const handleActivate = (model: any, status: string) => {
axios
.put(`/members/${row.id}/activation`, {
@@ -355,33 +369,7 @@ export default function CorporatePlanList() {
);
});
};
-
- const handleDownloadLog = (row: ReturnType
) => {
- setLoadingLog(true);
- axios.get(`generate-log/${row.id}`, {
- responseType: 'blob'
- })
- .then((response) => {
- window.open(URL.createObjectURL(response.data));
- // const content = response.headers['content-type'];
- // download(response.data, file.file_name, content);
- // const link = document.createElement('a');
- // console.log(response.data);
- // link.href = response.data.data.file_url;
- // link.setAttribute('download', response.data.data.file_name);
- // document.body.appendChild(link);
- // link.click();
- setLoadingLog(false);
- })
- // .then((blobFile) => {
- // new File([blobFile], 'asdads.pdf', { type: blobFile.type })
- // setLoadingLog(false);
- // })
- .catch((response) => {
- enqueueSnackbar(response.message, {variant: 'error'})
- setLoadingLog(false);
- })
- }
+
return (
*': { borderBottom: 'unset' } }}>
@@ -546,31 +534,29 @@ export default function CorporatePlanList() {
- }
- // sx={{ p: 1.8 }}
- onClick={() => {handleDownloadLog(row)}}
- loading={loadingLog}
- >
- Download LOG
-
+ }
+ // sx={{ p: 1.8 }}
+ // onClick={() => {handleDownloadLog(row)}}
+ onClick={() => {
+ setDialogLogOpen(true);
+ }}
+ loading={loadingLog}
+ >
+ Download LOG
+
- {/* Sub Corporate
-
-
-
-
- Sub Corporates (asdasdasdasd)
-
-
- : qweqweqweqwe
-
-
-
- */}
+
diff --git a/frontend/dashboard/src/pages/Corporates/Member/sections/DialogLog.tsx b/frontend/dashboard/src/pages/Corporates/Member/sections/DialogLog.tsx
new file mode 100644
index 00000000..81e83298
--- /dev/null
+++ b/frontend/dashboard/src/pages/Corporates/Member/sections/DialogLog.tsx
@@ -0,0 +1,203 @@
+// react
+import { ReactElement, useEffect, useState } from 'react';
+// mui
+import {
+ Card,
+ Checkbox,
+ Divider,
+ Grid,
+ Input,
+ Link,
+ Stack,
+ Table,
+ TableCell,
+ TableContainer,
+ TableRow,
+ Typography,
+} from '@mui/material';
+import { styled } from '@mui/material/styles';
+// Component
+import MuiDialog from '@/components/MuiDialog';
+import { Box } from '@mui/material';
+import { TextField } from '@mui/material';
+import { DesktopDatePicker, LocalizationProvider } from '@mui/x-date-pickers';
+import { AdapterDateFns } from '@mui/x-date-pickers/AdapterDateFns';
+import { fPostFormat } from '@/utils/formatTime';
+import { LoadingButton } from '@mui/lab';
+import InsertDriveFileIcon from '@mui/icons-material/InsertDriveFile';
+import axios from '@/utils/axios';
+import { enqueueSnackbar } from 'notistack';
+
+type DataContent = {
+ info: string;
+ date: string;
+ time: string;
+};
+
+type MuiDialogProps = {
+ title?: {
+ name?: string;
+ icon?: string;
+ };
+ openDialog: boolean;
+ setOpenDialog: Function;
+ content?: ReactElement;
+ data?: DataContent[];
+};
+
+const ItemNotificationStyle = styled(Card)(({ theme }) => ({
+ boxShadow: 'none',
+ padding: theme.spacing(1),
+ borderRadius: 0.5,
+ color: 'black',
+}));
+
+const DialogLog = ({ title, openDialog, setOpenDialog, data }: MuiDialogProps) => {
+ const [openDialogClaim, setOpenDialogClaim] = useState(false);
+ const [dialogTitleClaim, setDialogTitleClaim] = useState('');
+ const [dateOfAdmission, setDateOfAdmission] = useState(new Date());
+ const [checkedBenefitIds, setCheckedBenefitIds] = useState([]);
+ const [benefitIds, setBenefitIds] = useState([]);
+ const [loadingLog, setLoadingLog] = useState(false);
+
+ useEffect(() => {
+ setBenefitIds(data.member.current_plan?.benefits.map((benefit) => benefit.id))
+ setCheckedBenefitIds(benefitIds)
+ console.log('Check All', benefitIds, 'X', data.member.current_plan?.benefits.map((benefit) => benefit.id))
+ }, [])
+
+ const clickHandler = () => {
+ setDialogTitleClaim('Claim Details');
+ setOpenDialogClaim(true);
+ };
+
+ const handleCheckAll = (event) => {
+ if (event.target.checked) {
+ setCheckedBenefitIds(benefitIds)
+ } else {
+ setCheckedBenefitIds([])
+ }
+ }
+
+ const handleCheckChange = (event, benefit) => {
+ if ( event.target.checked ) {
+ setCheckedBenefitIds([...checkedBenefitIds, benefit.id])
+ } else {
+ // setCheckedBenefitIds([])
+ setCheckedBenefitIds(checkedBenefitIds.filter((benefitId) => benefitId !== benefit.id))
+ }
+ }
+
+ const handleDownloadLog = (row) => {
+ setLoadingLog(true);
+ axios
+ .post(`generate-log/${row.id}`, {
+ date_of_admission : dateOfAdmission,
+ benefit_ids : checkedBenefitIds
+ }, {
+ responseType: 'blob',
+ })
+ .then((response) => {
+ window.open(URL.createObjectURL(response.data));
+ setLoadingLog(false);
+ setOpenDialog(false);
+ })
+ .catch((response) => {
+ enqueueSnackbar(response.message, { variant: 'error' });
+ setLoadingLog(false);
+ });
+ }
+
+ const getContent = () => (
+
+
+
+
+
+
+ {
+ setDateOfAdmission(new Date(fPostFormat(value)));
+ // console.log('value')
+ }}
+ renderInput={(params) => (
+
+ )}
+ />
+
+
+
+
+ List Of Benefit
+
+
+ All
+
+
+
+
+
+ }>
+ { data.member.current_plan?.benefits && (
+ data.member.current_plan?.benefits.map((benefit, index) => (
+
+
+ {benefit.code} {benefit.description ? ` - ${benefit.description} ` : ''}
+
+ {handleCheckChange(event, benefit)} } />
+
+ ))
+ )}
+
+ {/*
+
+
+
+ ASD
+
+
+ ASD
+
+
+
+ */}
+
+
+
+ }
+ onClick={() => {handleDownloadLog(data.member)}}
+ loading={loadingLog}
+ >
+ Download LOG
+
+
+
+
+
+
+ );
+
+ return (
+ <>
+
+ >
+ );
+};
+
+export default DialogLog;
diff --git a/resources/views/pdf/guaranted_leter.blade.php b/resources/views/pdf/guaranted_leter.blade.php
index f93a1fd5..5c25fdeb 100644
--- a/resources/views/pdf/guaranted_leter.blade.php
+++ b/resources/views/pdf/guaranted_leter.blade.php
@@ -127,7 +127,7 @@
@if (isset($claimRequest))
{{ !empty($claimRequest->submission_date) ? \Carbon\Carbon::parse($claimRequest->submission_date)->format('d/m/Y') : now()->format('d/m/Y') }}
@else
- {{ !empty($member->endorsement_date) ? \Carbon\Carbon::parse($member->endorsement_date)->format('d/m/Y') : $member->created_at->format('d/m/Y') }}
+ {{ $dateOfAdmission->format('d/m/Y') }}
@endif
|