File: /var/www/gestor-horarios.bradford/app/controllers/maintainers/EmployeesController.php
<?php
class EmployeesController extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('mantenedores/mantenedor_trabajadores_model');
$this->load->model('mantenedores/mantenedor_general_model');
$this->load->library('session');
$this->load->helper('model');
define('LAYOUT', 'shared/layout');
valida_sesion($this->session->userdata('token_usuario'));
define("STAFF_ID", '' . $this->session->userdata('rt_staff') . '');
}
function index()
{
$this->trabajadores_listar(); //inicio
}
function trabajadores_crear()
{
$post = $this->input->post();
if(!empty($post))
{
$data = $this->input->post('data');
// $data['fecha_nacimiento'] = ordenarFechaServidor($data['fecha_nacimiento']);
// $data['fecha_contratacion'] = ordenarFechaServidor($data['fecha_contratacion']);
$data['activo'] = TRUE;
$data['password'] = sha1($data['password']);
if($data['jefe_id'] <= 0)
{
unset($data['jefe_id']);
}
// if($data['ayudante_jefe_id'] == 0){
// $data['ayudante_jefe_id'] = null;
// }
$id = $this->mantenedor_general_model->crear($data, 'trabajadores');
$error = $this->db->_error_number();
if($error == 1452)
{
$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco la información de ");
redirect('dashboard/trabajadores/new');
}
else
{
redirect('dashboard/trabajadores/'.$id.'/view');
}
}
$data['button'] = array( 'name' => 'continuar',
'id' => 'continuar',
'value' => 'Continuar',
'class' => 'btn-mant btn btn-small btn-primary',
'type' => 'submit',
'content' => ' Continuar ');
$data['proveedor_id'] = array( 'name' => 'data[proveedor_id]',
'id' => 'proveedor_id',
'class' => 'only-number',
'maxlength' => '11',
'size' => '11',
'style' => '');
//$data['gerencia_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('gerencia', 'nombre'));
$data['centros_costos_nombre'] = $this->prepara_dropdown(get_table('centros_costos', '*', array('nombre'=>'ASC')), 'id', 'nombre');
$data['unidades_nombre'] = $this->prepara_dropdown(get_table('unidades', '*', array('nombre'=>'ASC')), 'id', 'nombre');
$data['cargos_nombre'] = $this->prepara_dropdown(get_table('cargos', '*', array('nombre'=>'ASC')), 'id', 'nombre');
$data['sucursales_nombre'] = $this->prepara_dropdown(get_table('sucursales', '*', array('nombre'=>'ASC')), 'id', 'nombre');
$trabajadores = get_table('trabajadores', 'id, nombres, apellido_p', array('nombres'=>'ASC'));
$result["0"] = "Seleccione";
foreach ($trabajadores as $key => $value)
{
$result[$value->id] = $value->nombres.' '.$value->apellido_p;
}
$data['trabajadores_nombre'] = $result; //$this->prepara_dropdown(get_table('trabajadores', 'id, nombres', array('nombres'=>'ASC')), 'id', 'nombres');
unset($result);
$trabajadores = get_result_by_where('trabajadores',array('es_jefe'=> TRUE), 'id, nombres, apellido_p', array('nombres'=>'ASC'));
$result["0"] = "Seleccione";
foreach ($trabajadores as $key => $value)
{
$result[$value->id] = $value->nombres.' '.$value->apellido_p;
}
$data['trabajadores_jefes'] = $result;
$data['nombres'] = array( 'name' => 'data[nombres]',
'id' => 'nombres',
'class' => '',
'maxlength' => '245',
'size' => '245',
'style' => '');
$data['apellido_p'] = array( 'name' => 'data[apellido_p]',
'id' => 'apellido_p',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['apellido_m'] = array( 'name' => 'data[apellido_m]',
'id' => 'apellido_m',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['fecha_nacimiento'] = array( 'name' => 'data[fecha_nacimiento]',
'id' => 'fecha_nacimiento',
'class' => 'date',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['sexo'] = array( 'name' => 'data[sexo]',
'id' => 'sexo',
'class' => 'only-number',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['nacionalidad'] = array( 'name' => 'data[nacionalidad]',
'id' => 'nacionalidad',
'class' => 'only-number',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['email'] = array( 'name' => 'data[email]',
'id' => 'email',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['telefono'] = array( 'name' => 'data[telefono]',
'id' => 'telefono',
'class' => 'only-number',
'maxlength' => '45',
'size' => '45',
'style' => '');
$data['direccion'] = array( 'name' => 'data[direccion]',
'id' => 'direccion',
'class' => '',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['estado_civil'] = array( 'name' => 'data[estado_civil]',
'id' => 'estado_civil',
'class' => 'only-number',
'maxlength' => '45',
'size' => '45',
'style' => '');
$data['profesion'] = array( 'name' => 'data[profesion]',
'id' => 'profesion',
'class' => 'only-number',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['fecha_contratacion'] = array( 'name' => 'data[fecha_contratacion]',
'id' => 'fecha_contratacion',
'class' => 'date',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['tipo_contrato'] = array( 'name' => 'data[tipo_contrato]',
'id' => 'tipo_contrato',
'class' => 'only-number',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['observaciones'] = array( 'name' => 'data[observaciones]',
'id' => 'observaciones',
'class' => '',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['foto'] = array( 'name' => 'data[foto]',
'id' => 'foto',
'class' => 'only-number',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['username'] = array( 'name' => 'data[username]',
'id' => 'username',
'class' => 'only-number',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['password'] = array( 'name' => 'data[password]',
'id' => 'password',
'class' => 'only-number',
'maxlength' => '245',
'size' => '245',
'style' => '');
$data['remember_token'] = array( 'name' => 'data[remember_token]',
'id' => 'remember_token',
'class' => 'only-number',
'maxlength' => '445',
'size' => '445',
'style' => '');
$data['form_open'] = array('class' => 'form_mant form_trabajadores',
'id' => 'form_trabajadores' );
$data['current_trabajadores'] = 'current';
$data['title'] = 'Gestión Trabajadores - Crear';
$data['breadcrumb'] = 'Crear Trabajadores';
$data["mensaje_error"] = $this->session->flashdata("mensaje_error");
$data['main_content'] = 'mantenedores/mantenedor_trabajadores_crear_view';
$this->load->view(LAYOUT, $data);
}
function trabajadores_editar($trabajadores_id)
{
$post = $this->input->post();
if(!empty($post))
{
$data = $this->input->post('data');
// if($data['ayudante_jefe_id'] == 0){
// $data['ayudante_jefe_id'] = null;
// }
$id = $this->mantenedor_general_model->actualizar($data['id'], $data, 'trabajadores');
$error = $this->db->_error_number();
if($error == 1452)
{
$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco la información de ");
redirect('dashboard/trabajadores/'.$data['id'].'/edit');
}
else
{
redirect('dashboard/trabajadores/'.$data['id'].'/view');
}
}
$data['button'] = array( 'name' => 'continuar',
'id' => 'continuar',
'value' => 'Continuar',
'class' => 'btn-mant btn btn-small btn-primary',
'type' => 'submit',
'content' => ' Continuar ');
$data['proveedor_id'] = array( 'name' => 'data[proveedor_id]',
'id' => 'proveedor_id',
'class' => 'only-number',
'maxlength' => '11',
'size' => '11',
'style' => '');
$data['gerencia_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('gerencia', 'nombre'), 'id', 'nombre');
$data['centros_costos_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('centros_costos', 'nombre'), 'id', 'nombre');
// $data['unidades_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('unidades', 'nombre'));
// $data['cargos_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('cargos', 'nombre'));
// $data['sucursales_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('sucursales', 'nombre'));
// $data['perfiles_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('perfiles', 'nombre'));
// $data['trabajadores_nombre'] = $this->prepara_dropdown($this->mantenedor_general_model->traer_tabla('trabajadores', 'nombres'));
unset($result);
$trabajadores = get_result_by_where('trabajadores',array('es_jefe'=> TRUE), 'id, nombres, apellido_p', array('nombres'=>'ASC'));
$result["0"] = "Seleccione";
foreach ($trabajadores as $key => $value)
{
$result[$value->id] = $value->nombres.' '.$value->apellido_p;
}
$data['trabajadores_jefes'] = $result;
$data['nombres'] = array( 'name' => 'data[nombres]',
'id' => 'nombres',
'class' => '',
'maxlength' => '245',
'size' => '245',
'style' => '');
$data['apellido_p'] = array( 'name' => 'data[apellido_p]',
'id' => 'apellido_p',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['apellido_m'] = array( 'name' => 'data[apellido_m]',
'id' => 'apellido_m',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['fecha_nacimiento'] = array( 'name' => 'data[fecha_nacimiento]',
'id' => 'fecha_nacimiento',
'class' => 'date',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['sexo'] = array( 'name' => 'data[sexo]',
'id' => 'sexo',
'class' => '',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['nacionalidad'] = array( 'name' => 'data[nacionalidad]',
'id' => 'nacionalidad',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['email'] = array( 'name' => 'data[email]',
'id' => 'email',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['telefono'] = array( 'name' => 'data[telefono]',
'id' => 'telefono',
'class' => 'only-number',
'maxlength' => '45',
'size' => '45',
'style' => '');
$data['direccion'] = array( 'name' => 'data[direccion]',
'id' => 'direccion',
'class' => '',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['estado_civil'] = array( 'name' => 'data[estado_civil]',
'id' => 'estado_civil',
'class' => '',
'maxlength' => '45',
'size' => '45',
'style' => '');
$data['profesion'] = array( 'name' => 'data[profesion]',
'id' => 'profesion',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['fecha_contratacion'] = array( 'name' => 'data[fecha_contratacion]',
'id' => 'fecha_contratacion',
'class' => 'date',
'maxlength' => '10',
'size' => '10',
'style' => '');
$data['tipo_contrato'] = array( 'name' => 'data[tipo_contrato]',
'id' => 'tipo_contrato',
'class' => '',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['observaciones'] = array( 'name' => 'data[observaciones]',
'id' => 'observaciones',
'class' => '',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['foto'] = array( 'name' => 'data[foto]',
'id' => 'foto',
'class' => 'only-number',
'maxlength' => '545',
'size' => '545',
'style' => '');
$data['username'] = array( 'name' => 'data[username]',
'id' => 'username',
'class' => 'only-number',
'maxlength' => '145',
'size' => '145',
'style' => '');
$data['password'] = array( 'name' => 'data[password]',
'id' => 'password',
'class' => '',
'maxlength' => '245',
'size' => '245',
'style' => '');
$data['remember_token'] = array( 'name' => 'data[remember_token]',
'id' => 'remember_token',
'class' => '',
'maxlength' => '445',
'size' => '445',
'style' => '');
$data['ficha'] = $this->mantenedor_general_model->traer_ficha($trabajadores_id, 'trabajadores');
$data['form_open'] = array('class' => 'form_mant form_trabajadores',
'id' => 'form_trabajadores' );
$data['hidden'] = array('data[id]' => $trabajadores_id);
$data['current_trabajadores'] = 'current';
$data["mensaje_error"] = $this->session->flashdata("mensaje_error");
$data['title'] = 'Gestión Trabajadores - Editar';
$data['breadcrumb'] = 'Editar Trabajadores';
$data['main_content'] = 'mantenedores/mantenedor_trabajadores_editar_view';
$this->load->view(LAYOUT, $data);
}
function trabajadores_ficha($trabajadores_id)
{
$data['ficha'] = $this->mantenedor_general_model->traer_ficha($trabajadores_id, 'trabajadores');
$data['ficha']->centros_costos_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->centros_costos_id, 'centros_costos', 'nombre');
$data['ficha']->unidades_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->unidades_id, 'unidades', 'nombre');
$data['ficha']->cargos_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->cargo_id, 'cargos', 'nombre');
$data['ficha']->trabajadores_nombre = $this->mantenedor_general_model->traer_nombre($data['ficha']->jefe_id, 'trabajadores', 'nombres');
$data['current_trabajadores'] = 'current';
$data["mensaje_error"] = $this->session->flashdata("mensaje_error");
$data['title'] = 'Gestión Trabajadores - Ficha';
$data['breadcrumb'] = 'Ficha Trabajadores';
$data['main_content'] = 'mantenedores/mantenedor_trabajadores_ficha_view';
$this->load->view(LAYOUT, $data);
}
function trabajadores_listar()
{
$data['buscar'] = array(
'name' => 'buscar',
'id' => 'buscar',
'maxlength' => '145',
'size' => '50',
);
$data['form_open'] = array('class' => 'form_mant form_trabajadores',
'id' => 'form_trabajadores' );
$data['ficha'] = $this->db->query(
"SELECT
t.*, u.nombre AS unidades_nombre, c.nombre AS cargos_nombre, cs.nombre AS centro_costo
FROM trabajadores t
LEFT JOIN unidades u ON t.unidades_id = u.id
LEFT JOIN cargos c ON t.cargo_id = c.id
LEFT JOIN centros_costos cs ON t.centros_costos_id = cs.id
WHERE t.centros_costos_id != 0
"
)->result();
$data['current_trabajadores'] = 'current';
$data['hidden'] = array('flag' => 1);
$data["mensaje_error"] = $this->session->flashdata("mensaje_error");
$data['title'] = 'Gestión Trabajadores - Listar';
$data['breadcrumb'] = 'Listar Trabajadores';
$data['main_content'] = 'mantenedores/mantenedor_trabajadores_listar_view';
$this->load->view(LAYOUT, $data);
}
function eliminar_trabajadores($trabajadores_id)
{
$this->mantenedor_general_model->eliminar($trabajadores_id, 'trabajadores');
$error = $this->db->_error_number();
if($error == 1451)
{
$this->session->set_flashdata("mensaje_error", "No se puede eliminar, hay referencias a este registro");
}
redirect('dashboard/trabajadores/list');
}
function cambiar_password($usuarios_id)
{
$flag = $this->input->post('flag');
if($flag == 1)
{
$data = $this->input->post('data');
if(empty($data['password']) && empty($data['password_confirm']))
{
$this->session->set_flashdata("mensaje_error", "No puede dejar en blanco los campos.");
redirect('dashboard/trabajadores/password/'.$data['id']);
}
if ($data['password'] == $data['password_confirm']) {
unset($data["password_confirm"]);
$data["password"] = sha1($data["password"]);
$this->mantenedor_general_model->actualizar($data['id'], $data, 'trabajadores');
$error = $this->db->_error_number();
if (!$error) {
redirect('dashboard/trabajadores/'.$data['id'].'/view');
}
} else {
$this->session->set_flashdata("mensaje_error", "Las contraseñas no coinciden.");
redirect('dashboard/trabajadores/password/'.$data['id']);
}
}
$data['button'] = array( 'name' => 'continuar',
'id' => 'continuar',
'value' => 'Guardar',
'class' => 'btn-mant btn btn-small btn-primary',
'type' => 'submit',
'content' => ' Guardar ');
$data['password'] = array( 'name' => 'data[password]',
'id' => 'password',
'class' => 'form-control',
'maxlength' => '45',
'size' => '45',
'style' => '',
'type' => 'password');
$data['password_confirm'] = array( 'name' => 'data[password_confirm]',
'id' => 'password_confirm',
'class' => 'form-control',
'maxlength' => '45',
'size' => '45',
'style' => '',
'type' => 'password');
$data['ficha'] = $this->mantenedor_general_model->traer_ficha($usuarios_id, 'trabajadores');
$data['form_open'] = array('class' => 'form_mant form_staff',
'id' => 'form_staff' );
$data['hidden'] = array( 'flag' => 1,
'data[id]' => $usuarios_id);
$data['current_staff'] = 'active';
$data["mensaje_error"] = $this->session->flashdata("mensaje_error");
$data['title'] = 'Gestión Trabajadores - Cambiar Contraseña';
$data['breadcrumb'] = 'Cambiar Contraseña';
$data['main_content'] = 'mantenedores/mantenedor_trabajadores_password_view';
$this->load->view(LAYOUT, $data);
}
private function prepara_dropdown($data, $id=null, $nombre=null)
{
if(empty($id)){
$id = 'id';
}
if(empty($id)){
$nombre = 'nombre';
}
$result["seleccione"] = "Seleccione";
foreach ($data as $value)
{
$result[$value->$id] = $value->$nombre;
}
return $result;
}
}