This commit is contained in:
2025-01-23 15:32:06 +07:00
parent f75f8ddb51
commit 7e41f543ae

View File

@@ -84,69 +84,76 @@ class DoctorOnlineController extends Controller
public function export(Request $request) public function export(Request $request)
{ {
// Menyimpan tanggal mulai dan tanggal selesai dari request
$start_date = $request->input('start_date') ? $request->input('start_date') : 'all'; $start_date = $request->input('start_date') ? $request->input('start_date') : 'all';
$end_date = $request->input('end_date') ? $request->input('end_date') : 'all'; $end_date = $request->input('end_date') ? $request->input('end_date') : 'all';
// Membuat writer untuk file XLSX
$writer = WriterEntityFactory::createXLSXWriter(); $writer = WriterEntityFactory::createXLSXWriter();
$writer->openToFile(public_path('files/Report-Data-Rating-Dokter-'.$start_date.'-'.$end_date.'.xlsx'));
// Pastikan folder 'files' ada dan bisa ditulis
$filePath = public_path('files');
if (!is_dir($filePath)) {
mkdir($filePath, 0755, true); // Membuat folder jika belum ada
}
// Menyimpan file Excel ke folder yang sesuai
$fileName = 'Report-Data-Rating-Dokter-' . $start_date . '-' . $end_date . '.xlsx';
$writer->openToFile(public_path('files/' . $fileName));
// Header Excel
$header = [ $header = [
'No', 'No',
'Nama Dokter', 'Nama Dokter',
'Date', 'Date',
'Status', 'Status',
]; ];
$style = (new StyleBuilder())
->setFontBold()
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$headerRow = WriterEntityFactory::createRowFromArray($header, $style); // Styling untuk header (bold)
$headerStyle = (new StyleBuilder())
->setFontBold() // Menambahkan font bold hanya pada header
->setCellAlignment(CellAlignment::LEFT)
->build();
// Menambahkan header ke dalam file
$headerRow = WriterEntityFactory::createRowFromArray($header, $headerStyle);
$writer->addRow($headerRow); $writer->addRow($headerRow);
// ============================
$results = DB::connection('oldlms')->table('tx_users_online')
->leftJoin('tm_users', 'tx_users_online.nIDUser', '=', 'tm_users.nID')
->when($request->input('search'), function ($query, $search) {
$query->where(function ($query) use ($search) {
$query->orWhere('tm_users.sFirstname', 'like', "%" . $search . "%");
$query->orWhere('tm_users.sLastname', 'like', "%" . $search . "%");
});
})
->when($request->has('orderBy'), function ($query) use ($request) {
$orderBy = $request->orderBy;
$direction = $request->order ?? 'asc';
$query->orderBy($orderBy, $direction); // Query untuk mengambil data dari database
}) $results = DB::connection('oldlms')->table('tx_users_online')
->when($request->input('start_date') , function ($query, $start_date) { ->leftJoin('tm_users', 'tx_users_online.nIDUser', '=', 'tm_users.nID')
$query->where(function ($query) use ($start_date) { ->when($request->input('search'), function ($query, $search) {
$query->where('tx_users_online.sDate', '>=', $start_date. ' 00:00:00'); $query->where(function ($query) use ($search) {
}); $query->orWhere('tm_users.sFirstname', 'like', "%" . $search . "%");
}) $query->orWhere('tm_users.sLastname', 'like', "%" . $search . "%");
->when($request->input('end_date') , function ($query, $end_date) { });
$query->where(function ($query) use ($end_date) { })
$query->where('tx_users_online.sDate', '<=', $end_date. ' 23:59:59'); ->when($request->has('orderBy'), function ($query) use ($request) {
}); $orderBy = $request->orderBy;
}) $direction = $request->order ?? 'asc';
// ->when($request->input('provider') , function ($query, $provider) { $query->orderBy($orderBy, $direction);
// $query->where(function ($query) use ($provider) { })
// $query->where('request_logs.organization_id', '=', $provider); ->when($request->input('start_date'), function ($query, $start_date) {
// }); $query->where('tx_users_online.sDate', '>=', $start_date . ' 00:00:00');
// }) })
// ->where('files.fileable_type', '=', 'App\Models\RequestLog') ->when($request->input('end_date'), function ($query, $end_date) {
// ->where('request_logs.final_log', '=', '1') $query->where('tx_users_online.sDate', '<=', $end_date . ' 23:59:59');
// ->where('request_logs.status_final_log', '=', 'approved') })
->select( ->select(
DB::connection('oldlms')->raw("CONCAT('dr. ', tm_users.sFirstName, ' ', IFNULL(tm_users.sMiddleName, ''), ' ', IFNULL(tm_users.sLastName, '')) as nama_dokter"), DB::connection('oldlms')->raw("CONCAT('dr. ', tm_users.sFirstName, ' ', IFNULL(tm_users.sMiddleName, ''), ' ', IFNULL(tm_users.sLastName, '')) as nama_dokter"),
'tx_users_online.sStatus', 'tx_users_online.sStatus',
'tx_users_online.sDate' 'tx_users_online.sDate'
) )
->get(); ->get();
$no=0;
foreach($results as $item) // Styling untuk baris data (tidak ada bold)
{ $dataStyle = (new StyleBuilder())
->setCellAlignment(CellAlignment::LEFT)
->build();
// Menambahkan data baris ke dalam file
$no = 0;
foreach ($results as $item) {
$no++; $no++;
$rowData = [ $rowData = [
$no, $no,
@@ -154,43 +161,23 @@ class DoctorOnlineController extends Controller
$item->sDate, $item->sDate,
$item->sStatus $item->sStatus
]; ];
$style = (new StyleBuilder())
//->setFontBold() $row = WriterEntityFactory::createRowFromArray($rowData, $dataStyle);
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$row = WriterEntityFactory::createRowFromArray($rowData, $style);
$writer->addRow($row); $writer->addRow($row);
} }
$footer = [
'',
'',
'',
'',
];
$style = (new StyleBuilder())
->setFontBold()
// ->setFontSize(15)
// ->setFontColor(Color::BLUE)
// ->setShouldWrapText()
->setCellAlignment(CellAlignment::LEFT)
// ->setBackgroundColor(Color::YELLOW)
->build();
$footerRow = WriterEntityFactory::createRowFromArray($footer, $style);
$writer->addRow($footerRow);
// Menutup writer setelah selesai menulis file
$writer->close(); $writer->close();
// Mengirimkan response JSON
return Helper::responseJson([ return Helper::responseJson([
'file_name' => 'Report-Data-Dokter-Online'. $start_date.'-'.$end_date, 'file_name' => $fileName,
"file_url" => url('files/Report-Data-Dokter-Online-'. $start_date.'-'.$end_date.'.xlsx') 'file_url' => url('files/' . $fileName),
]); ]);
} }
/** /**
* Show the form for creating a new resource. * Show the form for creating a new resource.
* @return Renderable * @return Renderable