<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Custom\Misc;

use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Request;

use DateTime;

class EntidadesController extends Controller{
    //---- FUNCION ENCARGADA DE DEVOLVER LA VISTA CON EL FORMULARIO DE CARGAR ARCHIVO
    public static function index(){
        $contenido = json_encode(SQLConnection::backendStoreProcedure('EntidadesBancariasMensual',array('LISTAR')));
        return view('entidades_bancarias_procesos/cargar_archivo_txt',compact('contenido'));
    }
    //----- FUNCION ENCARGADA DE VALIDAR EL ARCHIVO MANDADO, PARSEARLO Y DEVOLVER SU CONTENIDO MANDADO
    public static function cargar_archivo(){
        $expReg = "/^.+\.txt$/";
        //-------- Si el nombre del archivo es valido
        if ( Misc::validar_data($expReg, $_FILES["archivo_txt"]["name"] )){
            $ruta = $_FILES["archivo_txt"]["tmp_name"];
            $lista = file($ruta);
            //---------------- Si el contenido del archivo es valido lo agrega a la lista sino no
            $patron_total = "/^\d{5}.{1,150}$/";
            $codigo_entidad = [];
            $nombre_entidad = []; 
            //-------- Lo codifica con utf8 para purgar los caracteres extraños
            foreach ($lista as $e ) {
                //--------
                if (Misc::validar_data($patron_total,$e)){
                    $action = "";
                    $codigo = mb_convert_encoding(substr($e, 0, 5), 'UTF-8', 'ISO-8859-1');
                    $nombre = mb_convert_encoding(substr($e, 5, 150), 'UTF-8', 'ISO-8859-1');
                    array_push($nombre_entidad,$nombre);
                    array_push($codigo_entidad,$codigo);
                    SQLConnection::backendStoreProcedure('EntidadesBancariasMensual',array("INSERTAR",$codigo,$nombre));
                }
                //-----
            }
            //------
            return view("entidades_bancarias_procesos/notificacion_cargar_archivo_txt", compact("codigo_entidad","nombre_entidad") ); 
        }    
        //------------- Si el nombre del archivo es invalido
        else{
            $servidor = $_SERVER['REMOTE_ADDR'];
            $seccion = "EntidadesController";
            $nombre_de_funcion = "cargar_archivo";
            $mensaje = "Alguien infiltró el javascript y esta es su ip: ".$servidor;
            SQLConnection::control_erores($seccion,$nombre_de_funcion,$mensaje);
            return view("/errors/vista_con_error");
        }
    }
        
    //------ ESTA FUNCION ES LA ENCARGADA DE DEFINIR SI EL ARCHIVO CONTIENE LA ESTRUCTURA DEFINIDA Y POR ENDE SI ES VALIDO O NO , LLEVA COMO PARAMETRO UN LISTA CON EL CONTENIDO DEL ARCHIVO (No usada)
    private static function validar_contenido_txt($p){
        $expReg = "/^\d{5}.{1,150}/";
        $indicador = 0;
        foreach ($p as $e) {
            if ( preg_match($expReg,$e) == 0 ){
                $indicador++;
                break;
            }
        }
        //--------
        if ($indicador == 0){
            return 1;
        }
        else {
            return 0;
        }
    }
    
}