<?php
defined('BASEPATH') or exit('No direct script access allowed');

/**
 *
 * Helpers Funciones_helper
 *
 * This Helpers for ...
 *
 * @package   CodeIgniter
 * @category  Helpers
 * @author    Setiawan Jodi <jodisetiawan@fisip-untirta.ac.id>
 * @link      https://github.com/setdjod/myci-extension/
 *
 */

// ------------------------------------------------------------------------

if (!function_exists('guardar_log')) {

    function guardar_log($nombre_archivo = "", $texto = "", $echo = false, $tipo = 1)
    {
        $textoTipoLogico = "";
        if ($tipo == 1) {
            $textoTipoLogico = "INFO";
        } else if ($tipo == 2) {
            $textoTipoLogico = "ERROR";
        }

        //CREAMOS EL REGISTRO PARA EL LOG
        $registro = date('d-m-Y H:i:s') . ' - ' . $textoTipoLogico . " - " . $texto;

        //FICHERO DE LOG
        $file_name = APPPATH . 'logs/' . $nombre_archivo . '.txt';

        //GUARDAMOS EL REGISTRO EN EL FICHERO DE LOG
        $f = fopen($file_name, "a");
        fwrite($f, $registro . PHP_EOL);
        fclose($f);

        //SI ES NECESARIO SE MUESTRA POR PANTALLA
        if ($echo == true) {
            //echo $registro . '<br>';
        }

        return $texto . '<br>';
    }
}

if (!function_exists("insertBucle")) {
    function insertBucle($fila_archivo, $nombreTabla, $nombreLog): int
    {
        $contador = 1;

        $conjunto = array();

        $CI = &get_instance();

        foreach ($fila_archivo as $row) {

            $conjunto[] = $row;

            $contador++;

            if ($contador % 5000 == 0) {
                guardar_log($nombreLog, count($conjunto));
                $CI->db->insert_batch($nombreTabla, $conjunto);

                $conjunto = array();
            }
        }

        if (count($conjunto) > 0) {
            guardar_log($nombreLog, count($conjunto));
            $CI->db->insert_batch($nombreTabla, $conjunto);
        }

        gc_collect_cycles();
        /*$query = $this->db->query($sql);
        $result = $query->result();
        $query->free_result();*/

        return count($conjunto);
    }
}

if (!function_exists("insertBucleDuplicateOnKey")) {
    function insertBucleDuplicateOnKey($fila_archivo, $nombreTabla, $nombreLog)
    {
        $contador = 1;

        $conjunto = array();

        $CI = &get_instance();

        foreach ($fila_archivo as $row) {

            if ($nombreTabla == "bruto_datos_iniciales" || $nombreTabla == "maestro_datos_iniciales_licitacion") {
                if (is_array($row)) {
                    guardar_log($nombreLog, "ID_licitacion-" . $row['id_licitacion']);
                } else {
                    guardar_log($nombreLog, "ID_licitacion-" . $row->id_licitacion);
                }
            }

            $conjunto[] = $row;

            $contador++;

            if ($contador % 5000 == 0) {
                guardar_log($nombreLog, "Insertados - " . count($conjunto));
                //$CI->db->insert_batch($nombreTabla, $conjunto);
                $CI->db->insert_on_duplicate_update_batch($nombreTabla, $conjunto, $nombreLog);

                $conjunto = array();
            }
        }

        if (count($conjunto) > 0) {
            guardar_log($nombreLog, "Insertados - " . count($conjunto));
            //$CI->db->insert_batch($nombreTabla, $conjunto);
            $CI->db->insert_on_duplicate_update_batch($nombreTabla, $conjunto, $nombreLog);
        }
        unset($conjunto);
        gc_collect_cycles();
        return $CI->db->insert_id();
    }
}

if (!function_exists(("check_permisos_template"))) {
    function check_permisos_template($view_file_name, $data_array = array(), $vista_permiso = "home")
    {

        $CI = &get_instance();
        if ($CI->session->zonas != "") {
            $CI->load->model("Home_model");
            $vistas = $CI->Home_model->getPermisosVistaUsuario($CI->session->tipo_usuario);

            if ($CI->session->tipo_usuario == 1) {
                $CI->template_dashboard->load_template($view_file_name, $data_array);
            } else {
                if (in_array($vista_permiso, $vistas)) {
                    $CI->template_dashboard->load_template($view_file_name, $data_array);
                } else {
                    redirect("home");
                }
            }
        } else {
            redirect("login", "refresh");
        }
    }
}

if (!function_exists("pretty_dump")) {
    function pretty_dump($data)
    {
        echo '<pre>' . var_export($data, true) . '</pre>';
    }
}

if (!function_exists("enviarEmail")) {
    function enviarEmail($asunto, $body, $adjuntos = array(), $print_result = false)
    {
        $CI = &get_instance();
        $CI->load->model("Parser_model");

        $datosEmails = $CI->Parser_model->getDatosEmailEnvio();
        if ($datosEmails['num_rows'] > 0) {
            $userSmtp = $datosEmails['datos']->userSMTP;
            $passSMTP = $datosEmails['datos']->passSMTP;
            $emailToSend = $datosEmails['datos']->emailToSend;
            $hostname = $datosEmails['datos']->hostname;
            $port = $datosEmails['datos']->port;


            if (trim($userSmtp) && trim($passSMTP) && trim($emailToSend) && trim($hostname) && trim($port)) {

                try {
                    $CI = &get_instance();

                    $CI->load->library('email');

                    $config['protocol'] = 'smtp';
                    $config['smtp_host'] = $hostname;
                    $config['smtp_user'] = $userSmtp;
                    $config['smtp_pass'] = $passSMTP;
                    $config['smtp_crypto'] = 'ssl';
                    $config['smtp_port'] = $port;
                    $config['mailtype'] = 'html';
                    $config['wordwrap'] = 'TRUE';
                    $config['newline'] = "\r\n";
                    $config['priority'] = 5;
                    $config['crlf'] = "\r\n";

                    $CI->email->initialize($config);
                    $CI->email->clear(true);

                    $CI->email->from($userSmtp);
                    $CI->email->to($emailToSend);
                    $CI->email->subject($asunto);
                    $CI->email->message($body);

                    if ($adjuntos) {
                        foreach ($adjuntos as $row) {
                            $CI->email->attach($row);
                        }
                    }
                    if ($print_result) {
                        $CI->email->send(true);
                        $CI->email->print_debugger();
                    } else {
                        $CI->email->send(true);
                    }
                } catch (\Throwable $th) {
                    guardar_log("ErrorEnvioEmail_" . date("d-m-Y"), "Se ha producido un error al enviar el email de inicio y/o el excel", false, 2);
                }
            }
        }
    }
}
if (!function_exists("eliminarArchivosProcesoCompleto")) {
    function eliminarArchivosProcesoCompleto($ruta)
    {
        $files = glob($ruta . "/format/*");
        foreach ($files as $file) { // iterate files
            if (is_file($file)) {
                unlink($file); // delete file
            }
        }

        rmdir($ruta . "/format");
        rmdir($ruta);
    }
}

// ------------------------------------------------------------------------

/* End of file Funciones_helper.php */
/* Location: ./application/helpers/Funciones_helper.php */
