<?php namespace App\Http\Controllers;

use App\Custom\SQLConnection;
use App\Http\Controllers\MainController;
use App\Http\Controllers\AFIPController;
use App\Http\Controllers\ApiControllerV1;
use App\Custom\Misc;
use Request;
use Session;
use stdClass;
use DateTime;
use DB;

class ApiPeruController extends Controller {
    public static function index(){

        // -----------------
        // EXPRESIONES REGULARES Y VARIABLES
        $selRegEx = "/^(dni|ruc)$/";
        $dniRegExp = "/^([0-9]{8})$/";
        $rucRegExp = "/^((10|15|16|17|20)[0-9]{9})$/";
        // -----------------
        $selector = 'ruc';
        $id = '20131312955';
        //$selector = 'dni';
        //$id = '04412417';
        $apiPeruResut = [];        
        $devuelve = [];
        // -----------------
        // VALIDA SI ENVIA "dni" || "ruc"
        if(preg_match($selRegEx, $selector)){
            // -----------------
            // VALIDA SI ESTAN CORRECTOS AMBOS DATOS: "selector" e "id"
            if(($selector == 'dni' and preg_match($dniRegExp, $id)) or ($selector == 'ruc' and preg_match($rucRegExp, $id))){
                $url="https://consulta.api-peru.com/api/".$selector."/".$id;
                //  Initiate curl
                $ch = curl_init();
                // Will return the response, if false it print the response
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                // Set the url
                curl_setopt($ch, CURLOPT_URL,$url);
                // Execute
                $result=curl_exec($ch);
                // Closing
                curl_close($ch);

                $apiPeruResut = json_decode($result, true);
                //echo (print_r($apiPeruResut/* ['data']['numero'] */));
                return $apiPeruResut;
                die ();
            }
            else {
                $devuelve = [
                    'error' => 'Error en el formato de los datos enviados. Debe elegir entre consultar un número tipo "ruc" o "dni". Si es dni debe contener 8 número, y si es ruc debe contener 11 números. Para más información puede dirigirse a https://www.sunat.gob.pe/'];
                return json_encode($devuelve);
                die();
            }
        }
        else {
            $devuelve = [
                'error' => 'Error en el formato de los datos enviados. Debe elegir entre consultar un número tipo "ruc" o "dni".'];
            return json_encode($devuelve);
            die();
        }
        // -----------------
        // VERIFICA SI LA RESPUESTA ES CORRECTA O VIENE SIN DATOS
        if($apiPeruResut['success'] == false){
            $devuelve = [
                'error' => 'No existen datos para esa consulta.'];
            return json_encode($devuelve);
            die();
        }
        else {
            // -----------------
            // SI EL DATO ES DNI PARSEA SEGUN SU ESTRUCTURA
            if($selector == 'dni'){
                $devuelve = [
                    'tipo_id' => $selector,
                    'id' => $apiPeruResut['data']['numero'],
                    'razon_social' => $apiPeruResut['data']['nombre_completo'],
                    'fecha_nacimiento' => $apiPeruResut['data']['fecha_nacimiento'],
                    'sexo' => $apiPeruResut['data']['sexo'],
                    'codigo_verificacion' => $apiPeruResut['data']['codigo_verificacion'],
                ];
                return json_encode($devuelve);
            }
            // -----------------
            // SI EL DATO ES RUC PARSEA SEGUN SU ESTRUCTURA
            else {
                $devuelve = [
                    'tipo_id' => $selector,
                    'id' => $apiPeruResut['data']['ruc'],
                    'razon_social' => $apiPeruResut['data']['nombre_o_razon_social'],
                    'dirección' => $apiPeruResut['data']['direccion'],
                ];
                return json_encode($devuelve);
            }
        }
    }
}