HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux Bradford-Sitios 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: www-data (33)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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; 
	}
}