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

class MotivoAjuste extends MY_Controller {

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

    protected function validar_permiso_ajax($slug) {
        if (!tiene_permiso($slug)) {
            echo json_encode(array('status' => false, 'message' => 'No tienes permisos para esta acción'));
            exit;
        }
    }

    public function index() {
        $this->validar_permiso('motivo_ajuste_ver');
        $data['titulo'] = 'Motivos de Ajuste';
        $this->layout('mantenimiento/motivo_ajuste/index', $data);
    }

    public function listar() {
        $this->validar_permiso_ajax('motivo_ajuste_ver');

        $items = $this->MotivoAjuste_model->listar();
        $data  = array();

        foreach ($items as $item) {
            $tipo   = $item->tipo == 'F'
                ? '<span class="label label-danger">FALTANTE</span>'
                : '<span class="label label-success">SOBRANTE</span>';

            $estado = $item->estado == 1
                ? '<span class="label label-success">Activo</span>'
                : '<span class="label label-danger">Inactivo</span>';

            $acciones = '';
            if (tiene_permiso('motivo_ajuste_editar')) {
                $acciones .= '<button type="button" class="btn btn-warning btn-xs btn-editar" data-id="'.$item->id.'">
                                <i class="fa fa-pencil"></i>
                              </button> ';
            }
            if (tiene_permiso('motivo_ajuste_eliminar')) {
                if ($item->estado == 1) {
                    $acciones .= '<button type="button" class="btn btn-danger btn-xs btn-estado"
                                    data-id="'.$item->id.'" data-accion="desactivar" data-nombre="'.$item->nombre.'">
                                    <i class="fa fa-times"></i>
                                  </button>';
                } else {
                    $acciones .= '<button type="button" class="btn btn-success btn-xs btn-estado"
                                    data-id="'.$item->id.'" data-accion="activar" data-nombre="'.$item->nombre.'">
                                    <i class="fa fa-check"></i>
                                  </button>';
                }
            }

            $data[] = array($item->id, $item->nombre, $estado, $acciones);
        }

        echo json_encode(array('data' => $data));
    }

    public function guardar() {
        $this->validar_permiso_ajax('motivo_ajuste_crear');

        $nombre = strtoupper(trim($this->input->post('nombre', TRUE)));

        if ($nombre === '') {
            echo json_encode(array('status' => false, 'message' => 'El nombre es obligatorio'));
            return;
        }

        if ($this->MotivoAjuste_model->existe_nombre($nombre)) {
            echo json_encode(array('status' => false, 'message' => 'El nombre ya existe'));
            return;
        }

        $ok = $this->MotivoAjuste_model->insertar(array(
            'nombre'     => $nombre,
            'estado'     => 1,
            'created_by' => $this->session->userdata('id')
        ));

        echo json_encode(array(
            'status'  => $ok ? true : false,
            'message' => $ok ? 'Motivo registrado correctamente' : 'No se pudo registrar'
        ));
    }

    public function obtener($id) {
        $this->validar_permiso_ajax('motivo_ajuste_editar');
        $item = $this->MotivoAjuste_model->obtener($id);
        if (!$item) {
            echo json_encode(array('status' => false, 'message' => 'Registro no encontrado'));
            return;
        }
        echo json_encode(array('status' => true, 'data' => $item));
    }

    public function actualizar($id) {
        $this->validar_permiso_ajax('motivo_ajuste_editar');

        $item = $this->MotivoAjuste_model->obtener($id);
        if (!$item) {
            echo json_encode(array('status' => false, 'message' => 'Registro no encontrado'));
            return;
        }

        $nombre = strtoupper(trim($this->input->post('nombre', TRUE)));

        if ($nombre === '') {
            echo json_encode(array('status' => false, 'message' => 'El nombre es obligatorio'));
            return;
        }

        if ($this->MotivoAjuste_model->existe_nombre($nombre, $id)) {
            echo json_encode(array('status' => false, 'message' => 'El nombre ya existe'));
            return;
        }

        $ok = $this->MotivoAjuste_model->actualizar($id, array(
            'nombre'     => $nombre,
            'updated_at' => date('Y-m-d H:i:s'),
            'updated_by' => $this->session->userdata('id')
        ));

        echo json_encode(array(
            'status'  => $ok ? true : false,
            'message' => $ok ? 'Motivo actualizado correctamente' : 'No se pudo actualizar'
        ));
    }

    public function estado($id) {
        $this->validar_permiso_ajax('motivo_ajuste_eliminar');

        $item = $this->MotivoAjuste_model->obtener($id);
        if (!$item) {
            echo json_encode(array('status' => false, 'message' => 'Registro no encontrado'));
            return;
        }

        $nuevoEstado = $item->estado == 1 ? 0 : 1;
        $ok = $this->MotivoAjuste_model->cambiarEstado($id, $nuevoEstado, $this->session->userdata('id'));

        echo json_encode(array(
            'status'  => $ok ? true : false,
            'message' => $ok
                ? ($nuevoEstado == 1 ? 'Motivo activado correctamente' : 'Motivo desactivado correctamente')
                : 'No se pudo cambiar el estado'
        ));
    }
}
