<?php

namespace App\Http\Controllers;
use App\Models\Hcp;
use Illuminate\Support\Facades\Validator;
use Illuminate\Http\Request;

class HcpController extends Controller
{
    public function index()
    {
        $HCPs = Hcp::all(); 
        return view('hcp.index', compact('HCPs'));
    }

    public function create()
    {
        return view('hcp.create');
    }

    public function store(Request $request)
    {
        $request->validate([
            'title' => 'required|string|max:50',
            'first_name' => 'required|string|max:50',
            'middle_name' => 'nullable|string|max:50',
            'last_name' => 'required|string|max:50',
            'contact_phone_office' => 'nullable|string|max:20',
            'contact_phone_personal' => 'nullable|string|max:20',
            'email' => 'nullable|email|max:100',
            'address' => 'nullable|string',
            'specialization' => 'nullable|string|max:100',
            'school_graduated' => 'nullable|string|max:100',
            'overall_rating' => 'nullable|numeric|min:0|max:5',
        ]);

        Hcp::create($request->all());

        return redirect()->route('hcp.index')->with('success', 'HCP added successfully.');
    }

    public function edit($id)
    {
        $hcp = Hcp::findOrFail($id);
        return view('hcp.edit', compact('hcp'));
    }

    public function update(Request $request, $id)
    {
        $request->validate([
            'title' => 'required|string|max:50',
            'first_name' => 'required|string|max:50',
            'middle_name' => 'nullable|string|max:50',
            'last_name' => 'required|string|max:50',
            'contact_phone_office' => 'nullable|regex:/^\d{16}$/',
            'contact_phone_personal' => 'nullable|regex:/^\d{16}$/',
            'email' => 'nullable|email|max:100',
            'address' => 'nullable|string',
            'specialization' => 'nullable|string|max:100',
            'school_graduated' => 'nullable|string|max:100',
            'overall_rating' => 'nullable|numeric|min:0|max:5',
        ]);

        $hcp = Hcp::findOrFail($id);
        $hcp->update($request->all());

        return redirect()->route('hcp.index')->with('success', 'HCP updated successfully.');
    }

    public function destroy($id)
    {
        $hcp = Hcp::findOrFail($id);
        $hcp->delete();

        return redirect()->route('hcp.index')->with('success', 'HCP deleted successfully');
    }

    public function bulkDelete(Request $request)
    {  
 
        $validator = Validator::make($request->all(), [
            'ids' => 'required|array',
            'ids.*' => 'exists:hcp,hcp_id', 
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->errors()], 422);
        }

        Hcp::destroy($request->ids);

        return response()->json(['success' => 'HCP deleted successfully.']);
    }
}
