<?php

namespace App\Controllers;

use App\Models\OtbModel;

class Otbs extends BaseController
{
    protected $model;

    public function __construct()
    {
        $this->model = new OtbModel();
    }

public function index()
{
    $filtros = [
        'nombres_otb' => $this->request->getGet('nombres_otb'),
        'distritos'  => $this->request->getGet('distritos'),
        'id_otb'=> $this->request->getGet('id_otb'),
    ];

    $porPagina = 10;
    $page = (int) ($this->request->getGet('page') ?? 1);
    $offset = ($page - 1) * $porPagina;

    $builder = $this->model->buscarQueryBuilder($filtros);
    $total = $this->model->contarFiltrados($filtros);

    $items = $builder
        ->orderBy('gid', 'ASC')
        ->limit($porPagina, $offset)
        ->get()
        ->getResultArray();

    $pager = \Config\Services::pager();
    $pager->makeLinks($page, $porPagina, $total);

    return view('otbs/index', [
        'items'  => $items,
        'pager'  => $pager,
        'search' => $filtros,
    ]);
}


    public function view($id)
    {
        $item = $this->model->find($id);
        if (!$item) {
            throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Registro no encontrado");
        }

        return view('otbs/view', ['item' => $item]);
    }

    public function create()
    {
        $distritoModel = new \App\Models\DistritoModel();
        $distritos = $distritoModel
            ->select('distrito')
            ->orderBy('distrito', 'ASC')
            ->findAll();
    
        return view('otbs/create', ['distritos' => $distritos]);
    }


    public function store()
    {
        $data = [
            'id_otb'       => $this->request->getPost('id_otb'),
            'nombres_otb'  => $this->request->getPost('nombres_otb'),
            'distritos'    => $this->request->getPost('distritos')
        ];
    
        $this->model->insert($data);
    
        return redirect()->to('/otbs')->with('mensaje', 'Registro creado correctamente');
    }


    public function edit($gid)
    {
        $otbModel = new \App\Models\OtbModel();
        $distritoModel = new \App\Models\DistritoModel(); // crea este modelo si no lo tienes aún

        $item = $otbModel->find($gid);

        if (!$item) {
            throw new \CodeIgniter\Exceptions\PageNotFoundException("No se encontró la OTB con ID $gid");
        }

       $distritos = $distritoModel
        ->select('distrito')
        ->orderBy('distrito', 'ASC')
        ->findAll();

        return view('otbs/edit', [
            'item' => $item,
            'distritos' => $distritos
        ]);
    }


    public function delete($gid)
    {
        $model = new \App\Models\OtbModel();
    
        $item = $model->find($gid);
    
        if (!$item) {
            return redirect()->to(base_url('otbs'))->with('error', 'Registro no encontrado.');
        }
    
        $success = $model->delete($gid);
    
        if ($success) {
            return redirect()->to(base_url('otbs'))->with('status', 'Registro OTB eliminado correctamente.');
        } else {
            return redirect()->to(base_url('otbs'))->with('error', 'No se pudo eliminar el registro.');
        }
    }




    public function update($gid)
    {
        $data = [
        'nombres_otb' => $this->request->getPost('nombres_otb'),
        'distritos'   => $this->request->getPost('distritos'),
        ];


        $this->model->update($gid, $data);

        return redirect()->to('/otbs')->with('mensaje', 'OTB actualizada correctamente.');
    }
}
