<?php namespace App\Http\Controllers\CRUD; use Illuminate\Http\Request; use App\Models\Bhp; use Illuminate\Support\Facades\Storage; use App\Http\Controllers\Controller; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Validator; use Illuminate\Support\Str; class BhpController extends Controller { public function showBhp() { $bhps = Bhp::with('fotos')->get(); return response()->json($bhps); } public function createBhpProcess(Request $request) { $validator = Validator::make($request->all(), [ 'kondisi' => 'required', 'nama_bhp' => 'required', 'stok' => 'required', ]); if ($validator->fails()) { return response()->json($validator->errors(), 400); } $bhp = Bhp::create([ 'kondisi' => $request->kondisi, 'nama_bhp' => $request->nama_bhp, 'stok' => $request->stok, ]); if ($request->hasFile('foto_bhp')) { $foto_bhp = $request->file('foto_bhp'); foreach ($foto_bhp as $foto) { $uuid = Str::uuid()->toString(); $extension = $foto->getClientOriginalExtension(); $filename = $uuid . '.' . $extension; $path = $foto->storeAs('public/bhp', $filename); $bhp->fotos()->create([ 'foto_path' => $filename, ]); } } return response()->json(['message' => 'Bhp berhasil ditambahkan']); } public function editBhpForm($id) { $bhp = Bhp::find($id); if ($bhp) { return response()->json($bhp); } else { return response()->json(['message' => 'Bhp tidak ditemukan'], 404); } } public function editBhpProcess(Request $request, $id) { $db_bhp = Bhp::findOrFail($id); $validator = Validator::make($request->all(), [ 'kondisi' => 'required', 'nama_bhp' => 'required', 'stok' => 'required', ]); if ($validator->fails()) { return response()->json($validator->errors(), 400); } $data = [ 'kondisi' => $request->kondisi, 'nama_bhp' => $request->nama_bhp, 'stok' => $request->stok, ]; $db_bhp->update($data); if ($request->hasFile('foto_bhp')) { $db_bhp->fotos()->delete(); $foto_bhp = $request->file('foto_bhp'); foreach ($foto_bhp as $foto) { $uuid = Str::uuid()->toString(); $extension = $foto->getClientOriginalExtension(); $filename = $uuid . '.' . $extension; $path = $foto->storeAs('public/bhp', $filename); $db_bhp->fotos()->create([ 'foto_path' => $filename, ]); } } return response()->json(['message' => 'bhp berhasil diupdate'], 200); } public function deleteBhp($id) { $bhp = Bhp::findOrFail($id); if (!$bhp) { return response()->json(['message' => 'Bhp tidak ditemukan'], 404); } $bhp->delete(); return response()->json(['message' => 'Bhp berhasil dihapus']); } }