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>";
}
}
}