NIM_E31222351/app/Http/Controllers/UangKeluarController.php

80 lines
2.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\UangKeluarModel; // Import model
use Illuminate\Http\Request;
class UangKeluarController extends Controller
{
public function index()
{
return view('UangKeluar');
}
public function store(Request $request)
{
try {
// Validasi input
$validated = $request->validate([
'Tanggal' => 'required|date',
'kategori' => 'required|string',
'keterangan' => 'required|string',
'uang_keluar' => 'required|string',
]);
// Bersihkan format angka dari input uang_keluar
$uang_keluar = str_replace(['.', ','], '', $request->uang_keluar);
// Tentukan kode berdasarkan kategori
$kode = $this->generateKode($validated['kategori']);
// Simpan data
UangKeluarModel::create([
'Tanggal' => $validated['Tanggal'],
'kode' => $kode,
'kategori' => $validated['kategori'],
'keterangan' => $validated['keterangan'],
'uang_masuk' => 0,
'uang_keluar' => $uang_keluar,
'gaji' => 0,
]);
return redirect()->back()->with('success', 'Data berhasil disimpan!');
} catch (\Exception $e) {
return redirect()->back()->with('error', 'Gagal menyimpan data: ' . $e->getMessage());
}
}
private function generateKode($kategori)
{
// Tentukan kode dasar berdasarkan kategori
$kodeDasar = 0;
switch ($kategori) {
case 'kas':
$kodeDasar = 1;
break;
case 'utang_usaha':
$kodeDasar = 2;
break;
case 'utang_bank':
$kodeDasar = 2;
break;
case 'beban_listrik':
$kodeDasar = 5;
break;
case 'beban_sewa':
$kodeDasar = 5;
break;
default:
$kodeDasar = 0; // Kode default jika kategori tidak dikenali
}
// Ambil jumlah transaksi dengan kode dasar yang sama
$lastTransaction = UangKeluarModel::where('kode', 'like', $kodeDasar . '%')->orderBy('id', 'desc')->first();
$nextNumber = $lastTransaction ? intval(substr($lastTransaction->kode, 1)) + 1 : 1;
// Gabungkan kode dasar dengan nomor urut
return $kodeDasar . str_pad($nextNumber, 2, '0', STR_PAD_LEFT);
}
}