Update Export Excel Alrm Center
This commit is contained in:
@@ -17,6 +17,10 @@ use Modules\Client\Transformers\ClaimShowResource;
|
||||
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
||||
use Box\Spout\Writer\Common\Creator\WriterEntityFactory;
|
||||
use Box\Spout\Writer\Common\Creator\Style\StyleBuilder;
|
||||
use Box\Spout\Common\Entity\Style\CellAlignment;
|
||||
use Box\Spout\Common\Entity\Style\Color;
|
||||
|
||||
class ClaimController extends Controller
|
||||
{
|
||||
@@ -261,4 +265,239 @@ class ClaimController extends Controller
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
public function exportAlrmCenter($corporate_id, $start, $end)
|
||||
{
|
||||
$writer = WriterEntityFactory::createXLSXWriter();
|
||||
$writer->openToFile(public_path('files/Claim-Data-Corporate-'. date('Y-m-d').'.xlsx'));
|
||||
$header = [
|
||||
'No',
|
||||
'Code',
|
||||
'Provider',
|
||||
'Member ID (BN)',
|
||||
'Member Name',
|
||||
'Member Name Principal',
|
||||
'Plan ID',
|
||||
'Payor ID',
|
||||
'Corporate name',
|
||||
'Policy Number',
|
||||
'Benefit Code',
|
||||
'Benefit Desc',
|
||||
'Amt Incurred',
|
||||
'Amt Approved',
|
||||
'Amt Not Approved',
|
||||
'Excess Paid',
|
||||
'Diagnosis'
|
||||
];
|
||||
$style = (new StyleBuilder())
|
||||
->setFontBold()
|
||||
// ->setFontSize(15)
|
||||
// ->setFontColor(Color::BLUE)
|
||||
// ->setShouldWrapText()
|
||||
->setCellAlignment(CellAlignment::LEFT)
|
||||
// ->setBackgroundColor(Color::YELLOW)
|
||||
->build();
|
||||
|
||||
$headerRow = WriterEntityFactory::createRowFromArray($header, $style);
|
||||
$writer->addRow($headerRow);
|
||||
|
||||
$data = DB::table('request_logs')
|
||||
->leftJoin('members', 'members.id', '=', 'request_logs.member_id')
|
||||
->leftJoin('corporate_employees','corporate_employees.member_id','=','members.id')
|
||||
->where('corporate_employees.corporate_id', '=', 1)
|
||||
->where('request_logs.submission_date', '>', $start)
|
||||
->where('request_logs.submission_date', '<', $end)
|
||||
->select(
|
||||
DB::raw('1 AS no'),
|
||||
'request_logs.organization_id',
|
||||
'request_logs.id',
|
||||
'request_logs.member_id',
|
||||
'request_logs.service_code',
|
||||
'request_logs.code'
|
||||
)
|
||||
->get();
|
||||
|
||||
if (isset($data) && count($data) > 0)
|
||||
{
|
||||
$dataRow = array();
|
||||
$no = 0;
|
||||
foreach ($data as $item)
|
||||
{
|
||||
//Provider
|
||||
$dataRumahSakit = DB::table('organizations')
|
||||
->leftJoin('addresses', 'addresses.addressable_id', '=', 'organizations.id')
|
||||
->where('organizations.id', '=', $item->organization_id)
|
||||
->where('addresses.addressable_type', '=', 'App\Models\Organization')
|
||||
->select('organizations.name AS nama_rumahsakit', 'addresses.text AS alamat_rumahsakit')
|
||||
->first();
|
||||
//Data Member
|
||||
$dataMember = DB::table('members')
|
||||
->where('members.id', '=', $item->member_id)
|
||||
->select(
|
||||
'members.nric',
|
||||
'members.id',
|
||||
'members.principal_id',
|
||||
'members.name',
|
||||
'members.birth_date',
|
||||
'members.member_id',
|
||||
'members.gender',
|
||||
DB::raw('
|
||||
(Select persons.nik FROM persons WHERE persons.id = members.person_id LIMIT 1) AS nik
|
||||
'),
|
||||
DB::raw('
|
||||
"LinkSehat" AS penjamin
|
||||
'),
|
||||
DB::raw('
|
||||
(Select corporates.name FROM corporates
|
||||
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
|
||||
WHERE corporate_employees.member_id = members.id LIMIT 1) AS nama_perusahaan
|
||||
'),
|
||||
DB::raw('
|
||||
(Select corporates.id FROM corporates
|
||||
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
|
||||
WHERE corporate_employees.member_id = members.id LIMIT 1) AS id_perusahaan
|
||||
'),
|
||||
DB::raw('
|
||||
(Select corporates.code FROM corporates
|
||||
LEFT JOIN corporate_employees ON corporate_employees.corporate_id = corporates.id
|
||||
WHERE corporate_employees.member_id = members.id LIMIT 1) AS code_perusahaan
|
||||
'),
|
||||
DB::raw('
|
||||
(Select services.name FROM services
|
||||
WHERE services.code = "'.$item->service_code.'" LIMIT 1) AS jenis_perwatan
|
||||
'),
|
||||
DB::raw('
|
||||
(Select member_policies.policy_id FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS no_polis
|
||||
'),
|
||||
DB::raw('
|
||||
(Select member_policies.status FROM member_policies WHERE member_policies.member_id = members.member_id LIMIT 1) AS status_polis
|
||||
'),
|
||||
DB::raw('
|
||||
(Select plans.code FROM member_plans
|
||||
LEFT JOIN plans ON plans.id = member_plans.plan_id
|
||||
WHERE member_plans.member_id = members.id AND plans.service_code = "'.$item->service_code.'" LIMIT 1) AS code_plan
|
||||
'),
|
||||
DB::raw('
|
||||
(Select plans.limit_rules FROM member_plans
|
||||
LEFT JOIN plans ON plans.id = member_plans.plan_id
|
||||
WHERE member_plans.member_id = members.id LIMIT 1) AS limit_rules
|
||||
'),
|
||||
DB::raw('
|
||||
"IDR" AS mata_uang
|
||||
'),
|
||||
'members.members_effective_date AS mulai',
|
||||
'members.members_expire_date AS akhir'
|
||||
)
|
||||
->first();
|
||||
|
||||
//Nama Karyawan
|
||||
$data['namaKaryawan'] = '';
|
||||
if($dataMember->principal_id)
|
||||
{
|
||||
$dataNamaKaryawan = DB::table('members')
|
||||
->where('members.member_id', '=', $dataMember->principal_id)
|
||||
->select('members.name')
|
||||
->first();
|
||||
$data['namaKaryawan'] = $dataNamaKaryawan->name;
|
||||
}
|
||||
else{
|
||||
$data['namaKaryawan'] = $dataMember->name;
|
||||
}
|
||||
|
||||
//Data Benefit
|
||||
$dataClaimLog = DB::table('request_log_benefits')
|
||||
->where('request_log_benefits.request_log_id', '=', $item->id)
|
||||
->select(
|
||||
'*',
|
||||
DB::raw('
|
||||
(Select benefits.description FROM benefits
|
||||
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS benfit
|
||||
'),
|
||||
DB::raw('
|
||||
(Select benefits.code FROM benefits
|
||||
WHERE benefits.id = request_log_benefits.benefit_id LIMIT 1) AS code
|
||||
')
|
||||
)
|
||||
->get();
|
||||
|
||||
$check_first_id = 0;
|
||||
if($check_first_id != $item->id)
|
||||
{
|
||||
$no += $item->no;
|
||||
}
|
||||
if (isset($dataClaimLog) && count($dataClaimLog) > 0)
|
||||
{
|
||||
foreach ($dataClaimLog as $item_benefit)
|
||||
{
|
||||
$rowData = [
|
||||
$check_first_id != $item->id ? $no : '',
|
||||
!empty($item->code) ? $item->code : '',
|
||||
!empty($dataRumahSakit->nama_rumahsakit) ? $dataRumahSakit->nama_rumahsakit : '',
|
||||
!empty($dataMember->member_id) ? $dataMember->member_id : '',
|
||||
!empty($dataMember->name) ? $dataMember->name : '',
|
||||
$data['namaKaryawan'],
|
||||
!empty($dataMember->code_plan) ? $dataMember->code_plan : '',
|
||||
'LinkSehat',
|
||||
!empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '',
|
||||
!empty($dataMember->no_polis) ? $dataMember->no_polis : '',
|
||||
!empty($item_benefit->code) ? $item_benefit->code : '',
|
||||
!empty($item_benefit->benfit) ? $item_benefit->benfit : '',
|
||||
!empty($item_benefit->amount_incurred) ? $item_benefit->amount_incurred : '',
|
||||
!empty($item_benefit->amount_approved) ? $item_benefit->amount_approved : '',
|
||||
!empty($item_benefit->amount_not_approved) ? $item_benefit->amount_not_approved : '',
|
||||
!empty($item_benefit->excess_paid) ? $item_benefit->excess_paid : '',
|
||||
!empty($item_benefit->keterangan) ? $item_benefit->keterangan : '',
|
||||
|
||||
];
|
||||
array_push($dataRow,$rowData);
|
||||
|
||||
$check_first_id = $item->id;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$rowData = [
|
||||
$check_first_id != $item->id ? $no : '',
|
||||
!empty($item->code) ? $item->code : '',
|
||||
!empty($dataRumahSakit->nama_rumahsakit) ? $dataRumahSakit->nama_rumahsakit : '',
|
||||
!empty($dataMember->member_id) ? $dataMember->member_id : '',
|
||||
!empty($dataMember->name) ? $dataMember->name : '',
|
||||
$data['namaKaryawan'],
|
||||
!empty($dataMember->code_plan) ? $dataMember->code_plan : '',
|
||||
'LinkSehat',
|
||||
!empty($dataMember->nama_perusahaan) ? $dataMember->nama_perusahaan : '',
|
||||
!empty($dataMember->no_polis) ? $dataMember->no_polis : '',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
'',
|
||||
|
||||
];
|
||||
array_push($dataRow,$rowData);
|
||||
|
||||
}
|
||||
}
|
||||
$style = (new StyleBuilder())
|
||||
//->setFontBold()
|
||||
// ->setFontSize(15)
|
||||
// ->setFontColor(Color::BLUE)
|
||||
// ->setShouldWrapText()
|
||||
->setCellAlignment(CellAlignment::LEFT)
|
||||
// ->setBackgroundColor(Color::YELLOW)
|
||||
->build();
|
||||
foreach ($dataRow as $rowData) {
|
||||
$row = WriterEntityFactory::createRowFromArray($rowData, $style);
|
||||
$writer->addRow($row);
|
||||
}
|
||||
}
|
||||
$writer->close();
|
||||
|
||||
return Helper::responseJson([
|
||||
'file_name' => 'Claim-Data-Corporate-'. date('Y-m-d'),
|
||||
"file_url" => url('files/Claim-Data-Corporate-'. date('Y-m-d').'.xlsx')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user