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\Client\Transformers\EmployeeData\UserProfile\DataMemberResource as EmployeeDataProfileMemberResource;
|
||||||
use Modules\Internal\Services\MemberEnrollmentService;
|
use Modules\Internal\Services\MemberEnrollmentService;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Dompdf\Dompdf;
|
||||||
|
use Dompdf\Options;
|
||||||
|
|
||||||
class CorporateMemberController extends Controller
|
class CorporateMemberController extends Controller
|
||||||
{
|
{
|
||||||
@@ -260,7 +262,7 @@ class CorporateMemberController extends Controller
|
|||||||
public function getDeposit($corporate_id)
|
public function getDeposit($corporate_id)
|
||||||
{
|
{
|
||||||
$deposit = DB::table('corporate_policies')
|
$deposit = DB::table('corporate_policies')
|
||||||
->select('total_premi',
|
->select('total_premi',
|
||||||
'minimal_deposit_percentage',
|
'minimal_deposit_percentage',
|
||||||
'minimal_deposit_net',
|
'minimal_deposit_net',
|
||||||
'minimal_alert_percentage',
|
'minimal_alert_percentage',
|
||||||
@@ -356,4 +358,49 @@ class CorporateMemberController extends Controller
|
|||||||
return response()->json($deposit);
|
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-deposits', [CorporateMemberController::class, 'getDeposit']);
|
||||||
|
|
||||||
Route::get('get-limits/{member_id}', [CorporateMemberController::class, 'getLimits']);
|
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']);
|
Route::get('claims/{id}', [ClaimController::class, 'show']);
|
||||||
|
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import Typography from '@mui/material/Typography';
|
|||||||
import TableMoreMenu from '../../components/table/TableMoreMenu';
|
import TableMoreMenu from '../../components/table/TableMoreMenu';
|
||||||
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
||||||
import Label from '../../components/Label';
|
import Label from '../../components/Label';
|
||||||
|
|
||||||
|
import DownloadIcon from '@mui/icons-material/Download';
|
||||||
import { enqueueSnackbar } from 'notistack';
|
import { enqueueSnackbar } from 'notistack';
|
||||||
|
|
||||||
export default function List() {
|
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(() => {
|
useEffect(() => {
|
||||||
(async () => {
|
(async () => {
|
||||||
@@ -182,7 +204,6 @@ export default function List() {
|
|||||||
const response = await axios.get(`${corporateValue}/members?type=employee-data`, {
|
const response = await axios.get(`${corporateValue}/members?type=employee-data`, {
|
||||||
params: { ...parameters },
|
params: { ...parameters },
|
||||||
});
|
});
|
||||||
|
|
||||||
setSearchParams(parameters);
|
setSearchParams(parameters);
|
||||||
setData(
|
setData(
|
||||||
response.data.data.map((obj: any) => ({
|
response.data.data.map((obj: any) => ({
|
||||||
@@ -205,6 +226,10 @@ export default function List() {
|
|||||||
<VisibilityOutlinedIcon />
|
<VisibilityOutlinedIcon />
|
||||||
View
|
View
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
|
<MenuItem onClick={() => handleDownloadEcard(obj.id, obj.fullName)}>
|
||||||
|
<DownloadIcon />
|
||||||
|
Download E-card
|
||||||
|
</MenuItem>
|
||||||
</>
|
</>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user