diff --git a/app/Http/Controllers/Informasi/InformasiKunjunganController.php b/app/Http/Controllers/Informasi/InformasiKunjunganController.php index 46a1044e0..b94c48e6c 100644 --- a/app/Http/Controllers/Informasi/InformasiKunjunganController.php +++ b/app/Http/Controllers/Informasi/InformasiKunjunganController.php @@ -2,7 +2,9 @@ namespace App\Http\Controllers\Informasi; +use Carbon\Carbon; use Illuminate\Http\Request; +use App\Models\MasterRuanganModel; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; @@ -11,35 +13,40 @@ class InformasiKunjunganController extends Controller public function index() { - // Get the search term from the request - $searchSubject = request('search') ? strtolower(request('search')) : null; - - $data = $this->getKunjungan($searchSubject); + $data = $this->getKunjungan(); $dataArray = $data->toArray(); // Get weekly and monthly data - $kunjunganMingguan = $this->getWeeklyKunjungan($searchSubject); + $kunjunganMingguan = $this->getWeeklyKunjungan(); $dataKunjunganMingguan = $kunjunganMingguan->toArray(); - // $perPage = 5; // Items per page - // $kunjunganBulanan = $this->getMonthlyKunjungan($perPage); - - $kunjunganBulanan = $this->getMonthlyKunjungan($searchSubject); + $kunjunganBulanan = $this->getMonthlyKunjungan(); $dataKunjunganBulanan = $kunjunganBulanan->toArray(); + $kunjunganTahunan = $this->getYearlyKunjungan(); + $dataKunjunganTahunan = $kunjunganTahunan->toArray(); + + $ruangan = MasterRuanganModel::where('JENIS', 5) + ->whereIn('JENIS_KUNJUNGAN', [1]) + ->where('STATUS', 1) + ->orderBy('DESKRIPSI') + ->get(); + // Return Inertia view with paginated data return inertia("Informasi/Kunjungan/Index", [ + 'ruangan' => $ruangan, 'harian' => [ 'data' => $dataArray['data'], 'links' => $dataArray['links'], ], 'mingguan' => $dataKunjunganMingguan, 'bulanan' => $dataKunjunganBulanan, + 'tahunan' => $dataKunjunganTahunan, 'queryParams' => request()->all() ]); } - private function getKunjungan($searchSubject = null) + private function getKunjungan() { // Start building the query using the query builder $query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') @@ -55,19 +62,12 @@ private function getKunjungan($searchSubject = null) ) ->groupBy('kunjungan.TANGGAL', 'kunjungan.IDSUBUNIT', 'kunjungan.SUBUNIT'); - // Add search filter if provided - if ($searchSubject) { - $query->where(function ($q) use ($searchSubject) { - $q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']); - }); - } - // Return the paginated results return $query->orderByDesc('kunjungan.TANGGAL')->orderBy('kunjungan.SUBUNIT') ->paginate(5)->appends(request()->query()); } - private function getWeeklyKunjungan($searchSubject = null) + private function getWeeklyKunjungan() { // Start building the query using the query builder $query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') @@ -89,13 +89,6 @@ private function getWeeklyKunjungan($searchSubject = null) 'kunjungan.SUBUNIT' ); - // Add search filter if provided - if ($searchSubject) { - $query->where(function ($q) use ($searchSubject) { - $q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']); - }); - } - // Return the paginated results return $query->orderBy('tahun', 'desc') ->orderBy('minggu', 'desc') @@ -103,7 +96,7 @@ private function getWeeklyKunjungan($searchSubject = null) ->paginate(5)->appends(request()->query()); } - private function getMonthlyKunjungan($searchSubject = null) + private function getMonthlyKunjungan() { // Start building the query using the query builder $query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') @@ -125,17 +118,158 @@ private function getMonthlyKunjungan($searchSubject = null) 'kunjungan.SUBUNIT' ); - // Add search filter if provided - if ($searchSubject) { - $query->where(function ($q) use ($searchSubject) { - $q->whereRaw('LOWER(kunjungan.SUBUNIT) LIKE ?', ['%' . $searchSubject . '%']); - }); - } - // Return the paginated results return $query->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc') ->orderBy(DB::raw('MONTH(kunjungan.TANGGAL)'), 'desc') ->orderBy('kunjungan.SUBUNIT') ->paginate(5)->appends(request()->query()); } + + private function getYearlyKunjungan() + { + // Start building the query using the query builder + $query = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') + ->select( + 'kunjungan.IDSUBUNIT as idSubUnit', + DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'), + DB::raw('MIN(kunjungan.INSTALASI) as instalasi'), + DB::raw('MIN(kunjungan.UNIT) as unit'), + DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'), + DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'), + DB::raw('YEAR(kunjungan.TANGGAL) as tahun'), + DB::raw('SUM(kunjungan.VALUE) as jumlah') + ) + ->groupBy( + 'kunjungan.IDSUBUNIT', + DB::raw('YEAR(kunjungan.TANGGAL)'), + 'kunjungan.SUBUNIT' + ); + + // Return the paginated results + return $query->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc') + ->orderBy('kunjungan.SUBUNIT') + ->paginate(5)->appends(request()->query()); + } + + public function print(Request $request) + { + // Validasi input + $request->validate([ + 'ruangan' => 'nullable|integer', + 'dari_tanggal' => 'required|date', + 'sampai_tanggal' => 'required|date|after_or_equal:dari_tanggal', + ]); + + // Ambil nilai input + $ruangan = $request->input('ruangan'); + //dd($ruangan); + $dariTanggal = Carbon::parse($request->input('dari_tanggal'))->format('Y-m-d H:i:s'); + $sampaiTanggal = Carbon::parse($request->input('sampai_tanggal'))->endOfDay()->format('Y-m-d H:i:s'); + + // Variable default untuk label + $namaRuangan = $ruangan ? MasterRuanganModel::where('ID', $ruangan)->value('DESKRIPSI') : 'SEMUA RUANGAN'; + + // Query Harian + $harian = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') + ->select( + 'kunjungan.TANGGAL as tanggal', + 'kunjungan.IDSUBUNIT as idSubUnit', + DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'), + DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'), + DB::raw('SUM(kunjungan.VALUE) as jumlah'), + DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated') + ) + ->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal]) + ->when($ruangan, fn($harian) => $harian->where('kunjungan.IDSUBUNIT', $ruangan)) + ->groupBy('kunjungan.TANGGAL', 'kunjungan.IDSUBUNIT', 'kunjungan.SUBUNIT') + ->orderByDesc('kunjungan.TANGGAL') + ->orderBy('kunjungan.SUBUNIT') + ->get(); + + // Query Mingguan + $mingguan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') + ->select( + 'kunjungan.IDSUBUNIT as idSubUnit', + DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'), + DB::raw('MIN(kunjungan.INSTALASI) as instalasi'), + DB::raw('MIN(kunjungan.UNIT) as unit'), + DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'), + DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'), + DB::raw('YEAR(kunjungan.TANGGAL) as tahun'), + DB::raw('WEEK(kunjungan.TANGGAL, 1) as minggu'), + DB::raw('SUM(kunjungan.VALUE) as jumlah') + ) + ->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal]) + ->when($ruangan, fn($mingguan) => $mingguan->where('kunjungan.IDSUBUNIT', $ruangan)) + ->groupBy( + 'kunjungan.IDSUBUNIT', + DB::raw('YEAR(kunjungan.TANGGAL)'), + DB::raw('WEEK(kunjungan.TANGGAL, 1)'), + 'kunjungan.SUBUNIT' + ) + ->orderBy('tahun', 'desc') + ->orderBy('minggu', 'desc') + ->orderBy('kunjungan.SUBUNIT') + ->get(); + + // Query Bulanan + $bulanan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') + ->select( + 'kunjungan.IDSUBUNIT as idSubUnit', + DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'), + DB::raw('MIN(kunjungan.INSTALASI) as instalasi'), + DB::raw('MIN(kunjungan.UNIT) as unit'), + DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'), + DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'), + DB::raw('YEAR(kunjungan.TANGGAL) as tahun'), + DB::raw('MONTH(kunjungan.TANGGAL) as bulan'), + DB::raw('SUM(kunjungan.VALUE) as jumlah') + ) + ->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal]) + ->when($ruangan, fn($bulanan) => $bulanan->where('kunjungan.IDSUBUNIT', $ruangan)) + ->groupBy( + 'kunjungan.IDSUBUNIT', + DB::raw('YEAR(kunjungan.TANGGAL)'), + DB::raw('MONTH(kunjungan.TANGGAL)'), + 'kunjungan.SUBUNIT' + ) + ->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc') + ->orderBy(DB::raw('MONTH(kunjungan.TANGGAL)'), 'desc') + ->orderBy('kunjungan.SUBUNIT') + ->get(); + + // Query Tahunan + $tahunan = DB::connection('mysql12')->table('informasi.kunjungan as kunjungan') + ->select( + 'kunjungan.IDSUBUNIT as idSubUnit', + DB::raw('MIN(kunjungan.DESKRIPSI) as jenisKunjungan'), + DB::raw('MIN(kunjungan.INSTALASI) as instalasi'), + DB::raw('MIN(kunjungan.UNIT) as unit'), + DB::raw('MIN(kunjungan.SUBUNIT) as subUnit'), + DB::raw('MAX(kunjungan.LASTUPDATED) as lastUpdated'), + DB::raw('YEAR(kunjungan.TANGGAL) as tahun'), + DB::raw('SUM(kunjungan.VALUE) as jumlah') + ) + ->whereBetween('kunjungan.TANGGAL', [$dariTanggal, $sampaiTanggal]) + ->when($ruangan, fn($tahunan) => $tahunan->where('kunjungan.IDSUBUNIT', $ruangan)) + ->groupBy( + 'kunjungan.IDSUBUNIT', + DB::raw('YEAR(kunjungan.TANGGAL)'), + 'kunjungan.SUBUNIT' + ) + ->orderBy(DB::raw('YEAR(kunjungan.TANGGAL)'), 'desc') + ->orderBy('kunjungan.SUBUNIT') + ->get(); + + // Kirim data ke frontend menggunakan Inertia + return inertia("Informasi/Kunjungan/Print", [ + 'harian' => $harian, + 'mingguan' => $mingguan, + 'bulanan' => $bulanan, + 'tahunan' => $tahunan, + 'dariTanggal' => $dariTanggal, + 'sampaiTanggal' => $sampaiTanggal, + 'namaRuangan' => $namaRuangan, + ]); + } } \ No newline at end of file diff --git a/app/Http/Controllers/Informasi/InformasiPengunjungController.php b/app/Http/Controllers/Informasi/InformasiPengunjungController.php index 06a04f3c1..31b2c388e 100644 --- a/app/Http/Controllers/Informasi/InformasiPengunjungController.php +++ b/app/Http/Controllers/Informasi/InformasiPengunjungController.php @@ -11,22 +11,22 @@ class InformasiPengunjungController extends Controller public function index() { $queryPengunjung = $this->getRajal(); - $dataPengunjung = $queryPengunjung->orderByDesc('pengunjung.TANGGAL')->paginate(7)->appends(request()->query()); + $dataPengunjung = $queryPengunjung->orderByDesc('pengunjung.TANGGAL')->paginate(5)->appends(request()->query()); $dataPengunjung = $dataPengunjung->toArray(); $queryRanap = $this->getRanap(); - $dataRanap = $queryRanap->orderByDesc('pasienRanap.TANGGAL')->paginate(7)->appends(request()->query()); + $dataRanap = $queryRanap->orderByDesc('pasienRanap.TANGGAL')->paginate(5)->appends(request()->query()); $dataRanap = $dataRanap->toArray(); $rajalMingguan = $this->getWeeklyRajal(); - $dataRajalMingguan = $rajalMingguan->paginate(4)->appends(request()->query()); + $dataRajalMingguan = $rajalMingguan->paginate(5)->appends(request()->query()); $dataRajalMingguan = $dataRajalMingguan->toArray(); $ranapMingguan = $this->getWeeklyRanap(); - $dataRanapMingguan = $ranapMingguan->paginate(4)->appends(request()->query()); + $dataRanapMingguan = $ranapMingguan->paginate(5)->appends(request()->query()); $dataRanapMingguan = $dataRanapMingguan->toArray(); - $perPage = 12; // Items per page + $perPage = 5; // Items per page $rajalBulanan = $this->getMonthlyRajal($perPage); $ranapBulanan = $this->getMonthlyRanap($perPage); @@ -152,4 +152,4 @@ protected function getMonthlyRanap($perPage) ->orderBy(DB::raw('MONTH(pasienRanap.TANGGAL)'), 'desc') ->paginate($perPage); } -} +} \ No newline at end of file diff --git a/resources/js/Components/NavigationInformasi.jsx b/resources/js/Components/NavigationInformasi.jsx index eb14b70e5..d801dfc08 100644 --- a/resources/js/Components/NavigationInformasi.jsx +++ b/resources/js/Components/NavigationInformasi.jsx @@ -55,7 +55,7 @@ export default function NavigationLogs() { active={route().current('informasiKunjungan.index')} className="flex justify-between items-center px-4 py-2 mb-1 w-full" > - Kunjungan Rawat Jalan + Rawat Jalan
Statistik - Kunjungan Rawat Jalan + Rawat Jalan Pengunjung Penunjang
diff --git a/resources/js/Pages/Informasi/Kunjungan/Bulanan.jsx b/resources/js/Pages/Informasi/Kunjungan/Bulanan.jsx index 1ad4e1709..0a4dfaf32 100644 --- a/resources/js/Pages/Informasi/Kunjungan/Bulanan.jsx +++ b/resources/js/Pages/Informasi/Kunjungan/Bulanan.jsx @@ -10,13 +10,11 @@ export default function Bulanan({ bulanan }) { const headers = [ { name: "TAHUN", className: "w-[9%]" }, - { name: "BULAN", className: "w-[10%]" }, - { name: "JENIS KUNJUNGAN", className: "w-[14%]" }, - { name: "INSTALASI" }, - { name: "UNIT", className: "w-[10%]" }, + { name: "BULAN" }, + { name: "JENIS KUNJUNGAN" }, { name: "SUB UNIT" }, { name: "KUNJUNGAN", className: "text-right w-[10%]" }, - { name: "LAST UPDATED", className: "w-[12%]" }, + { name: "LAST UPDATED" }, ]; // Array nama bulan @@ -27,7 +25,7 @@ export default function Bulanan({ bulanan }) { return (
-
+
@@ -52,8 +50,6 @@ export default function Bulanan({ bulanan }) { {data.tahun} {bulanNames[data.bulan - 1]} {data.jenisKunjungan} - {data.instalasi} - {data.unit} {data.subUnit} {data.jumlah} {data.lastUpdated} diff --git a/resources/js/Pages/Informasi/Kunjungan/Cetak.jsx b/resources/js/Pages/Informasi/Kunjungan/Cetak.jsx new file mode 100644 index 000000000..31d44f1fb --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/Cetak.jsx @@ -0,0 +1,118 @@ +import React, { useEffect } from "react"; +import { useForm } from "@inertiajs/react"; +import InputLabel from "@/Components/InputLabel"; +import TextInput from "@/Components/TextInput"; +import SelectTwoInput from "@/Components/SelectTwoInput"; + +export default function Cetak({ + ruangan, +}) { + + const { data, setData } = useForm({ + dari_tanggal: '', + sampai_tanggal: '' + }); + + useEffect(() => { + const currentDate = new Date(); + const currentYear = currentDate.getFullYear(); + const currentMonth = (currentDate.getMonth() + 1).toString().padStart(2, '0'); + const firstDayOfMonth = `${currentYear}-${currentMonth}-01`; + const formattedCurrentDate = currentDate.toISOString().split("T")[0]; + + setData(prevData => ({ + ...prevData, + dari_tanggal: firstDayOfMonth, + sampai_tanggal: formattedCurrentDate + })); + }, []); + + const onRuanganChange = (selectedOption) => { + setData(prevData => ({ ...prevData, ruangan: selectedOption.value })); + }; + + const onSubmit = (e) => { + e.preventDefault(); + + // Filter out empty values + const filteredData = Object.fromEntries(Object.entries(data).filter(([_, v]) => v !== '')); + + const queryString = new URLSearchParams(filteredData).toString(); + window.open(route("informasiKunjungan.print") + "?" + queryString, "_blank"); + }; + + return ( +
+
+
+
+

Cetak Kunjungan Rawat Jalan

+ +
+
+ + ({ + value: item.ID, + label: item.ID + '. ' + item.DESKRIPSI, + })) : []} + onChange={onRuanganChange} + isClearable={true} + /> +
+
+ + setData(prevData => ({ ...prevData, dari_tanggal: e.target.value }))} + /> +
+ +
+ + setData(prevData => ({ ...prevData, sampai_tanggal: e.target.value }))} + /> +
+
+ +
+ +
+
+
+
+
+ ) +} + diff --git a/resources/js/Pages/Informasi/Kunjungan/Harian.jsx b/resources/js/Pages/Informasi/Kunjungan/Harian.jsx index c093930fd..4d78def8a 100644 --- a/resources/js/Pages/Informasi/Kunjungan/Harian.jsx +++ b/resources/js/Pages/Informasi/Kunjungan/Harian.jsx @@ -13,12 +13,10 @@ export default function Harian({ harian, queryParams = {} }) { const headers = [ { name: "TANGGAL", className: "w-[9%]" }, - { name: "JENIS KUNJUNGAN", className: "w-[14%]" }, - { name: "INSTALASI" }, - { name: "UNIT", className: "w-[14%]" }, + { name: "JENIS KUNJUNGAN" }, { name: "SUB UNIT" }, { name: "KUNJUNGAN", className: "text-right w-[10%]" }, - { name: "LAST UPDATED", className: "w-[12%]" }, + { name: "LAST UPDATED" }, ]; // Function to handle search input changes @@ -50,7 +48,7 @@ export default function Harian({ harian, queryParams = {} }) { return (
-
+
@@ -59,21 +57,7 @@ export default function Harian({ harian, queryParams = {} }) { - - - - - + {headers.map((header, index) => ( @@ -89,8 +73,6 @@ export default function Harian({ harian, queryParams = {} }) { {formatDate(data.tanggal)} {data.jenisKunjungan} - {data.instalasi} - {data.unit} {data.subUnit} {data.jumlah} {data.lastUpdated} diff --git a/resources/js/Pages/Informasi/Kunjungan/Index.jsx b/resources/js/Pages/Informasi/Kunjungan/Index.jsx index dc7ddbbe7..c77aea465 100644 --- a/resources/js/Pages/Informasi/Kunjungan/Index.jsx +++ b/resources/js/Pages/Informasi/Kunjungan/Index.jsx @@ -4,8 +4,17 @@ import { Head } from "@inertiajs/react"; import Harian from './Harian'; import Mingguan from './Mingguan'; import Bulanan from './Bulanan'; +import Tahunan from './Tahunan'; +import Cetak from './Cetak'; -export default function Index({ auth, harian, queryParams, mingguan, bulanan }) { +export default function Index({ + auth, + harian, + mingguan, + bulanan, + tahunan, + ruangan, +}) { return ( - - - - - +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+ +
); } diff --git a/resources/js/Pages/Informasi/Kunjungan/Mingguan.jsx b/resources/js/Pages/Informasi/Kunjungan/Mingguan.jsx index 15c4d36c0..e55fc876b 100644 --- a/resources/js/Pages/Informasi/Kunjungan/Mingguan.jsx +++ b/resources/js/Pages/Informasi/Kunjungan/Mingguan.jsx @@ -11,17 +11,15 @@ export default function Mingguan({ mingguan }) { const headers = [ { name: "TAHUN", className: "w-[9%]" }, { name: "MINGGU KE", className: "w-[10%]" }, - { name: "JENIS KUNJUNGAN", className: "w-[14%]" }, - { name: "INSTALASI" }, - { name: "UNIT", className: "w-[10%]" }, + { name: "JENIS KUNJUNGAN" }, { name: "SUB UNIT" }, { name: "KUNJUNGAN", className: "text-right w-[10%]" }, - { name: "LAST UPDATED", className: "w-[12%]" }, + { name: "LAST UPDATED" }, ]; return (
-
+
@@ -46,8 +44,6 @@ export default function Mingguan({ mingguan }) { {data.tahun} {data.minggu} {data.jenisKunjungan} - {data.instalasi} - {data.unit} {data.subUnit} {data.jumlah} {data.lastUpdated} diff --git a/resources/js/Pages/Informasi/Kunjungan/Print.jsx b/resources/js/Pages/Informasi/Kunjungan/Print.jsx new file mode 100644 index 000000000..5aa55e849 --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/Print.jsx @@ -0,0 +1,90 @@ +import React, { useEffect } from 'react'; +import { Head } from "@inertiajs/react"; +import { formatDate } from '@/utils/formatDate'; +import PrintHarian from './PrintHarian'; +import PrintMingguan from './PrintMingguan'; +import PrintBulanan from './PrintBulanan'; +import PrintTahunan from './PrintTahunan'; + +export default function Print({ + harian, + mingguan, + bulanan, + tahunan, + dariTanggal, + sampaiTanggal, + namaRuangan, +}) { + + useEffect(() => { + import('@/../../resources/css/print.css'); + }, []); + + // Periksa apakah dariTanggal sama dengan sampaiTanggal + const isSingleDay = new Date(dariTanggal).toLocaleDateString() === new Date(sampaiTanggal).toLocaleDateString(); + + return ( +
+ + +
+
+
+
+

+ INFORMASI KUNJUNGAN RAWAT JALAN +

+

+ RUANGAN LAYANAN : {namaRuangan} +

+

+ {new Date(dariTanggal).toLocaleDateString() === new Date(sampaiTanggal).toLocaleDateString() + ? `Tanggal : ${formatDate(sampaiTanggal)}` + : `Selang Tanggal : ${formatDate(dariTanggal)} s.d ${formatDate(sampaiTanggal)}`} +

+ {/* Tampilkan hanya PrintHarian jika dariTanggal === sampaiTanggal */} + {isSingleDay ? ( + + ) : ( + <> +
+
+ +
+
+ + + + + +
+
+ + )} + +
+
+
+
+
+

© 2024 - {new Date().getFullYear()} Hidayat - Tim IT RSUD Dr. M. M. Dunda Limboto.

+
+
+
+
+ ); +} diff --git a/resources/js/Pages/Informasi/Kunjungan/PrintBulanan.jsx b/resources/js/Pages/Informasi/Kunjungan/PrintBulanan.jsx new file mode 100644 index 000000000..bf952a063 --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/PrintBulanan.jsx @@ -0,0 +1,56 @@ +import React from 'react'; + +export default function PrintBulanan({ + bulanan, +}) { + + const bulanNames = [ + "Januari", "Februari", "Maret", "April", "Mei", "Juni", + "Juli", "Agustus", "September", "Oktober", "November", "Desember" + ]; + + return ( +
+

+ BULANAN +

+
-
- onInputChange('search', e)} - onKeyPress={e => onKeyPress('search', e)} - /> -
-
+ + + + + + + + + + + + {bulanan.map((item, key) => ( + + + + + + + + + ))} + +
TAHUNBULANJENIS KUNJUNGANSUB UNITJUMLAHTANGGAL UPDATE
+ {item.tahun} + + {bulanNames[item.bulan - 1]} + + {item.jenisKunjungan} + + {item.subUnit} + + {item.jumlah} + + {item.lastUpdated} +
+
+ ); +} + diff --git a/resources/js/Pages/Informasi/Kunjungan/PrintHarian.jsx b/resources/js/Pages/Informasi/Kunjungan/PrintHarian.jsx new file mode 100644 index 000000000..85d5519a6 --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/PrintHarian.jsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { formatDate } from '@/utils/formatDate'; + +export default function PrintHarian({ + harian, +}) { + + return ( +
+

+ HARIAN +

+ + + + + + + + + + + + {harian.map((item, key) => ( + + + + + + + + ))} + +
TANGGALJENIS KUNJUNGANSUB UNITJUMLAHTANGGAL UPDATE
+ {formatDate(item.tanggal)} + + {item.jenisKunjungan} + + {item.subUnit} + + {item.jumlah} + + {item.lastUpdated} +
+
+ ); +} + diff --git a/resources/js/Pages/Informasi/Kunjungan/PrintMingguan.jsx b/resources/js/Pages/Informasi/Kunjungan/PrintMingguan.jsx new file mode 100644 index 000000000..d0d70400e --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/PrintMingguan.jsx @@ -0,0 +1,52 @@ +import React from 'react'; + +export default function PrintMingguan({ + mingguan, +}) { + + + return ( +
+

+ MINGGUAN +

+ + + + + + + + + + + + + {mingguan.map((item, key) => ( + + + + + + + + + ))} + +
TAHUNMINGGUJENIS KUNJUNGANSUB UNITJUMLAHTANGGAL UPDATE
+ {item.tahun} + + {item.minggu} + + {item.jenisKunjungan} + + {item.subUnit} + + {item.jumlah} + + {item.lastUpdated} +
+
+ ); +} + diff --git a/resources/js/Pages/Informasi/Kunjungan/PrintTahunan.jsx b/resources/js/Pages/Informasi/Kunjungan/PrintTahunan.jsx new file mode 100644 index 000000000..b368a1f7a --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/PrintTahunan.jsx @@ -0,0 +1,48 @@ +import React from 'react'; + +export default function PrintTahunan({ + tahunan, +}) { + + + return ( +
+

+ TAHUNAN +

+ + + + + + + + + + + + {tahunan.map((item, key) => ( + + + + + + + + ))} + +
TAHUNJENIS KUNJUNGANSUB UNITJUMLAHTANGGAL UPDATE
+ {item.tahun} + + {item.jenisKunjungan} + + {item.subUnit} + + {item.jumlah} + + {item.lastUpdated} +
+
+ ); +} + diff --git a/resources/js/Pages/Informasi/Kunjungan/Tahunan.jsx b/resources/js/Pages/Informasi/Kunjungan/Tahunan.jsx new file mode 100644 index 000000000..aa82e4996 --- /dev/null +++ b/resources/js/Pages/Informasi/Kunjungan/Tahunan.jsx @@ -0,0 +1,64 @@ +import React, { useState } from 'react'; +import Pagination from "@/Components/Pagination"; +import Table from "@/Components/Table"; +import TableHeader from "@/Components/TableHeader"; +import TableHeaderCell from "@/Components/TableHeaderCell"; +import TableRow from "@/Components/TableRow"; +import TableCell from "@/Components/TableCell"; + +export default function Tahunan({ tahunan }) { + + const headers = [ + { name: "TAHUN", className: "w-[9%]" }, + { name: "JENIS KUNJUNGAN" }, + { name: "SUB UNIT" }, + { name: "KUNJUNGAN", className: "text-right w-[10%]" }, + { name: "LAST UPDATED" }, + ]; + + return ( +
+
+
+
+
+

+ Kunjungan Rawat Jalan Tahunan +

+ + + + + {headers.map((header, index) => ( + + {header.name} + + ))} + + + + {tahunan.data.length > 0 ? ( + tahunan.data.map((data, index) => ( + + {data.tahun} + {data.jenisKunjungan} + {data.subUnit} + {data.jumlah} + {data.lastUpdated} + + )) + ) : ( + + + + )} + +
Tidak ada data yang dapat ditampilkan
+ +
+
+
+
+
+ ); +} diff --git a/resources/js/Pages/Informasi/StatistikKunjungan/PrintHarian.jsx b/resources/js/Pages/Informasi/StatistikKunjungan/PrintHarian.jsx index e6c6fc37b..50e0eaedc 100644 --- a/resources/js/Pages/Informasi/StatistikKunjungan/PrintHarian.jsx +++ b/resources/js/Pages/Informasi/StatistikKunjungan/PrintHarian.jsx @@ -4,8 +4,6 @@ import { formatDate } from '@/utils/formatDate'; export default function PrintHarian({ kunjunganHarian, rujukanHarian, - dariTanggal, - sampaiTanggal }) { return ( diff --git a/routes/web.php b/routes/web.php index e5de9ab42..5d46c3dd7 100755 --- a/routes/web.php +++ b/routes/web.php @@ -527,6 +527,7 @@ Route::get('statistikKunjungan', [StatistikKunjunganController::class, 'index'])->name('statistikKunjungan.index'); Route::get('/statistikKunjungan-print', [StatistikKunjunganController::class, 'print'])->name('statistikKunjungan.print'); Route::get('kunjungan', [InformasiKunjunganController::class, 'index'])->name('informasiKunjungan.index'); + Route::get('/kunjungan-print', [InformasiKunjunganController::class, 'print'])->name('informasiKunjungan.print'); Route::get('pengunjung', [InformasiPengunjungController::class, 'index'])->name('informasiPengunjung.index'); Route::get('penunjang', [InformasiPenunjangController::class, 'index'])->name('informasiPenunjang.index'); });