billing-rsabhk/app/Repositories/MsPasienRepository.php
2025-04-27 18:17:42 +07:00

66 lines
1.5 KiB
PHP

<?php
namespace App\Repositories;
use App\Models\MsPasien;
use App\Interfaces\MsPasienInterface;
use Illuminate\Support\Facades\Storage;
use Illuminate\Database\Eloquent\ModelNotFoundException;
class MsPasienRepository implements MsPasienInterface
{
private $msPasien;
public function __construct(MsPasien $msPasien)
{
$this->msPasien = $msPasien;
}
private function generateMrPasien()
{
$lastPasien = $this->msPasien->orderBy('created_at', 'desc')->first();
if (!$lastPasien || !$lastPasien->mr_pasien) {
$nextNumber = 1;
} else {
$lastNumber = (int) ltrim($lastPasien->mr_pasien, '0'); // buang 0 depan dulu
$nextNumber = $lastNumber + 1;
}
$mrPasien = str_pad($nextNumber, 8, '0', STR_PAD_LEFT); // 8 digit, tambah 0 depan
return $mrPasien;
}
public function getAll()
{
return $this->msPasien->all();
}
public function getById($id)
{
return $this->msPasien->where('mr_pasien', $id)->first();
}
public function store($data)
{
$data['mr_pasien'] = $this->generateMrPasien();
return $this->msPasien->create($data);
}
public function update($id, $data)
{
return $this->msPasien->find($id)->update($data);
}
public function delete($id)
{
$pasien = $this->msPasien->find($id);
if (!$pasien) {
throw new ModelNotFoundException("Case study not found.");
}
return $pasien->delete();
}
}