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/LoadController.php
<?php
class LoadController extends CI_Controller
{

	function  __construct()
	{
		parent::__construct();
		$this->load->helper(array('model', 'form_helper', 'validar', 'load_movements'));
		$this->load->library('session', 'general');
		$this->load->model(array('admin_model'));
		$this->load->library('excel');
		include('httpful.phar');
		define("STAFF_ID", '' . $this->session->userdata('rt_staff') . '');
		ini_set('max_execution_time', 0);
		ini_set('memory_limit', '1024M');
		valida_sesion($this->session->userdata('token_usuario'));
		//error_reporting(E_ALL);
	}

	function index($value = '')
	{
		//$object = PHPExcel_IOFactory::load($path);
		$data["mensaje_error"]   = $this->session->flashdata("mensaje_error");
		$data['title'] = 'Carga de movimientos reloj control';
		$data['main_content'] = 'load/index_view';
		$this->load->view('shared/layout', $data);
	}

	function carga_movimientos_reloj()
	{
		$data["mensaje_error"]   = $this->session->flashdata("mensaje_error");
		$data['title'] = 'Carga de movimientos reloj control';
		$data['main_content'] = 'load/carga_movimientos_reloj_view';
		$this->load->view('shared/layout', $data);
	}

	function load_excel_movimientos($value = '')
	{
		if (!empty($_FILES['excel']['tmp_name']) || $_FILES['excel']['size'] > 0) {
			date_default_timezone_set('UTC');
			$object = PHPExcel_IOFactory::load($_FILES['excel']['tmp_name']);
			$errores = [];
			$ok = 0;

			foreach ($object->getWorksheetIterator() as $worksheet) {
				$highestRow = $worksheet->getHighestRow();
				$highestColumn = $worksheet->getHighestColumn();

				for ($row = 2; $row <= $highestRow; $row++) {
					$rowData = $worksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE)[0];

					$excel_data = map_excel_data($rowData);

					$rut = str_replace('.', '', $excel_data['rut']);
					$trabajador = get_or_create_trabajador($rut, $excel_data['nombre_apellido']);

					$fecha = date("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($excel_data['fecha']));
					$where = ['rut' => $rut, 'fecha' => $fecha];
					$movimiento = get_row_by_where('movimientos_reloj', $where);
					if (!$movimiento) {
						$insert = prepare_insert_data($trabajador->id, $excel_data, $fecha);
						insert('movimientos_reloj', $insert);
						$ok++;
					} else {
						$errores[] = $where;
					}
				}
			}
			echo "Se insertaron $ok registros - Errores encontrados " . count($errores) . " ";
		} else {
			echo "<span class='text-danger'><b>No se encontrĂ³ archivo a cargar</b></span>";
		}
	}



	function carga_registros_invalidos()
	{
		$data["mensaje_error"]   = $this->session->flashdata("mensaje_error");
		$data['title'] = 'Carga de registros invalidos';
		$data['main_content'] = 'load/carga_registros_invalidos_view';
		$this->load->view('shared/layout', $data);
	}

	function load_excel_registros_invalidos($value = '')
	{
		if (!empty($_FILES['excel']['tmp_name']) || $_FILES['excel']['size'] > 0) {
			date_default_timezone_set('UTC');
			$object = PHPExcel_IOFactory::load($_FILES['excel']['tmp_name']);
			foreach ($object->getWorksheetIterator() as $worksheet) {
				$highestRow = $worksheet->getHighestRow();
				$highestColumn = $worksheet->getHighestColumn();
				$errores = array();
				$ok = 0;
				for ($row = 2; $row <= $highestRow; $row++) {
					/*COLUMNAS EXCEL Reloj.xsl
				0	:	RUT
				1	:	Nombre
				2	:	Departamento
				3	:	Reloj
				4	:	Fecha/Hora
				5	:	Tipo registro
				*/

					//$row = $worksheet->getCellByColumnAndRow(0, $row)->getValue();
					$rowData = $worksheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE)[0];

					$rut = str_replace('.', '', $rowData[0]);
					$rut = substr($rut, 0, -1) . '-' . substr($rut, -1);
					$trabajador = get_row_by_where('trabajadores', ['rut' => $rut]);
					$nombre = str_replace('.', '', $rowData[1]);
					$departamento = str_replace('.', '', $rowData[2]);
					$reloj = str_replace('.', '', $rowData[3]);
					$fecha = date("Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($rowData[4]));
					$hora = date("H:i:00", PHPExcel_Shared_Date::ExcelToPHP($rowData[4]));
					$tipo_registro = str_replace('.', '', $rowData[5]);
					$where = array();
					$where['rut'] = $rut;
					$where['fecha'] = $fecha;
					$where2 = $where;
					$where2['tipo_registro'] = $tipo_registro;
					$registro = get_row_by_where('registros_invalidos', $where2);
					if ($tipo_registro == "Salida") {
						$where['salida'] = '00:00:00';
					} elseif ($tipo_registro == "Entrada") {
						$where['entrada'] = '00:00:00';
					}
					//$movimiento = get_row_by_where('movimientos_reloj', $where);
					//if(!empty($movimiento) && empty($registro)){
					if (empty($registro)) {
						/*$formato = 'Y-m-d H:i:s';
					if ($tipo_registro == "Salida"){
						$set['salida_correcta'] = $hora;
						$set['campo_invalido'] = "Salida invalida";
						$row_salida = $rowData[4];
						$hora_salida = date("H:i:00", PHPExcel_Shared_Date::ExcelToPHP($row_salida));
						$hora_salida = DateTime::createFromFormat($formato, '2009-02-15 '.$hora_salida);
						$hora_entrada = $movimiento->entrada != '00:00:00' ? $movimiento->entrada : $descanso_salida;
						$hora_entrada = DateTime::createFromFormat($formato, '2009-02-15 '.$hora_entrada);
					}elseif($tipo_registro == "Entrada"){
						$set['entrada_correcta'] = $hora;
						$set['campo_invalido'] = "Entrada invalida";
						$row_entrada = $rowData[4];
						$hora_entrada = date("H:i:00", PHPExcel_Shared_Date::ExcelToPHP($row_entrada));
						$hora_entrada = DateTime::createFromFormat($formato, '2009-02-15 '.$hora_entrada);
						$hora_salida = $movimiento->salida != '00:00:00' ? $movimiento->salida : $descanso_entrada;
						$hora_salida = DateTime::createFromFormat($formato, '2009-02-15 '.$hora_salida);
					}
					$minuto_descanso = $movimiento->minutos_descanso;
					$diferencia = $hora_entrada->diff($hora_salida);
					$minutos_trabajados = $diferencia->h * 60 + $diferencia->i;
					$minutos_totales = $minutos_trabajados - $minutos_descanso;
					$horas = floor($minutos_totales / 60);
					$minutos = $minutos_totales % 60;
					$set['total_jornada_efectiva'] = sprintf("%02d:%02d:00", $horas, $minutos);
						
					update_row('movimientos_reloj', $set, $movimiento->id);*/
						$insert['trabajador_id'] = $trabajador->id;

						//
						$insert['rut'] = $rut;
						$insert['nombre'] = $nombre;
						$insert['fecha'] = $fecha;
						$insert['hora'] = $hora;
						$insert['departamento'] = $departamento;
						$insert['reloj'] = $reloj;
						$insert['tipo_registro'] = $tipo_registro;
						insert('registros_invalidos', $insert);
						//pre($rowData);
						$ok++;
					} else {
						$errores[] = $where;
					}
				}
			}
			echo "Se insertaron $ok registros - Errores encontrados " . count($errores) . " ";
		} else {
			echo "<span class='text-danger'><b>No se encontrĂ³ archivo a cargar</b></span>";
		}
	}
}