<?php

namespace App\Controllers;

use App\Models\MedidoresModel;

class Medidores extends BaseController
{
    protected $model;

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


    public function index()
    {
        $model = $this->model;
    
        $search = $this->request->getGet(); // filtros desde URL
        $page = (int) ($this->request->getVar('page') ?? 1);
        $perPage = 10;
        $offset = ($page - 1) * $perPage;
    
        // contar y filtrar
        $total = $model->getFilteredCount($search);
        $items = $model->getFilteredData($perPage, $offset, $search)->getResultArray();
    
        // generar paginador
        $pager = \Config\Services::pager();
        $pager->makeLinks($page, $perPage, $total);
    
        return view('medidores/index', [
            'items' => $items,
            'search' => $search,
            'pager' => $pager,
            'page' => $page,
            'perPage' => $perPage,
            'total' => $total,
        ]);
    }





    public function view($id)
    {
        $medidor = $this->model->find($id);
    
        if (!$medidor) {
            throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Medidor no encontrado");
        }
    
        return view('medidores/view', ['medidor' => $medidor]);
    }

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

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

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


     public function edit($id)
        {
            $medidor = $this->model->find($id);
    
            if (!$medidor) {
                throw \CodeIgniter\Exceptions\PageNotFoundException::forPageNotFound("Registro no encontrado");
            }
    
            return view('medidores/edit', ['medidor' => $medidor]);
        }
        

       public function update($id)
        {
            $request = \Config\Services::request();
        
            $data = [
                'cod_fijo'              => $request->getPost('cod_fijo'),
                'cod_usuario'           => $request->getPost('cod_usuario'),
                'nombres'               => $request->getPost('nombres'),
                'apellidos'             => $request->getPost('apellidos'),
                'direccion'             => $request->getPost('direccion'),
                'nit_ci'                => $request->getPost('nit_ci'),
                'numero_medidor'        => $request->getPost('numero_medidor'),
                'ubicacion'             => $request->getPost('ubicacion'),
                'este'                  => $request->getPost('este'),
                'norte'                 => $request->getPost('norte'),
                'cota'                  => $request->getPost('cota'),
                'marca_medidor'         => $request->getPost('marca_medidor'),
                'zona_abast'            => $request->getPost('zona_abast'),
                'zona_cod_comercial'    => $request->getPost('zona_cod_comercial'),
                'lectura_inicial'       => $request->getPost('lectura_inicial'),
                'fecha_lect_inicial'    => $request->getPost('fecha_lect_inicial'),
                'inst_con_liberacion'   => $request->getPost('inst_con_liberacion'),
                'usu_funcionario'       => $request->getPost('usu_funcionario'),
                'fecha_instalacion'     => $request->getPost('fecha_instalacion'),
                'estado_registro'       => $request->getPost('estado_registro'),
                'tipo_lectura'          => $request->getPost('tipo_lectura'),
                'foto_inicial'          => $request->getPost('foto_inicial'),
                'control_datos_crc'     => $request->getPost('control_datos_crc'),
                'observaciones'         => $request->getPost('observaciones'),
                'departamento'          => $request->getPost('departamento'),
                'provincia'             => $request->getPost('provincia'),
                'municipio'             => $request->getPost('municipio'),
                'distrito'              => $request->getPost('distrito'),
                'otb'                   => $request->getPost('otb'),

            ];
        
     // Limpia campos vacíos opcionales (los convierte en null)
        foreach ($data as $key => $value) {
            $data[$key] = (trim($value) === '') ? null : $value;
        }
    
        $model = new \App\Models\MedidoresModel();
        $model->update($id, $data);
    
        return redirect()->to(base_url('medidores'))->with('mensaje', 'Registro actualizado correctamente');
        }
        
   public function delete($id)
    {
        $usuarioModel = new MedidoresModel();
        $usuarioModel->delete($id);

        return redirect()->to(base_url('medidores'))->with('status', 'Regisro Red agua potable eliminada correctamente');
    }



    public function ver_medidor_ol($gid)
    {
        $url = "https://server1.jmap4.com/jvisorbolivia/index.html?tipo_consulta=medidores_gid";
        $url .= "&gid=" . $gid;
        $url .= "&ip_host=server1.jmap4.com";

        return redirect()->to($url);
    }
}

