<?php

require_once "BASEPATH.php";
class NumerosGlobales extends MY_Controller
{
    public function trata(&$out, $arreglo, &$lastLinePrinted)
    {
        $llaves = array_keys($arreglo);
        //fputcsv($out,array_values($llaves));
        $llavesNoArreglos = array();
        for ($i = 0; $i < count($llaves); $i++) {
            if (!is_array($arreglo[$llaves[$i]])) {
                //$this->trata($out,$arreglo[$llaves[$i]]);
                $llavesNoArreglos[] = $llaves[$i];
            }
        }
        $temp = array();
        for ($i = 0; $i < count($llaves); $i++) {
            if (!is_array($arreglo[$llaves[$i]])) {
                $temp[] = $arreglo[$llaves[$i]];
            }
        }
        if (count($temp) > 0) {
            if ($llavesNoArreglos != $lastLinePrinted) {
                fputcsv($out, array_values($llavesNoArreglos));
                $lastLinePrinted = $llavesNoArreglos;
            }
            fputcsv($out, array_values($temp));
        }
        for ($i = 0; $i < count($llaves); $i++) {
            if (is_array($arreglo[$llaves[$i]])) {
                $temp2 = array();
                $temp2[0] = $llaves[$i];
                if (!is_numeric($temp2[0])) {
                    fputcsv($out, array_values($temp2));
                }

                $this->trata($out, $arreglo[$llaves[$i]], $lastLinePrinted);
            }
        }
    }
    public function addNumberGlobal()
    {
        $idioma = isset($_COOKIE["idioma"]) ? $_COOKIE["idioma"] : "es";
        switch ($idioma) {
            case "es":
                $this->lang->load('numerosglobales', "spanish");
                break;
            case "en":
                $this->lang->load('numerosglobales', "english");
                break;
            default:
                $this->lang->load('numerosglobales', "spanish");
                break;
        }
        include_once RUTA_APP . 'Conexion.php';
        if (!empty($_SESSION["Usuario"]) && ($_SESSION["Grupo"] == GRUPO_ADMINS || $_SESSION["Grupo"] == GRUPO_SUPERVISORES) && NEED_BL) {
            include_once RUTA_APP . 'Sesiones.php';
            $usuario = $_SESSION["Usuario"];
            $sal = array();
            $con = getConnection();
            $phone_number = limpia($_POST["numero"]);
            $query = "SELECT phone_number FROM  vicidial_dnc WHERE phone_number='$phone_number'";
            $result = sv_mysqli_query($con, $query);
            if (!($row = sv_mysqli_fetch_array($result))) {
                $phone_number = preg_replace('/[^0-9]/', '', $phone_number);
                if (strlen($phone_number) >= 6) {
                    $query = "INSERT INTO vicidial_dnc SET phone_number='$phone_number'";
                    sv_mysqli_query($con, $query);
                    $affected_rows = mysqli_affected_rows($con);
                    if ($affected_rows > 0) {
                        $sal["Estado"] = "ok";
                    } else {
                        $sal["Estado"] = "error";
                        $sal["Descripcion"] = $this->lang->line("desc_noAgregado");
                    }
                } else {
                    $sal["Estado"] = "error";
                    $sal["Descripcion"] = $this->lang->line("desc_telefonoInvalido");
                }
            } else {
                $sal["Estado"] = "error";
                $sal["Descripcion"] = $this->lang->line("desc_numeroEnLista");
            }
            $this->output->set_output(json_encode($sal));
            sv_mysqli_close($con);
        } else {
            $sal = array();
            $sal["Estado"] = "error";
            $sal["Descripcion"] = $this->lang->line("desc_permisosAccion");
            $this->output->set_output(json_encode($sal));
        }
    }
    public function downloadNumberGlobals()
    {
        $idioma = isset($_COOKIE["idioma"]) ? $_COOKIE["idioma"] : "es";
        switch ($idioma) {
            case "es":
                $this->lang->load('numerosglobales', "spanish");
                break;
            case "en":
                $this->lang->load('numerosglobales', "english");
                break;
            default:
                $this->lang->load('numerosglobales', "spanish");
                break;
        }
        include_once RUTA_APP . 'Conexion.php';
        if (!empty($_SESSION["Usuario"]) && ($_SESSION["Grupo"] == GRUPO_ADMINS || $_SESSION["Grupo"] == GRUPO_SUPERVISORES)) {
            include_once RUTA_APP . 'Sesiones.php';
            $query = "SELECT phone_number FROM vicidial_dnc";
            $sal = array();
            $con = getConnection();
            $result = sv_mysqli_query($con, $query, MYSQLI_ASSOC);
            $sal["Registros"] = array();
            // $sal["Registros"][] = array("Numeros");
            while ($row = sv_mysqli_fetch_array($result)) {
                $sal["Registros"][] = array("Numeros" => $row["phone_number"]);
            }
            header("Content-type: text/csv");
            header("Content-Disposition: attachment; filename=\"Numeros en Lista Negra Global.csv\"");
            header("Pragma: no-cache");
            header("Expires: 0");
            ob_start();
            $out = fopen('php://output', 'w');
            $test = array();
            $this->trata($out, $sal["Registros"], $test);
            fclose($out);
            $str = ob_get_contents();
            ob_end_clean();
            $this->output->set_output($str);
        } else {
            $sal = array();
            $sal["Estado"] = "error";
            $sal["Descripcion"] = $this->lang->line("desc_permisosAccion");
            $this->output->set_output(json_encode($sal));
        }
    }

    public function deleteNumbersGlobal()
    {
        $idioma = isset($_COOKIE["idioma"]) ? $_COOKIE["idioma"] : "es";
        switch ($idioma) {
            case "es":
                $this->lang->load('numerosglobales', "spanish");
                break;
            case "en":
                $this->lang->load('numerosglobales', "english");
                break;
            default:
                $this->lang->load('numerosglobales', "spanish");
                break;
        }
        include_once RUTA_APP . 'Conexion.php';
        if (!empty($_SESSION["Usuario"]) && ($_SESSION["Grupo"] == GRUPO_ADMINS || $_SESSION["Grupo"] == GRUPO_SUPERVISORES) && NEED_BL) {
            include_once RUTA_APP . 'Sesiones.php';
            $usuario = $_SESSION["Usuario"];
            $sal = array();
            $con = getConnection();
            $donde = "";
            $list_id = limpia($_POST["lista"]);
            $cliente = $_SESSION["Cliente"];
            if ($cliente != -1) {
                $donde = "AND cliente = '$cliente'";
            }
            $modoEstricto = limpia($_POST["estricto"]);
            if ($modoEstricto == "Y") {
                $modoEstricto = true;
            } else {
                $modoEstricto = false;
            }
            $phone_number = -1;
            $linea = 0;
            $querys = array();
            $sal["Estado"] = "ok";
            if (($gestor = fopen($_FILES['csv']['tmp_name'], "r")) !== false) {
                $sal["erroneos"] = array();
                while (($datos = fgetcsv($gestor, 100000, ",")) !== false) {
                    $fallo = false;
                    if ($linea != 0) {
                        if (array_key_exists($phone_number, $datos)) {
                            if ($phone_number != -1 && (strlen($datos[$phone_number]) == 6 || strlen($datos[$phone_number]) == 10)) {
                                $query = "DELETE FROM vicidial_dnc WHERE phone_number='{$datos[$phone_number]}'";
                                $result2 = sv_mysqli_query($con, "SELECT phone_number FROM vicidial_dnc WHERE phone_number='{$datos[$phone_number]}'");
                                if (!($row = sv_mysqli_fetch_array($result2))) {
                                    $fallo = true;
                                }
                                if ($modoEstricto) {
                                    $querys[] = $query;
                                } else {

                                    if (!$fallo) {
                                        sv_mysqli_query($con, $query);
                                        $affected_rows = mysqli_affected_rows($con);
                                        if ($affected_rows <= 0) {
                                            $fallo = true;
                                            $objeto = object();
                                            $objeto["Linea"] = ($linea + 1);
                                            $objeto["Razon"] = $this->lang->line("desc_actualizandoRegistro");
                                            if ($phone_number != -1) {
                                                $objeto["Telefono"] = $datos[$phone_number];
                                            } else {
                                                $objeto["Telefono"] = "";
                                            }
                                            $sal["erroneos"][] = $objeto;
                                        }
                                    } else {
                                        $fallo = true;
                                        $objeto = array();
                                        $objeto["Linea"] = ($linea + 1);
                                        $objeto["Razon"] = $this->lang->line("desc_noRegistro");
                                        if ($phone_number != -1) {
                                            $objeto["Telefono"] = $datos[$phone_number];
                                        } else {
                                            $objeto["Telefono"] = "";
                                        }
                                        $sal["erroneos"][] = $objeto;
                                    }
                                }
                            } else {
                                $fallo = true;
                                $objeto = array();
                                $objeto["Linea"] = ($linea + 1);
                                $objeto["Razon"] = $this->lang->line("desc_noCampo");
                                if ($phone_number != -1) {
                                    $objeto["Telefono"] = $datos[$phone_number];
                                } else {
                                    $objeto["Telefono"] = "";
                                }

                                $sal["erroneos"][] = $objeto;
                            }
                        } else {
                            $fallo = true;
                            $objeto = array();
                            $objeto["Linea"] = ($linea + 1);
                            $objeto["Razon"] = $this->lang->line("desc_noCampo");
                            if ($phone_number != -1) {
                                $objeto["Telefono"] = $datos[$phone_number];
                            } else {
                                $objeto["Telefono"] = "";
                            }

                            $sal["erroneos"][] = $objeto;
                        }
                    } else {
                        for ($i = 0; $i < count($datos); $i++) {
                            if (strtolower($datos[$i]) == "telefono") {
                                $phone_number = $i;
                            }
                        }
                        if ($phone_number == -1) {
                            $sal["Estado"] = "error";
                            $sal["Descripcion"] = $this->lang->line("desc_noTelefono");
                            $this->output->set_output(json_encode($sal));
                            sv_mysqli_close($con);
                            return;
                        }
                    }
                    $linea++;
                    if ($fallo && $modoEstricto) {
                        $sal["Estado"] = "error";
                        $sal["Descripcion"] = $this->lang->line("desc_registrosErroneos");
                        break;
                    }
                }
                fclose($gestor);
                if ($sal["Estado"] != "error") {
                    $sal["Estado"] = "ok";
                    $sal["total"] = $linea - 1;
                    $sal["lista"] = $list_id;
                    foreach ($querys as $q) {
                        sv_mysqli_query($con, $q);
                    }
                }
            } else {
                $sal["Estado"] = "error";
                $sal["Descripcion"] = $this->lang->line("desc_archivoInvalido");
            }
            $this->output->set_output(json_encode($sal));
            sv_mysqli_close($con);
        } else {
            $sal = array();
            $sal["Estado"] = "error";
            $sal["Descripcion"] = $this->lang->line("desc_permisosAccion");
            $this->output->set_output(json_encode($sal));
        }
    }

    public function deleteNumberGlobal()
    {
        $idioma = isset($_COOKIE["idioma"]) ? $_COOKIE["idioma"] : "es";
        switch ($idioma) {
            case "es":
                $this->lang->load('numerosglobales', "spanish");
                break;
            case "en":
                $this->lang->load('numerosglobales', "english");
                break;
            default:
                $this->lang->load('numerosglobales', "spanish");
                break;
        }
        include_once RUTA_APP . 'Conexion.php';
        if (!empty($_SESSION["Usuario"]) && ($_SESSION["Grupo"] == GRUPO_ADMINS || $_SESSION["Grupo"] == GRUPO_SUPERVISORES) && NEED_BL) {
            include_once RUTA_APP . 'Sesiones.php';
            $usuario = $_SESSION["Usuario"];
            $sal = array();
            $con = getConnection();
            $phone_number = limpia($_POST["numero"]);
            $query = "SELECT phone_number FROM  vicidial_dnc WHERE phone_number='$phone_number'";
            $result = sv_mysqli_query($con, $query);
            if ($row = sv_mysqli_fetch_array($result)) {
                $phone_number = preg_replace('/[^0-9]/', '', $phone_number);
                if (strlen($phone_number) >= 6) {
                    $query = "DELETE FROM vicidial_dnc WHERE phone_number='$phone_number'";
                    sv_mysqli_query($con, $query);
                    $affected_rows = mysqli_affected_rows($con);
                    if ($affected_rows > 0) {
                        $sal["Estado"] = "ok";
                    } else {
                        $sal["Estado"] = "error";
                        $sal["Descripcion"] = $this->lang->line("desc_noAgregado");
                    }
                } else {
                    $sal["Estado"] = "error";
                    $sal["Descripcion"] = $this->lang->line("desc_telefonoInvalido");
                }
            } else {
                $sal["Estado"] = "error";
                $sal["Descripcion"] = $this->lang->line("desc_noEnLista");
            }
            sv_mysqli_close($con);
            $this->output->set_output(json_encode($sal));
        } else {
            $sal = array();
            $sal["Estado"] = "error";
            $sal["Descripcion"] = $this->lang->line("desc_permisosAccion");
            $this->output->set_output(json_encode($sal));
        }
    }

    public function uploadNumbersGlobal()
    {
        $idioma = isset($_COOKIE["idioma"]) ? $_COOKIE["idioma"] : "es";
        switch ($idioma) {
            case "es":
                $this->lang->load('numerosglobales', "spanish");
                break;
            case "en":
                $this->lang->load('numerosglobales', "english");
                break;
            default:
                $this->lang->load('numerosglobales', "spanish");
                break;
        }
        include_once RUTA_APP . 'Conexion.php';
        if (!empty($_SESSION["Usuario"]) && ($_SESSION["Grupo"] == GRUPO_ADMINS || $_SESSION["Grupo"] == GRUPO_SUPERVISORES) && NEED_BL) {
            include_once RUTA_APP . 'Sesiones.php';
            $usuario = $_SESSION["Usuario"];
            $sal = array();
            $con = getConnection();
            $donde = "";
            $list_id = limpia($_POST["lista"]);
            $cliente = $_SESSION["Cliente"];
            if ($cliente != -1) {
                $donde = "AND cliente = '$cliente'";
            }
            $modoEstricto = limpia($_POST["estricto"]);
            if ($modoEstricto == "Y") {
                $modoEstricto = true;
            } else {
                $modoEstricto = false;
            }
            $phone_number = -1;
            $linea = 0;
            $querys = array();
            $sal["Estado"] = "ok";
            if (($gestor = fopen($_FILES['csv']['tmp_name'], "r")) !== false) {
                $sal["erroneos"] = array();
                while (($datos = fgetcsv($gestor, 100000, ",")) !== false) {
                    $fallo = false;
                    if ($linea != 0) {
                        if (array_key_exists($phone_number, $datos)) {
                            if ($phone_number != -1 && (strlen($datos[$phone_number]) == 6 || strlen($datos[$phone_number]) == 10)) {
                                $query = "INSERT INTO vicidial_dnc SET phone_number='{$datos[$phone_number]}'";
                                $result2 = sv_mysqli_query($con, "SELECT phone_number FROM vicidial_dnc WHERE phone_number='{$datos[$phone_number]}'");
                                if ($row = sv_mysqli_fetch_array($result2)) {
                                    $fallo = true;
                                }
                                if ($modoEstricto) {
                                    $querys[] = $query;
                                } else {

                                    if (!$fallo) {
                                        sv_mysqli_query($con, $query);
                                        $affected_rows = mysqli_affected_rows($con);
                                        if ($affected_rows <= 0) {
                                            $fallo = true;
                                            $objeto = object();
                                            $objeto["Linea"] = ($linea + 1);
                                            $objeto["Razon"] = $this->lang->line("desc_agregandoRegistro");
                                            if ($phone_number != -1) {
                                                $objeto["Telefono"] = $datos[$phone_number];
                                            } else {
                                                $objeto["Telefono"] = "";
                                            }
                                            $sal["erroneos"][] = $objeto;
                                        }
                                    } else {
                                        $fallo = true;
                                        $objeto = array();
                                        $objeto["Linea"] = ($linea + 1);
                                        $objeto["Razon"] = $this->lang->line("desc_registroExistente");
                                        if ($phone_number != -1) {
                                            $objeto["Telefono"] = $datos[$phone_number];
                                        } else {
                                            $objeto["Telefono"] = "";
                                        }
                                        $sal["erroneos"][] = $objeto;
                                    }
                                }
                            } else {
                                $fallo = true;
                                $objeto = array();
                                $objeto["Linea"] = ($linea + 1);
                                $objeto["Razon"] = $this->lang->line("desc_noCampo");
                                if ($phone_number != -1) {
                                    $objeto["Telefono"] = $datos[$phone_number];
                                } else {
                                    $objeto["Telefono"] = "";
                                }

                                $sal["erroneos"][] = $objeto;
                            }
                        } else {
                            $fallo = true;
                            $objeto = array();
                            $objeto["Linea"] = ($linea + 1);
                            $objeto["Razon"] = $this->lang->line("desc_noCampo");
                            if ($phone_number != -1) {
                                $objeto["Telefono"] = $datos[$phone_number];
                            } else {
                                $objeto["Telefono"] = "";
                            }

                            $sal["erroneos"][] = $objeto;
                        }
                    } else {
                        for ($i = 0; $i < count($datos); $i++) {
                            if (strtolower($datos[$i]) == "telefono") {
                                $phone_number = $i;
                            }
                        }
                        if ($phone_number == -1) {
                            $sal["Estado"] = "error";
                            $sal["Descripcion"] = $this->lang->line("desc_noTelefono");
                            $this->output->set_output(json_encode($sal));
                            sv_mysqli_close($con);
                            return;
                        }
                    }
                    $linea++;
                    if ($fallo && $modoEstricto) {
                        $sal["Estado"] = "error";
                        $sal["Descripcion"] = $this->lang->line("desc_registrosErroneos");
                        break;
                    }
                }
                fclose($gestor);
                if ($sal["Estado"] != "error") {
                    $sal["Estado"] = "ok";
                    $sal["total"] = $linea - 1;
                    $sal["lista"] = $list_id;
                    foreach ($querys as $q) {
                        sv_mysqli_query($con, $q);
                    }
                }
            } else {
                $sal["Estado"] = "error";
                $sal["Descripcion"] = $this->lang->line("desc_archivoInvalido");
            }
            $this->output->set_output(json_encode($sal));
            sv_mysqli_close($con);
        } else {
            $sal = array();
            $sal["Estado"] = "error";
            $sal["Descripcion"] = $this->lang->line("desc_permisosAccion");
            $this->output->set_output(json_encode($sal));
        }
    }

    public function index()
    {
        $this->load->view('numerosGlobales/head');
        $this->load->view('numerosGlobales/vw_numerosglobales');
        $this->load->view('numerosGlobales/foot');
    }
}
