From 49e94c3fb50d66c36a313ee697cbeb5ff15e123e Mon Sep 17 00:00:00 2001 From: Dwi Swandhana Date: Sat, 9 May 2026 05:47:10 +0700 Subject: [PATCH] Fix mikro expertise auto-open and early warning target logic --- .../Http/Controllers/FrontpageController.php | 6 ++- htdocs/app/Livewire/GudangPos.php | 38 ++++++++++++++----- .../views/dokter/mikro-expertise.blade.php | 16 +++++--- .../views/livewire/gudang-pos.blade.php | 24 +++++++++--- 4 files changed, 62 insertions(+), 22 deletions(-) diff --git a/htdocs/app/Http/Controllers/FrontpageController.php b/htdocs/app/Http/Controllers/FrontpageController.php index 67434e5b..edb11f90 100644 --- a/htdocs/app/Http/Controllers/FrontpageController.php +++ b/htdocs/app/Http/Controllers/FrontpageController.php @@ -691,7 +691,7 @@ class FrontpageController extends Controller if (!Session::has('previlage')) { return redirect('/login'); } - $periksa = Periksa::select('id', 'poli_id', 'daftar')->find($periksaId); + $periksa = Periksa::select('id', 'poli_id', 'daftar', 'nofoto')->find($periksaId); if (!$periksa) { abort(404); } @@ -706,9 +706,11 @@ class FrontpageController extends Controller return view($this->mikroExpertiseViewName(), $this->buildMikroViewData($master, [ 'focusPeriksaId' => (string) $periksaId, + 'focusNoFoto' => (string) ($periksa->nofoto ?? ''), 'expertiseReturnUrl' => $returnUrl, 'openExpertiseOnLoad' => true, - 'initialListMode' => 'searchbydate', + 'initialListMode' => 'nofoto', + 'initialSearchValue' => (string) ($periksa->nofoto ?? ''), 'initialStartDate' => $periksaDate, 'initialEndDate' => $periksaDate, ])); diff --git a/htdocs/app/Livewire/GudangPos.php b/htdocs/app/Livewire/GudangPos.php index 4632d079..931592f2 100644 --- a/htdocs/app/Livewire/GudangPos.php +++ b/htdocs/app/Livewire/GudangPos.php @@ -6,7 +6,6 @@ use App\Services\SimbhpStockService; use App\SIMBHPJenis; use App\SIMBHPReport; use App\User; -use App\Ruangan; use Carbon\Carbon; use Livewire\Component; use Livewire\Attributes\On; @@ -18,7 +17,9 @@ class GudangPos extends Component use WithPagination; public string $tanggal = ''; - public ?string $penerimaId = null; + public string $namaRuangan = ''; + public string $penerimaId = ''; + public string $penerimaManual = ''; public string $scan = ''; public string $selectedKode = ''; @@ -36,7 +37,8 @@ class GudangPos extends Component public function mount(): void { $this->tanggal = date('Y-m-d'); - $this->penerimaId = User::orderBy('nama', 'ASC')->value('nama'); + $firstUserId = User::orderBy('nama', 'ASC')->value('id'); + $this->penerimaId = $firstUserId ? (string) $firstUserId : ''; } public function updatingSearch(): void @@ -183,7 +185,7 @@ class GudangPos extends Component return; } - if (!$this->penerimaId) { + if ($this->penerimaId === '') { $this->toast('error', 'Penerima wajib dipilih.'); return; } @@ -201,7 +203,26 @@ class GudangPos extends Component return; } - $penerima = $this->penerimaId; + $namaRuangan = trim((string) $this->namaRuangan); + if ($namaRuangan === '') { + $this->toast('error', 'Nama ruang wajib diisi.'); + return; + } + + if ($this->penerimaId === '__manual__') { + $penerima = trim((string) $this->penerimaManual); + if ($penerima === '') { + $this->toast('error', 'Nama penerima manual wajib diisi.'); + return; + } + } else { + $user = User::select('id', 'nama')->find((int) $this->penerimaId); + if (!$user) { + $this->toast('error', 'Penerima tidak ditemukan.'); + return; + } + $penerima = trim((string) ($user->nama ?? '')); + } $service = app(SimbhpStockService::class); @@ -253,7 +274,7 @@ class GudangPos extends Component ]; } - DB::transaction(function () use ($prepared, $date, $penerima) { + DB::transaction(function () use ($prepared, $date, $penerima, $namaRuangan) { foreach ($prepared as $row) { /** @var SIMBHPJenis $jenis */ $jenis = $row['jenis']; @@ -261,7 +282,7 @@ class GudangPos extends Component 'tanggal' => (int) $date->format('d'), 'bulan' => (int) $date->format('m'), 'tahun' => (int) $date->format('Y'), - 'deskripsi' => 'Diterima oleh ' . ($penerima ?? $penerimaId), + 'deskripsi' => 'Ruangan: ' . $namaRuangan . ' | Diterima oleh ' . ($penerima !== '' ? $penerima : 'Unknown'), 'pemasukan' => null, 'pengeluaran' => (int) $row['qty'], 'qty_base' => (int) $row['qty_base'], @@ -277,6 +298,7 @@ class GudangPos extends Component $this->cart = []; $this->qty = 1; $this->keterangan = ''; + $this->penerimaManual = ''; $this->toast('success', 'Barang keluar berhasil diproses.'); $this->dispatch('gudang-refresh'); $this->dispatch('gudangpos-close-modal'); @@ -322,7 +344,6 @@ class GudangPos extends Component $service = app(SimbhpStockService::class); $users = User::select('id', 'nama', 'previlage')->orderBy('nama', 'ASC')->get(); - $ruangans = Ruangan::select('id', 'ruangan')->orderBy('ruangan', 'ASC')->get(); $query = SIMBHPJenis::query()->orderBy('jenis', 'ASC'); $search = trim((string) $this->search); @@ -395,7 +416,6 @@ class GudangPos extends Component return view('livewire.gudang-pos', [ 'users' => $users, - 'ruangans' => $ruangans, 'products' => $products, 'stockMap' => $stockMap, 'latestExpiredMap' => $latestExpiredMap, diff --git a/htdocs/resources/views/dokter/mikro-expertise.blade.php b/htdocs/resources/views/dokter/mikro-expertise.blade.php index bc0f0a16..27c06675 100644 --- a/htdocs/resources/views/dokter/mikro-expertise.blade.php +++ b/htdocs/resources/views/dokter/mikro-expertise.blade.php @@ -4,9 +4,11 @@