<?php

namespace App\Http\Controllers;

use App\Models\Cliente;
use Illuminate\Http\Request;

class ClienteController extends Controller
{
    public function index()
    {
        $clientes = Cliente::orderBy('id_cliente', 'desc')->get();
        return view('cliente.index', compact('clientes'));
    }

    public function store(Request $request)
{
    $request->validate([
        'tipo_cliente' => 'required|in:Natural,Jurídico',
        'documento_identidad' => 'required|max:20',
        'nombres_razon_social' => 'required|max:100',
        'direccion' => 'nullable|string',
        'telefono' => 'nullable|string|max:20',
        'email' => 'nullable|email|max:100',
        'estado' => 'required|in:Activo,Inactivo',
    ]);

    // Obtener último código numérico
    $ultimoCodigo = Cliente::max('codigo_inscripcion');

    // Convertir a entero y sumar 1
    $nuevoNumero = $ultimoCodigo ? intval($ultimoCodigo) + 1 : 1;

    // Formatear con ceros a la izquierda (8 dígitos)
    $codigoFormateado = str_pad($nuevoNumero, 8, '0', STR_PAD_LEFT);

    // Crear cliente y guardar en variable
    $cliente = Cliente::create(array_merge($request->all(), [
        'codigo_inscripcion' => $codigoFormateado
    ]));

    return response()->json([
        'mensaje' => '✅ Cliente creado correctamente.',
        'id_cliente' => $cliente->id_cliente, // 🔹 Aquí el ID que necesitas en JS
        'cliente' => $cliente                // 🔹 Opcional: por si quieres más datos
    ], 201);
}


    public function update(Request $request, $id)
    {
        $cliente = Cliente::findOrFail($id);

        $request->validate([
            'tipo_cliente' => 'required|in:Natural,Jurídico',
            'documento_identidad' => 'required|max:20',
            'nombres_razon_social' => 'required|max:100',
            'direccion' => 'nullable|string',
            'telefono' => 'nullable|string|max:20',
            'email' => 'nullable|email|max:100',
            'estado' => 'required|in:Activo,Inactivo',
        ]);

        $cliente->update($request->all());

        return response()->json(['mensaje' => 'Cliente actualizado correctamente.']);
    }

    public function destroy($id)
    {
        $cliente = Cliente::findOrFail($id);
        $cliente->delete();

        return response()->json(null, 204);
    }

    // ClienteController.php
public function buscar(Request $request)
{
    $q = trim($request->input('q'));

    $clientes = \DB::table('cliente')
        ->select('id_cliente', 'documento_identidad', 'nombres_razon_social', 'direccion','email','telefono','estado','tipo_cliente')
        ->where(function($query) use ($q) {
            $query->where('documento_identidad', 'LIKE', "%{$q}%")
                  ->orWhere('nombres_razon_social', 'LIKE', "%{$q}%");
        })
        ->orderBy('nombres_razon_social')
        ->limit(10)
        ->get();

    return response()->json($clientes);
}

public function conexiones($id)
{
    $conexiones = \DB::table('conexion as c')
        ->join('via as v', 'v.id_via', '=', 'c.id_via')
        ->select(
            'c.id_conexion',
            'c.estado',
            'v.nombre_via',
            'v.numero_calle'
        )
        ->where('c.id_cliente', $id)
        ->orderBy('c.id_conexion')
        ->get();

    return response()->json($conexiones);
}


}
