BhpController.php 2.56 KB
<?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;

class BhpController extends Controller
{
    public function index()
    {
        $bhps = Bhp::all();
        return response()->json($bhps);
    }

    public function store(Request $request)
    {
        $requestData = $request->all();
        $fileName = time().$request->file('id_foto_bhp')->getClientOriginalName();
        $path = $request->file('id_foto_bhp')->storeAs('bhp', $fileName, 'public');
        $newpath = str_replace('bhp/', '', $path);
        $requestData["id_foto_bhp"] = $newpath;
        Bhp::create($requestData);
        return response()->json(['message' => 'Bhp berhasil disimpan'], 201);
    }

    public function show($id)
    {
        $bhp = Bhp::find($id);
        if ($bhp) {
            return response()->json($bhp);
        } else {
            return response()->json(['message' => 'Bhp tidak ditemukan'], 404);
        }
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'nama_bhp' => 'required', 
            'tipe' => 'required',
            'stok' => 'required|integer',
            'no_inventaris' => 'required',
        ]);

        $bhp = Bhp::find($id);
    
        if (!$bhp) {
            return response()->json(['message' => 'Bhp tidak ditemukan'], 404);
        }
    
        $bhp->update([
            'nama_bhp' => $request->input('nama_bhp'),
            'tipe' => $request->input('tipe'),
            'stok' => $request->input('stok'),
            'no_inventaris' => $request->input('no_inventaris'),
        ]);
    
        if ($request->hasFile('id_foto_bhp')) {
            $fileName = time().$request->file('id_foto_bhp')->getClientOriginalName();
            $path = $request->file('id_foto_bhp')->storeAs('public/bhp', $fileName);
            $newpath = str_replace('public/', '', $path);
    
            $bhp->id_foto_bhp = $newpath;
            $bhp->save();
        }
    
        return response()->json(['message' => 'Bhp berhasil diperbarui']);
    }

    public function destroy($id)
    {
        $bhp = Bhp::findOrFail($id);
        if(File::exists($bhp->id_foto_bhp)){
            File::delete($bhp->id_foto_bhp);
        }

        if (!$bhp) {
            return response()->json(['message' => 'Bhp tidak ditemukan'], 404);
        }

        $bhp->delete();

        return response()->json(['message' => 'Bhp berhasil dihapus']);
    }
}