<?php
class Administracion extends CI_Controller
{
    private $_template;
    protected $_fechaActual;
    protected $_iduser;
    protected $_csstyle;
    protected $_Variables;
	protected $idLicencia;
	protected $idRol;

    function __construct()
	{
		parent::__construct();
		
		//verificar si el el usuario ha iniciado sesion
		if( ! $this->redux_auth->logged_in() )
		{
			redirect(base_url().'login');
		}
		
		 $this->config->load('js',TRUE);
		 $this->config->load('style', TRUE);
		 
        $this->_fechaActual 	= mdate("%Y-%m-%d %H:%i:%s",now());
        $this->_iduser 			= $this->session->userdata('id');
        $this->_csstyle 		= $this->config->item('style');
  	    $this->_jss				= $this->config->item('js');
		
		$this->idLicencia 		= $this->session->userdata('idLicencia');
		$this->idRol			= $this->session->userdata('rol');
		
		$this->load->model("modelousuario","usuarios");
   	    $this->load->model("modeloclientes","clientes");
		$this->load->model("produccion_modelo","produccion");
		$this->load->model("materiales_modelo","materiales");
	    $this->load->model("proveedores_model","proveedores");
		$this->load->model("inventario_model","inventario");
        $this->load->model("bancos_model","bancos");
		$this->load->model("modelo_configuracion","configuracion");
		$this->load->model("administracion_modelo","administracion");
    }
	
	public function reporteBancos($limite=0)
	{
		$this->load->view('administracion/reporteBancos');
	}
	
	#public function buscarPersonal($idPersonal)
	#{
		
	#}
	
	public function recursosHumanos($idPersonal=0,$limite=0)
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		=$this->_csstyle["cassadmin"];
		$Data['csmenu']			=$this->_csstyle["csmenu"];
		$Data['csvalidate']		=$this->_csstyle["csvalidate"];
		$Data['csui']			=$this->_csstyle["csui"];
		$Data['nameusuario']	=$this->usuarios->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	=$this->_fechaActual;
		$Data['Jry']			=$this->_jss['jquery'];
		$Data['jFicha_cliente']	=$this->_jss['jFicha_cliente']; 
		$Data['Jquical']		=$this->_jss['jquerycal'];
		$Data['Jqui']			=$this->_jss['jqueryui'];   
		#$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['permisos']		=$this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		='recursosHumanos';   
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);
		
		#----------------------------------PERMISOS------------------------------------#

		$data['permiso']=$this->configuracion->obtenerPermisosId('1',$this->session->userdata('rol'));
		
		if($data['permiso']->leer=='0' and $data['permiso']->escribir=='0')
		{
			$this->load->view('accesos/index');
			$this->load->view("pie",$Data);
			
			return;
		}
		
		if($this->idLicencia!=1)
		{
			$this->load->view('accesos/index');
			$this->load->view("pie",$Data);
			return;

		}
				
		#----------------------------------PAGINACION------------------------------------#
		$url		= base_url()."administracion/recursosHumanos/".$idPersonal.'/';
		$registros	= $this->administracion->contarPersonal($idPersonal);
		$numero		= 20;
		$links		= 5;
		$uri		= 4;
		
		$paginador=$this->paginas->paginar($url,$registros,$numero,$links,$uri);
		$this->pagination->initialize($paginador);
		#---------------------------------------------------------------------------------#
		
		$data['personal']		= $this->administracion->obtenerPersonal($idPersonal,$numero,$limite);
		
		$data['permisoEditarPersonal']	= $this->idRol!=1?$this->configuracion->comprobarPermisoAsignado($this->_iduser,33):1;
		$data['permisoBorrarPersonal']	= $this->idRol!=1?$this->configuracion->comprobarPermisoAsignado($this->_iduser,34):1;
		
		$data['inicio']  		= $limite+1;

		$this->load->view("recursos/index",$data);
		$this->load->view("pie",$Data);
	}
	
	public function generarTarjeta($idPersonal=0)
	{
		$data['personal'] 		= $this->administracion->obtenerRegistroPersonal($idPersonal);
		
		$this->load->view('recursos/generarTarjeta',$data);
	}
	
	public function guardarImagenTarjeta()
	{
		file_put_contents("img/personal/".$this->input->post('numeroEmpleado').".bmp",file_get_contents($this->input->post('tarjeta')));
	}
	
	public function tarjetaPersonal($idPersonal=0)
	{
		set_time_limit(0); 
		ini_set("memory_limit","1500M");

		$this->load->library('mpdf/mpdf');

		$data['personal'] 		= $this->administracion->obtenerRegistroPersonal($idPersonal);
		$data['reporte']		= 'recursos/tarjetaPersonal';

		$html	=$this->load->view('reportes/principal',$data,true);

		$this->mpdf->mPDF('en-x','A7-L','','',8,0,8,0,0,0);
		$this->mpdf->SetHTMLFooter($pie);
		$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins 		= 1;
		$this->mpdf->useSubstitutions	= true; 
		$this->mpdf->simpleTables 		= true;
		$this->mpdf->packTableData 		= true;
		#$this->cacheTables 				= true;
		#$this->packTableData 			= true;    // required for cacheTables
		#$this->simpleTables 			= false;  // Cannot co-exist with cacheTables
		
		$this->mpdf->WriteHTML($html);
		#$this->mpdf->Output('media/ficheros/reporteVentas.pdf','F');
		$this->mpdf->Output();

		#echo 'reporteVentas';
	}


	

	
	public function formularioPersonal()
	{
		$data['licencias']	= $this->configuracion->obtenerLicenciasFirestone(0,0,0);
		
		$this->load->view("recursos/formularioPersonal",$data);
	}
	
	public function obtenerPersonal()
	{
		$idPersonal				= $this->input->post('idPersonal');
		$data['personal']		= $this->administracion->obtenerRegistroPersonal($idPersonal);
		$data['departamentos']	= $this->administracion->obtenerDepartamentos();
		$data['puestos']		= $this->administracion->obtenerPuestos();
		$data['licencias']		= $this->configuracion->obtenerLicenciasFirestone(0,0,0);
				
		$this->load->view("recursos/obtenerPersonal",$data);
	}
	
	public function borrarPersonal($idPersonal)
	{
	  $personal=$this->administracion->borrarPersonal($idPersonal);
		
		$personal==1?
			$this->session->set_userdata('notificacion','El personal se ha borrar correctamente'):
			$this->session->set_userdata('errorNotificacion','Error al borrar al personal');
			
		redirect('administracion/recursosHumanos');
	}
	
	public function agregarPersonal()
	{
		if(!empty($_POST))
		{
			$personal = $this->administracion->agregarPersonal();
			
			$personal==1?
				$this->session->set_userdata('notificacion','El personal se ha agregado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al agregar al personal');
				
			redirect('administracion/recursosHumanos');
		}
	}
	
	public function editarPersonal()
	{
		if(!empty($_POST))
		{
			$personal=$this->administracion->editarPersonal();
			
			$personal==1?
				$this->session->set_userdata('notificacion','El personal se ha editado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al editar al personal, el registro no tuvo cambios');
				
			redirect('administracion/recursosHumanos');
		}
	}
	
	public function obtenerDepartamentos()
	{
		$departamentos=$this->administracion->obtenerDepartamentos();
		
		echo'
		<select class="cajas" id="selectDepartamentos" name="selectDepartamentos" style="width:290px">
			<option value="0">Seleccione</option>';
			
			foreach($departamentos as $row)
			{
				echo'<option value="'.$row->idDepartamento.'">'.$row->nombre.'</option>';	
			}
			
		echo'</select>';
	}
	
	public function formularioDepartamentos()
	{
		echo'
		<div class="ui-state-error" ></div>
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre</td>
				<td>
					<input type="text" style="width:280px" class="cajas" id="txtNombreDepartamento" />
				</td>
			</tr>
		</table>';
	}
	
	public function agregarDepartamento()
	{
		if(!empty($_POST))
		{
			$departamento=$this->administracion->agregarDepartamento();
			echo $departamento;
		}
	}
	
	public function obtenerPuestos()
	{
		$puestos=$this->administracion->obtenerPuestos();
		
		echo'
		<select class="cajas" id="selectPuestos" name="selectPuestos" style="width:290px">
			<option value="0">Seleccione</option>';
			
			foreach($puestos as $row)
			{
				echo'<option value="'.$row->idPuesto.'">'.$row->nombre.'</option>';	
			}
			
		echo'</select>';
	}
	
	public function formularioPuestos()
	{
		echo'
		<div class="ui-state-error" ></div>
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre</td>
				<td>
					<input type="text" style="width:280px" class="cajas" id="txtNombrePuesto" />
				</td>
			</tr>
		</table>';
	}
	
	public function agregarPuesto()
	{
		if(!empty($_POST))
		{
			$puesto=$this->administracion->agregarPuesto();
			echo $puesto;
		}
	}
	
	public function obtenerPuesto()
	{
		$idPuesto	=$this->input->post('idPuesto');
		$puesto		=$this->administracion->obtenerPuesto($idPuesto);
		
		echo'
		<div class="ui-state-error" ></div>
		<table class="admintable" width="100%">
			<tr>
				<td class="key">Nombre</td>
				<td>
					<input type="hidden" id="txtIdPuesto" value="'.$idPuesto.'" />
					<input type="text" style="width:280px" class="cajas" id="txtNombrePuesto" value="'.$puesto->nombre.'" />
				</td>
			</tr>
		</table>';
	}
	
	public function editarPuesto()
	{
		if(!empty($_POST))
		{
			$puesto=$this->administracion->editarPuesto();
			echo $puesto;
		}
	}
	
	public function borrarPuesto($idPuesto)
	{
		#----------------------------------PERMISOS------------------------------------#
		$data['permiso']=$this->configuracion->obtenerPermisosId('19',$this->session->userdata('rol'));
		
		if($data['permiso']->escribir=='0')
		{
			redirect('principal/permisosUsuario','refresh');
			return;
		}
		
		$puesto=$this->administracion->borrarPuesto($idPuesto);
		
		$puesto=="1"?
				$this->session->set_userdata('notificacion','El puesto se ha borrado correctamente'):
				$this->session->set_userdata('errorNotificacion','Error al borrar el puesto, esta asociado al personal');
				
		redirect('configuracion/catalogosContables','refresh');
	}
	
	//PARA LOS COMPROBANTES
	public function obtenerComprobantes()
	{
		$idIngreso			= $this->input->post('idIngreso');
		$data['ficheros']	= $this->administracion->obtenerComprobantes($idIngreso);
		$data['idIngreso']	= $idIngreso;
		
		$this->load->view('administracion/ingresos/obtenerComprobantes',$data);
	}
	
	//PARA LOS COMPROBANTES DE EGRESOS
	public function borrarComprobante()
	{
		if(!empty($_POST))
		{
			echo $this->administracion->borrarComprobante($this->input->post('idComprobante'));
		}
		else
		{
			echo "0";
		}
	}
	
	//PARA LOS COMPROBANTES DE EGRESOS
	public function borrarComprobanteEgreso()
	{
		if(!empty($_POST))
		{
			$idComprobante		=$this->input->post('idComprobante');
			$comprobante		=$this->administracion->borrarComprobanteEgreso($idComprobante);
			
			echo $comprobante;
		}
	}
	
	public function obtenerComprobantesEgresos()
	{
		$idEgreso			= $this->input->post('idEgreso');
		$data['ficheros']	= $this->administracion->obtenerComprobantesEgresos($idEgreso);
		$data['idEgreso']	= $idEgreso;
		
		$this->load->view('administracion/egresos/obtenerComprobantesEgresos',$data);
	}
	
	public function poliza($idEgreso)
	{
		$this->load->library('mpdf/mpdf');
		$this->load->library('ccantidadletras');
		
		$data['egreso']		= $this->administracion->obtenerEgresoEditar($idEgreso);
		$data['nombre']		= $this->configuracion->obtenerNombre($data['egreso']->idNombre);
		$data['reporte']	= 'reportes/poliza/poliza';
		
		$this->ccantidadletras->setIdioma("ES");
        $this->ccantidadletras->setNumero($data['egreso']->pago);
		$this->ccantidadletras->setMoneda("pesos");
		$data['cantidadLetras']	=$this->ccantidadletras->PrimeraMayuscula();
		
		$html	= $this->load->view('reportes/poliza/principal',$data,true);
		
		$this->mpdf->mPDF('en-x','Letter','','',1,1,10,10,2,0);
		#$this->mpdf->SetHTMLFooter($pie);
		#$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		$this->mpdf->Output();
	}
	
	public function recibo($idEgreso)
	{
		ini_set("memory_limit","1500M");
		set_time_limit(0); 
		
		$this->load->library('mpdf/mpdf');

		$data['egreso']		=$this->administracion->obtenerEgresoEditar($idEgreso);
		$data['reporte'] 	= 'reportes/recibo/recibo';

		$html=$this->load->view('reportes/principal',$data,true);

		
		$this->mpdf->mPDF('en-x','Letter','','',10,10,10,47,2,0);
		#$this->mpdf->SetHTMLFooter($pie);
		#$this->mpdf->SetHTMLFooter($pie,'E');
		$this->mpdf->mirrorMargins = 1;
		$this->mpdf->WriteHTML($html);
		$this->mpdf->Output();
	}
	
	public function sugerirPrecios()
	{
		$iva	=$this->session->userdata('iva');
		$precioA=$this->input->post('precioA');
		$precioB=$this->input->post('precioB');
		$precioC=$this->input->post('precioC');
		$precioD=$this->input->post('precioD');
		$precioE=$this->input->post('precioE');
		
		$iva=$iva/100;
		
		$precioA	=$precioA+($precioA*$iva);
		$precioB	=$precioB+($precioB*$iva);
		$precioC	=$precioC+($precioC*$iva);
		$precioD	=$precioD+($precioD*$iva);
		$precioE	=$precioE+($precioE*$iva);
		
		echo '
		<select class="cajas" id="txtImporte" name="txtImporte" style="width:120px">
			<option value="'.$precioA.'">$'.number_format($precioA,2).'</option>
			<option value="'.$precioB.'">$'.number_format($precioB,2).'</option>
			<option value="'.$precioC.'">$'.number_format($precioC,2).'</option>
			<option value="'.$precioD.'">$'.number_format($precioD,2).'</option>
			<option value="'.$precioE.'">$'.number_format($precioE,2).'</option>
		</select>';
	}
	
	public function sugerirPrecioMaterial()
	{
		$precio	=$this->input->post('precio');
		
		echo '<input type="text" class="cajas" id="txtImporte" value="'.number_format($precio,2).'" />';
	}
	
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	//HORARIOS DE PERSONAL
	//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
	public function obtenerHorarios()
	{
		$idPersonal				= $this->input->post('idPersonal');
		$data['horarios']		= $this->administracion->obtenerHorarios($idPersonal);
		$data['personal']		= $this->administracion->obtenerRegistroPersonal($idPersonal);
		#$data['permiso']		= $this->configuracion->obtenerPermisosBoton('50',$this->session->userdata('rol'));
		
		$this->load->view("recursos/horarios/obtenerHorarios",$data);
	}
	
	public function registrarHorario()
	{
		if(!empty($_POST))
		{
			echo json_encode($this->administracion->registrarHorario());
		}
		else
		{
			echo json_encode(array(0=>'0'));
		}
	}
	
	public function editarHorario()
	{
		if(!empty($_POST))
		{
			echo json_encode($this->administracion->editarHorario());
		}
		else
		{
			echo json_encode(array(0=>'0'));
		}
	}
	
	public function borrarHorario()
	{
		if(!empty($_POST))
		{
			echo json_encode($this->administracion->borrarHorario($this->input->post('idHorario')));
		}
		else
		{
			echo json_encode(array(0=>'0'));
		}
	}
	
	//CHECADOR
	
	public function checador()
	{
		$Data['title']			= "Panel de Administración";
		$Data['cassadmin']		= $this->_csstyle["cassadmin"];
		$Data['csmenu']			= $this->_csstyle["csmenu"];
		$Data['csvalidate']		= $this->_csstyle["csvalidate"];
		$Data['csui']			= $this->_csstyle["csui"];
		$Data['nameusuario']	= $this->usuarios->getUsuarios($this->_iduser);
		$Data['Fecha_actual']	= $this->_fechaActual;
		$Data['Jry']			= $this->_jss['jquery'];
		$Data['jFicha_cliente']	= $this->_jss['jFicha_cliente']; 
		$Data['Jquical']		= $this->_jss['jquerycal'];
		$Data['Jqui']			= $this->_jss['jqueryui'];   
		$Data['permisos']		= $this->configuracion->obtenerRolPermisos($this->session->userdata('rol'));
		$Data['menuActivo']		= 'checador';   
		
		$this->load->view("cabezera",$Data);
		$this->load->view('header',$Data);
		$this->load->view("principal",$Data);

		#$data['personal']		= $this->administracion->obtenerPersonal($idPersonal,$numero,$limite);
		$data['inicio']  		= 1;

		$this->load->view("recursos/checador",$data);
		$this->load->view("pie",$Data);
	}
	
	public function obtenerInformacionPersonal()
	{
		$numeroEmpleado			= $this->input->post('numeroEmpleado');	
		
		$data['personal']		= $this->administracion->obtenerRegistroPersonalChequeo($numeroEmpleado);
		$data['chequeo']		= $this->administracion->obtenerRegistroChequeo($data['personal']!=null?$data['personal']->idPersonal:0);
		$data['horario']		= $this->administracion->obtenerHorarioDia($data['personal']!=null?$data['personal']->idPersonal:0);
		
		$this->load->view("recursos/obtenerInformacionPersonal",$data);
	}
	
	public function registrarChequeo()
	{	
		if(!empty($_POST))
		{
			echo $this->administracion->registrarChequeo();	
		}
		else
		{
			echo "0";
		}
	}
	
	public function obtenerAsistencias()
	{
		$data['asistencias']	=$this->administracion->obtenerAsistenciasHoy();
		
		$this->load->view("recursos/obtenerAsistencias",$data);
	}
}
?>