where('nID', $id); } $doctorRatings = $query->with([ 'user' => function ($query) { $query->select('nID', 'sFirstName'); // Select only necessary columns } ]) ->select('nIDUser', 'sDate', 'sStatus') ->get(); // $prescriptions->toArray(); // dd($prescriptions); return response()->json($doctorRatings); // return response()->json(Helper::paginateResources(LivechatResource::collection($livechat))); } public function getData(Request $request) { $limit = $request->has('per_page') ? $request->input('per_page') : 50; $results = DB::connection('oldlms')->table('tx_users_online') ->leftJoin('tm_users', 'tx_users_online.nIDUser', '=', 'tm_users.nID') ->leftJoin('tm_dokter', 'tx_users_online.nIDUser', '=', 'tm_dokter.nIDUser') ->when($request->input('search'), function ($query, $search) { $query->where(function ($query) use ($search) { $query->orWhere('tm_users.sFirstname', 'like', "%" . $search . "%"); $query->orWhere('tx_users_online.sStatus', 'like', "%" . $search . "%"); }); }) ->when($request->has('orderBy'), function ($query) use ($request) { $orderBy = $request->orderBy; $direction = $request->order ?? 'asc'; $query->orderBy($orderBy, $direction); }) ->when($request->input('start_date') , function ($query, $start_date) { $query->where(function ($query) use ($start_date) { $query->where('tx_users_online.sDate', '>=', $start_date. ' 00:00:00'); }); }) ->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'); }); }) ->select( 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.sDate' ) ->paginate($limit); return response()->json(Helper::paginateResources($results)); } public function export(Request $request) { // Menyimpan tanggal mulai dan tanggal selesai dari request $start_date = $request->input('start_date') ? $request->input('start_date') : 'all'; $end_date = $request->input('end_date') ? $request->input('end_date') : 'all'; // Membuat writer untuk file XLSX $writer = WriterEntityFactory::createXLSXWriter(); // 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 = [ 'No', 'Nama Dokter', 'Date', 'Status', ]; // 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); // Query untuk mengambil data dari database $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); }) ->when($request->input('start_date'), function ($query, $start_date) { $query->where('tx_users_online.sDate', '>=', $start_date . ' 00:00:00'); }) ->when($request->input('end_date'), function ($query, $end_date) { $query->where('tx_users_online.sDate', '<=', $end_date . ' 23:59:59'); }) ->select( 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.sDate' ) ->get(); // 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++; $rowData = [ $no, $item->nama_dokter, $item->sDate, $item->sStatus ]; $row = WriterEntityFactory::createRowFromArray($rowData, $dataStyle); $writer->addRow($row); } // Menutup writer setelah selesai menulis file $writer->close(); // Mengirimkan response JSON return Helper::responseJson([ 'file_name' => $fileName, 'file_url' => url('files/' . $fileName), ]); } /** * Show the form for creating a new resource. * @return Renderable */ public function create() { return view('internal::create'); } /** * Store a newly created resource in storage. * @param Request $request * @return Renderable */ public function store(Request $request) { } /** * Show the specified resource. * @param int $id * @return Renderable */ public function show($id) { } /** * Show the form for editing the specified resource. * @param int $id * @return Renderable */ public function edit($id) { return view('internal::edit'); } /** * Update the specified resource in storage. * @param Request $request * @param int $id * @return Renderable */ public function update(Request $request, $id) { // } /** * Remove the specified resource from storage. * @param int $id * @return Renderable */ public function destroy($id) { // } }