From 23e9a6a2f2f84ff22e09d604bafd89fc3bc9550a Mon Sep 17 00:00:00 2001 From: Hegifebrianto Date: Fri, 14 Feb 2025 18:14:35 +0700 Subject: [PATCH] feat-kasmasuk-with-coa-integrate --- app/Http/Controllers/KasMasukController.php | 45 ++++++++++----------- app/Models/KasMasuk.php | 9 ++++- database/seeders/KasMasukSeeder.php | 23 ++++++++++- 3 files changed, 51 insertions(+), 26 deletions(-) diff --git a/app/Http/Controllers/KasMasukController.php b/app/Http/Controllers/KasMasukController.php index f54cc8b..5f9cce7 100644 --- a/app/Http/Controllers/KasMasukController.php +++ b/app/Http/Controllers/KasMasukController.php @@ -5,75 +5,74 @@ namespace App\Http\Controllers; use App\Models\KasMasuk; use Illuminate\Http\Request; use Illuminate\Http\Response; -use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Auth; class KasMasukController extends Controller { - // 1. List All Entries public function index() { - $kasMasuk = KasMasuk::with('user')->get(); + $kasMasuk = KasMasuk::with(['user', 'coa'])->get(); + return response()->json($kasMasuk, 200); + } + + public function show($id) + { + $kasMasuk = KasMasuk::with(['user', 'coa'])->find($id); + + if (!$kasMasuk) { + return response()->json(['message' => 'Data tidak ditemukan'], Response::HTTP_NOT_FOUND); + } + return response()->json($kasMasuk, Response::HTTP_OK); } - // 2. Create New Entry public function store(Request $request) { $request->validate([ 'tanggal' => 'required|date', 'deskripsi' => 'required|string', 'jumlah' => 'required|numeric|min:0', + 'coa_id' => 'nullable|exists:coas,id', // Validasi COA ]); $kasMasuk = KasMasuk::create([ - 'user_id' => Auth::id(), // Ambil user yang sedang login + 'user_id' => Auth::id(), 'tanggal' => $request->tanggal, 'deskripsi' => $request->deskripsi, 'jumlah' => $request->jumlah, + 'coa_id' => $request->coa_id, ]); - return response()->json($kasMasuk, Response::HTTP_CREATED); + return response()->json($kasMasuk, 201); } - // 3. Show Specific Entry - public function show($id) - { - $kasMasuk = KasMasuk::with('user')->find($id); - if (!$kasMasuk) { - return response()->json(['message' => 'Data tidak ditemukan'], Response::HTTP_NOT_FOUND); - } - return response()->json($kasMasuk, Response::HTTP_OK); - } - - // 4. Update Entry public function update(Request $request, $id) { - $kasMasuk = KasMasuk::find($id); - if (!$kasMasuk) { - return response()->json(['message' => 'Data tidak ditemukan'], Response::HTTP_NOT_FOUND); - } + $kasMasuk = KasMasuk::findOrFail($id); $request->validate([ 'tanggal' => 'sometimes|date', 'deskripsi' => 'sometimes|string', 'jumlah' => 'sometimes|numeric|min:0', + 'coa_id' => 'nullable|exists:coas,id', // Validasi COA ]); $kasMasuk->update($request->all()); - return response()->json($kasMasuk, Response::HTTP_OK); + return response()->json($kasMasuk, 200); } - // 5. Delete Entry public function destroy($id) { $kasMasuk = KasMasuk::find($id); + if (!$kasMasuk) { return response()->json(['message' => 'Data tidak ditemukan'], Response::HTTP_NOT_FOUND); } $kasMasuk->delete(); + return response()->json(['message' => 'Data berhasil dihapus'], Response::HTTP_OK); } } diff --git a/app/Models/KasMasuk.php b/app/Models/KasMasuk.php index 9d38954..e7a13f0 100644 --- a/app/Models/KasMasuk.php +++ b/app/Models/KasMasuk.php @@ -10,7 +10,7 @@ class KasMasuk extends Model { use HasFactory; - protected $fillable = ['user_id', 'tanggal', 'deskripsi', 'jumlah']; + protected $fillable = ['user_id', 'tanggal', 'deskripsi', 'jumlah', 'coa_id']; /** * Relasi ke user (siapa yang membuat transaksi). @@ -19,5 +19,12 @@ class KasMasuk extends Model { return $this->belongsTo(User::class); } + /** + * Relasi ke COA (Akun Bank). + */ + public function coa(): BelongsTo + { + return $this->belongsTo(Coa::class, 'coa_id'); + } } diff --git a/database/seeders/KasMasukSeeder.php b/database/seeders/KasMasukSeeder.php index db4beb6..dc01414 100644 --- a/database/seeders/KasMasukSeeder.php +++ b/database/seeders/KasMasukSeeder.php @@ -4,14 +4,33 @@ namespace Database\Seeders; use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; +use App\Models\KasMasuk; +use App\Models\User; +use App\Models\Coa; class KasMasukSeeder extends Seeder { /** * Run the database seeds. */ - public function run(): void + public function run() { - // + $user = User::first(); + if (!$user) { + $user = User::factory()->create(); // Create a test user + } + + $coa = Coa::first(); + if (!$coa) { + $coa = Coa::factory()->create(); // Create a test COA + } + + KasMasuk::create([ + 'user_id' => $user->id, // Now user_id will never be null + 'coa_id' => $coa->id, // Now coa_id will never be null + 'tanggal' => now(), + 'deskripsi' => 'Pemasukan dari pelanggan', + 'jumlah' => 500000.75, + ]); } }