Update Export Excel Alrm Center

This commit is contained in:
ivan-sim
2024-01-16 16:21:36 +07:00
parent 9c3e44f625
commit d90abffedf
4 changed files with 242 additions and 2 deletions

View File

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