187 lines
5.8 KiB
PHP
187 lines
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Procedure;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Validation\Rule;
|
|
use Inertia\Inertia;
|
|
|
|
class ProcedureController extends Controller
|
|
{
|
|
/**
|
|
* Display a listing of the resource.
|
|
*/
|
|
public function index()
|
|
{
|
|
$procedures = Procedure::orderBy('created_at', 'desc')
|
|
->select([
|
|
'id',
|
|
'code',
|
|
'name',
|
|
'category',
|
|
'base_price',
|
|
'is_taxable',
|
|
'tax_percentage',
|
|
'requires_approval',
|
|
'is_active',
|
|
'created_at'
|
|
])
|
|
->paginate(10)
|
|
->through(function ($procedure) {
|
|
return [
|
|
'id' => $procedure->id,
|
|
'code' => $procedure->code,
|
|
'name' => $procedure->name,
|
|
'category' => $procedure->category,
|
|
'price' => 'Rp ' . number_format($procedure->base_price, 2),
|
|
'tax' => $procedure->is_taxable ? $procedure->tax_percentage . '%' : 'Non-Pajak',
|
|
'approval' => $procedure->requires_approval ? 'Perlu' : 'Tidak',
|
|
'status' => $procedure->is_active ? 'Aktif' : 'Non-Aktif',
|
|
'created_at' => $procedure->created_at->format('d/m/Y H:i')
|
|
];
|
|
});
|
|
|
|
return Inertia::render('procedures/index', [
|
|
'procedures' => $procedures,
|
|
'status' => session('status')
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Show the form for creating a new resource.
|
|
*/
|
|
public function create()
|
|
{
|
|
return Inertia::render('procedures/form', [
|
|
'mode' => 'create',
|
|
'categories' => [
|
|
'Konsultasi',
|
|
'Pemeriksaan',
|
|
'Tindakan',
|
|
'Operasi',
|
|
'Laboratorium',
|
|
'Radiologi',
|
|
'Obat',
|
|
'Lainnya'
|
|
],
|
|
'defaults' => [
|
|
'is_taxable' => true,
|
|
'tax_percentage' => 10.00,
|
|
'is_discountable' => true,
|
|
'requires_approval' => false,
|
|
'is_active' => true
|
|
]
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Store a newly created resource in storage.
|
|
*/
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate([
|
|
'code' => 'required|string|max:20|unique:m_procedure,code',
|
|
'name' => 'required|string|max:100',
|
|
'category' => [
|
|
'required',
|
|
Rule::in(Procedure::getCategories())
|
|
],
|
|
'description' => 'nullable|string',
|
|
'base_price' => 'required|numeric|min:0',
|
|
'is_taxable' => 'required|boolean',
|
|
'tax_percentage' => 'required_if:is_taxable,true|numeric|between:0,100',
|
|
'is_discountable' => 'required|boolean',
|
|
'requires_approval' => 'required|boolean',
|
|
'is_active' => 'required|boolean'
|
|
]);
|
|
|
|
DB::transaction(function () use ($validated) {
|
|
Procedure::create($validated);
|
|
});
|
|
|
|
return redirect()->route('procedures.index')
|
|
->with('status', 'Prosedur berhasil ditambahkan');
|
|
}
|
|
|
|
/**
|
|
* Display the specified resource.
|
|
*/
|
|
public function show(Procedure $procedure)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Show the form for editing the specified resource.
|
|
*/
|
|
public function edit(Procedure $procedure)
|
|
{
|
|
return Inertia::render('procedures/form', [
|
|
'mode' => 'edit',
|
|
'procedure' => [
|
|
'id' => $procedure->id,
|
|
'code' => $procedure->code,
|
|
'name' => $procedure->name,
|
|
'category' => $procedure->category,
|
|
'description' => $procedure->description,
|
|
'base_price' => $procedure->base_price,
|
|
'is_taxable' => $procedure->is_taxable,
|
|
'tax_percentage' => $procedure->tax_percentage,
|
|
'is_discountable' => $procedure->is_discountable,
|
|
'requires_approval' => $procedure->requires_approval,
|
|
'is_active' => $procedure->is_active
|
|
],
|
|
'categories' => Procedure::getCategories()
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* Update the specified resource in storage.
|
|
*/
|
|
public function update(Request $request, Procedure $procedure)
|
|
{
|
|
$validated = $request->validate([
|
|
'code' => [
|
|
'required',
|
|
'string',
|
|
'max:20',
|
|
Rule::unique('m_procedure', 'code')->ignore($procedure->id)
|
|
],
|
|
'name' => 'required|string|max:100',
|
|
'category' => [
|
|
'required',
|
|
Rule::in(Procedure::getCategories())
|
|
],
|
|
'description' => 'nullable|string',
|
|
'base_price' => 'required|numeric|min:0',
|
|
'is_taxable' => 'required|boolean',
|
|
'tax_percentage' => 'required_if:is_taxable,true|numeric|between:0,100',
|
|
'is_discountable' => 'required|boolean',
|
|
'requires_approval' => 'required|boolean',
|
|
'is_active' => 'required|boolean'
|
|
]);
|
|
|
|
DB::transaction(function () use ($validated, $procedure) {
|
|
$procedure->update($validated);
|
|
});
|
|
|
|
return redirect()->route('procedures.index')
|
|
->with('status', 'Data prosedur berhasil diperbarui');
|
|
}
|
|
|
|
/**
|
|
* Remove the specified resource from storage.
|
|
*/
|
|
public function destroy(Procedure $procedure)
|
|
{
|
|
DB::transaction(function () use ($procedure) {
|
|
$procedure->delete();
|
|
});
|
|
|
|
return redirect()->route('procedures.index')
|
|
->with('status', 'Prosedur berhasil dihapus');
|
|
}
|
|
}
|