Update E Card Client Portal

This commit is contained in:
ivan-sim
2024-07-04 14:45:02 +07:00
parent 3ef3132251
commit 9b643cd7dd
3 changed files with 76 additions and 2 deletions

View File

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

View File

@@ -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']);

View File

@@ -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>
</>
}
/>