BhpController.php 3.72 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;
use Illuminate\Support\Str; 


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

    public function store(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'nama_bhp' => 'required',
            'tipe' => 'required',
            'stok' => 'required',
            'no_inventaris' => 'required',
            'foto_bhp' => 'required',
        ]);

        if ($validator->fails()) {
            return response()->json($validator->errors(), 400);
        }

        if ($request->hasFile('foto_bhp')) {
            $file = $request->file('foto_bhp');
            $uuid = (string) Str::uuid(); 
            $extension = $file->getClientOriginalExtension();
            $filename = $uuid . '.' . $extension; 
            $path = $file->storeAs('public/bhp', $filename);
            $newpath = $filename;
        } else {
            return response()->json([
                'success' => false,
                'message' => 'Foto bhp tidak ditemukan'
            ], 400);
        }

        $bhp = Bhp::create([
            'nama_bhp' => $request->nama_bhp,
            'tipe' => $request->tipe,
            'stok' => $request->stok,
            'no_inventaris' => $request->no_inventaris,
            'foto_bhp' => $newpath,
        ]);

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

    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)
    {
        
            $db_bhp = Bhp::findOrFail($id);

            $validator = Validator::make($request->all(), [
                'nama_bhp' => 'required',
                'tipe' => 'required',
                'stok' => 'required',
                'no_inventaris' => 'required',
                'foto_bhp' => 'image', 
            ]);

            if ($validator->fails()) {
                return response()->json($validator->errors(), 400);
            }

            $data = [
                'nama_bhp' => $request->nama_bhp,
                'tipe' => $request->tipe,
                'stok' => $request->stok,
                'no_inventaris' => $request->no_inventaris,
            ];

            if ($request->hasFile('foto_bhp')) {
                if (File::exists(public_path($db_bhp->foto_bhp))) {
                    File::delete(public_path($db_bhp->foto_bhp));
                }

                $file = $request->file('foto_bhp');
                $uuid = (string) Str::uuid(); 
                $extension = $file->getClientOriginalExtension();
                $filename = $uuid . '.' . $extension;
                $path = $file->storeAs('public/bhp', $filename);
                $newpath = $filename;
                $data['foto_bhp'] = $newpath;
            }

            $db_bhp->update($data);

            return response()->json(['message' => 'bhp berhasil diupdate'], 200);
        
    }

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

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

        $bhp->delete();

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