<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Login extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('Login_model');
    }

    public function index() {
        if ($this->session->userdata('login')) {
            redirect('dashboard');
        }
        $this->load->view('auth/login');
    }

    public function autenticar() {
        $this->form_validation->set_rules('usuario', 'Usuario', 'required|trim');
        $this->form_validation->set_rules('clave', 'Contraseña', 'required|trim');

        if ($this->form_validation->run() == FALSE) {
            $this->load->view('auth/login');
            return;
        }

        $usuario = $this->input->post('usuario', TRUE);
        $clave   = $this->input->post('clave', TRUE);

        $user = $this->Login_model->getUsuario($usuario);

        if ($user && password_verify($clave, $user->clave)) {
            $session = array(
                'id'       => $user->id,
                'rol_id'   => $user->rol_id,
                'nombre'   => $user->nombre,
                'usuario'  => $user->usuario,
                'login'    => TRUE
            );
            $this->session->set_userdata($session);

            // Verificar a cuántos sistemas tiene acceso
            $sistemas = $this->db
                ->select('s.*')
                ->from('mt_sistema s')
                ->join('usuarios_sistema us', 'us.sistema_id = s.id')
                ->where('us.usuario_id', $user->id)
                ->where('s.estado', 1)
                ->get()->result();

            if (count($sistemas) === 1) {
                // Solo un sistema — redirige directo
                redirect($sistemas[0]->url);
            } elseif (count($sistemas) > 1) {
                // Varios sistemas — muestra selector
                redirect('login/selector');
            } else {
                // Sin sistemas asignados — va al comercial por defecto
                redirect('dashboard');
            }
        }

        $this->session->set_flashdata('error', 'Usuario o contraseña incorrectos');
        redirect('login');
    }

    public function selector() {
        if (!$this->session->userdata('login')) {
            redirect('login');
        }

        $usuario_id = $this->session->userdata('id');

        $sistemas = $this->db
            ->select('s.*')
            ->from('mt_sistema s')
            ->join('usuarios_sistema us', 'us.sistema_id = s.id')
            ->where('us.usuario_id', $usuario_id)
            ->where('s.estado', 1)
            ->get()->result();

        if (count($sistemas) === 1) {
            redirect($sistemas[0]->url);
        }

        $data['sistemas'] = $sistemas;
        $data['nombre']   = $this->session->userdata('nombre');
         $this->load->view('auth/selector', $data);
    }

    public function logout() {
        $this->session->sess_destroy();
        redirect('login');
    }
}
