Update E Card Client Portal
This commit is contained in:
@@ -22,6 +22,8 @@ use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use Modules\Client\Transformers\EmployeeData\UserProfile\DataMemberResource as EmployeeDataProfileMemberResource;
|
||||
use Modules\Internal\Services\MemberEnrollmentService;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Dompdf\Dompdf;
|
||||
use Dompdf\Options;
|
||||
|
||||
class CorporateMemberController extends Controller
|
||||
{
|
||||
@@ -260,7 +262,7 @@ class CorporateMemberController extends Controller
|
||||
public function getDeposit($corporate_id)
|
||||
{
|
||||
$deposit = DB::table('corporate_policies')
|
||||
->select('total_premi',
|
||||
->select('total_premi',
|
||||
'minimal_deposit_percentage',
|
||||
'minimal_deposit_net',
|
||||
'minimal_alert_percentage',
|
||||
@@ -356,4 +358,49 @@ class CorporateMemberController extends Controller
|
||||
return response()->json($deposit);
|
||||
}
|
||||
|
||||
public function downloadEcard($corporate_id, $member_id)
|
||||
{
|
||||
$member = Member::with([
|
||||
'currentPlan',
|
||||
'currentPolicy',
|
||||
'currentCorporate',
|
||||
'currentCorporate.files',
|
||||
// 'currentPlan.corporateBenefits.benefit'
|
||||
])->find($member_id);
|
||||
$dataMember['member'] = $member;
|
||||
|
||||
$pdf = new Dompdf();
|
||||
|
||||
$options = new Options();
|
||||
$options->set('isHtml5ParserEnabled', true);
|
||||
$options->set('isPhpEnabled', true);
|
||||
$options->set(['isRemoteEnabled' => true]);
|
||||
$pdf->setOptions($options);
|
||||
|
||||
$pdf->setPaper('A4', 'portrait');
|
||||
|
||||
if ($member->currentCorporate->id == 5){ // Vale
|
||||
$html1 = view('pdf.ecard', $dataMember);
|
||||
} else {
|
||||
$html1 = view('pdf.ecard-lms', $dataMember);
|
||||
}
|
||||
|
||||
// Halaman 2
|
||||
// $html2 = view('pdf.req_log_page_2', $data);
|
||||
|
||||
// Gabung konten HTML dari dua tampilan
|
||||
// $htmlCombined = $html1 . $html2;
|
||||
$htmlCombined = $html1;
|
||||
|
||||
$pdf->loadHtml($htmlCombined);
|
||||
$pdf->render();
|
||||
|
||||
$headers = [
|
||||
'Content-Type' => 'application/pdf',
|
||||
'Content-Disposition' => 'inline; filename="file.pdf"',
|
||||
];
|
||||
|
||||
return response($pdf->output(), 200, $headers);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -74,6 +74,8 @@ Route::prefix('client')->group(function () {
|
||||
Route::get('get-deposits', [CorporateMemberController::class, 'getDeposit']);
|
||||
|
||||
Route::get('get-limits/{member_id}', [CorporateMemberController::class, 'getLimits']);
|
||||
|
||||
Route::get('download-ecard/{member_id}', [CorporateMemberController::class, 'downloadEcard']);
|
||||
});
|
||||
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ import Typography from '@mui/material/Typography';
|
||||
import TableMoreMenu from '../../components/table/TableMoreMenu';
|
||||
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
||||
import Label from '../../components/Label';
|
||||
|
||||
import DownloadIcon from '@mui/icons-material/Download';
|
||||
import { enqueueSnackbar } from 'notistack';
|
||||
|
||||
export default function List() {
|
||||
@@ -167,6 +169,26 @@ export default function List() {
|
||||
},
|
||||
];
|
||||
/* -------------------------------------------------------------------------- */
|
||||
// Download E-Card
|
||||
async function handleDownloadEcard(member_id: any, fullName:any) {
|
||||
return axios
|
||||
.get(corporateValue+`/download-ecard/${member_id}`, {
|
||||
responseType: 'blob',
|
||||
})
|
||||
.then((response) => {
|
||||
const namaFile = 'Ecard - '+fullName+".pdf";
|
||||
const url = URL.createObjectURL(response.data);
|
||||
const link = document.createElement('a');
|
||||
link.href = url;
|
||||
link.setAttribute('download', namaFile);
|
||||
document.body.appendChild(link);
|
||||
link.click();
|
||||
document.body.removeChild(link);
|
||||
})
|
||||
.catch((error) => {
|
||||
enqueueSnackbar(error.message, { variant: 'error' });
|
||||
});
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
(async () => {
|
||||
@@ -182,7 +204,6 @@ export default function List() {
|
||||
const response = await axios.get(`${corporateValue}/members?type=employee-data`, {
|
||||
params: { ...parameters },
|
||||
});
|
||||
|
||||
setSearchParams(parameters);
|
||||
setData(
|
||||
response.data.data.map((obj: any) => ({
|
||||
@@ -205,6 +226,10 @@ export default function List() {
|
||||
<VisibilityOutlinedIcon />
|
||||
View
|
||||
</MenuItem>
|
||||
<MenuItem onClick={() => handleDownloadEcard(obj.id, obj.fullName)}>
|
||||
<DownloadIcon />
|
||||
Download E-card
|
||||
</MenuItem>
|
||||
</>
|
||||
}
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user