<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
//creados por el usuario
use App\Models\Admin\Sede;
use DB;
class SedeController extends Controller
{
    /**
     * Display a listing of the resource.
     */
   public function index()
    {
        $items = Sede::noEliminados()
            ->orderByDesc('id')
            ->paginate(10);

        return view('Admin.sede.index', compact('items'));
    }

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

    public function store(Request $request)
    {
        $data = $request->validate([
            'sede' => ['required','string','max:100'],
            'estado'       => ['required','in:AC,IN'],
        ]);

        $data['sede'] = mb_strtoupper(trim($data['sede']), 'UTF-8');

        $sede = Sede::create($data);
        $id_sede = $sede->id;
         
        // Ejecutar procedimiento de migración de codigos de ingresos
        DB::select("call sp_migrar_codigo_ingresos($id_sede)");
        // Ejecutar procedimiento de migración de codigos de egresos
        DB::select("call sp_migrar_codigo_egresos($id_sede)");
        //parametros de comprobante de pago
        DB::table('parametro_comprobante')->insert([
            'id_sede'    => $id_sede,
            'imagen'     => 'carita.jpg',
            'encabezado' => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX',
            'direccion'  => 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX',
            'serie'      => 'RI001',
            'estado'     => 'AC',
        ]);
        
        return redirect()->route('admin.sede.index')
            ->with('ok', 'Sede creada correctamente.');
    }

    public function edit(Sede $sede)
    {
        return view('Admin.sede.edit', ['item' => $sede]);
    }

    public function update(Request $request, Sede $sede)
    {
        $data = $request->validate([
            'sede' => ['required','string','max:100'],
            'estado'       => ['required','in:AC,IN'],
        ]);

        $data['sede'] = mb_strtoupper(trim($data['sede']), 'UTF-8');
        
        $sede->update($data);

        return redirect()->route('admin.sede.index')
            ->with('ok', 'Sede actualizado correctamente.');
    }

    public function destroy(Sede $sede)
    {
        // Eliminación lógica
        $sede->update(['estado' => 'EL']);

        return redirect()->route('admin.sede.index')
            ->with('ok', 'Sede eliminado (lógico) correctamente.');
    }
}
