<?php

namespace App\Controllers;

use App\Models\Red_alcantarilladoModel;

class Red_alcantarillado extends BaseController
{
    protected $model;

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

    public function index()
    {
        $filtros = [
            'id_tuberia'     => $this->request->getGet('id_tuberia'),
            'calle'          => $this->request->getGet('calle'),
            'estado_actual'  => $this->request->getGet('estado_actual'),
            'responsable'    => $this->request->getGet('responsable'),
            'ubicacion'      => $this->request->getGet('ubicacion'),
            'distrito'       => $this->request->getGet('distrito'),
            'otb'            => $this->request->getGet('otb'),
        ];

        $porPagina = 10;

        $data['items'] = $this->model
            ->buscar($filtros)
            ->orderBy('id_tuberia', 'ASC')
            ->paginate($porPagina);

        $data['pager'] = $this->model->pager;
        $data['search'] = $filtros;

        return view('red_alcantarillado/index', $data);
    }

    public function view($id)
    {
        $item = $this->model->find($id);

        if (!$item) {
            throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Registro no encontrado");
        }

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

    public function create()
    {
        return view('red_alcantarillado/create');
    }

    public function store()
    {
        $data = $this->request->getPost();

        // Limpia campos vacíos opcionales (los convierte en null)
        foreach ($data as $key => $value) {
            $data[$key] = (trim($value) === '') ? null : $value;
        }

        $this->model->insert($data);

        return redirect()->to('/red_alcantarillado')->with('mensaje', 'Registro creado correctamente');
    }

    public function edit($id)
    {
        $item = $this->model->find($id);

        if (!$item) {
            throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Registro no encontrado");
        }

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

    public function update($id)
    {
        $request = \Config\Services::request();

        $data = [
            'id_tuberia'       => $request->getPost('id_tuberia'),
            'diametro'         => $request->getPost('diametro'),
            'pendiente'        => $request->getPost('pendiente'),
            'calle'            => $request->getPost('calle'),
            'estado_actual'    => $request->getPost('estado_actual'),
            'responsable'      => $request->getPost('responsable'),
            'longitud'         => $request->getPost('longitud'),
            'material'         => $request->getPost('material'),
            'tipo_tuberia'     => $request->getPost('tipo_tuberia'),
            'ubicacion'        => $request->getPost('ubicacion'),
            'profundidad'      => $request->getPost('profundidad'),
            'departamento'     => $request->getPost('departamento'),
            'provincia'        => $request->getPost('provincia'),
            'municipio'        => $request->getPost('municipio'),
            'distrito'         => $request->getPost('distrito'),
            'otb'              => $request->getPost('otb'),
            'observaciones'    => $request->getPost('observaciones'),
        ];

        foreach ($data as $key => $value) {
            $data[$key] = (trim($value) === '') ? null : $value;
        }

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

        return redirect()->to(base_url('red_alcantarillado'))->with('mensaje', 'Registro actualizado correctamente');
    }
}

