<?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']);
    }
}