<?php

include('../../path.php');

/*$host_regimen_fiscal= $_SERVER["HTTP_HOST"];

$url_regimen_fiscal = $_SERVER["REQUEST_URI"];

$subtree_regimen_fiscal = substr_count($url_regimen_fiscal, '/');

$context_regimen_fiscal='';

for ($i_regimen_fiscal=2; $i_regimen_fiscal <$subtree_regimen_fiscal ; $i_regimen_fiscal++) { 

        $context_regimen_fiscal=$context_regimen_fiscal.'../';

}

require_once($context_regimen_fiscal.'home/regimen_fiscal/modelo/regimen_fiscal.php');*/

require_once(ROOT_CONTROLLER.'regimen_fiscal.php');

$Obj_regimen_fiscal = new regimen_fiscal();

require_once(ROOT_CHARACTER_FIX);

//require_once($context_regimen_fiscal.'bussines/fix_characters.php');

$Obj_fix_characters = new fix_characters();



$action=!empty($_REQUEST['action'])?$_REQUEST['action']:'';

$_ScrollTo=!empty($_REQUEST['_ScrollTo'])?$_REQUEST['_ScrollTo']:'';

$_Pagina=!empty($_REQUEST['_Pagina'])?$_REQUEST['_Pagina']:'';

// Variables para la relacion con la entidad padre 

$_Clausula_Fk=!empty($_REQUEST['_Clausula_Fk'])?$_REQUEST['_Clausula_Fk']:'';

$_IdFk=!empty($_REQUEST['_IdFk'])?$_REQUEST['_IdFk']:'';

// Variables para la relacion con la entidad abuelo _A

$_A_Clausula_Fk=!empty($_REQUEST['_A_Clausula_Fk'])?$_REQUEST['_A_Clausula_Fk']:'';

$_A_IdFk=!empty($_REQUEST['_A_IdFk'])?$_REQUEST['_A_IdFk']:'';

// Variables para la relacion con la entidad bisabuelo _B 

$_B_Clausula_Fk=!empty($_REQUEST['_B_Clausula_Fk'])?$_REQUEST['_B_Clausula_Fk']:'';

$_B_IdFk=!empty($_REQUEST['_B_IdFk'])?$_REQUEST['_B_IdFk']:'';



if (!empty($_POST))

{

    $Id_Regimen_Fiscal=!empty($_REQUEST['Id_Regimen_Fiscal'])?$_REQUEST['Id_Regimen_Fiscal']:'';
   $Id_Fk_Tipo_Persona=!empty($_REQUEST['Id_Fk_Tipo_Persona'])?$_REQUEST['Id_Fk_Tipo_Persona']:'';
   $Tipo_Persona=!empty($_REQUEST['Tipo_Persona'])?$_REQUEST['Tipo_Persona']:'';
   $Regimen_Tributario=!empty($_REQUEST['Regimen_Tributario'])?$_REQUEST['Regimen_Tributario']:'';
   $Fecha_De_Registro=!empty($_REQUEST['Fecha_De_Registro'])?$_REQUEST['Fecha_De_Registro']:'';
   $Usuario_Que_Registra=!empty($_REQUEST['Usuario_Que_Registra'])?$_REQUEST['Usuario_Que_Registra']:'';
   $Fecha_De_Modificacion=!empty($_REQUEST['Fecha_De_Modificacion'])?$_REQUEST['Fecha_De_Modificacion']:'';
   $Usuario_Que_Modifico=!empty($_REQUEST['Usuario_Que_Modifico'])?$_REQUEST['Usuario_Que_Modifico']:'';
   

    $Field=!empty($_REQUEST['Field'])?$_REQUEST['Field']:''; 

    $Field=$Obj_fix_characters->fix($Field);

    $Value=!empty($_REQUEST['Value'])?$_REQUEST['Value']:''; 

    $Value=$Obj_fix_characters->fix($Value);

    $Value_Hidden=!empty($_REQUEST['Value_Hidden'])?$_REQUEST['Value_Hidden']:''; 

    $Value_Hidden=$Obj_fix_characters->fix($Value_Hidden);

    $Type=!empty($_REQUEST['Type'])?$_REQUEST['Type']:''; 

    $Type=$Obj_fix_characters->fix($Type);



}    



function upVideo($Value_Hidden, $Value, $Field) {

    $directorio = '../../../repositorio/video/regimen_fiscal/';

    

    // Verifica si el directorio existe, si no, lo crea

    if (!is_dir($directorio)) {

        mkdir($directorio, 0755, true);

    }

    

    // Genera un nombre único para el archivo si $Value_Hidden está vacío

    $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 

    $cad = ""; 

    for($i = 0; $i < 12; $i++) { 

        $cad .= substr($str, rand(0, 62), 1); 

    }

    

    // Si $Value_Hidden no está vacío, usa su valor como nombre del archivo

    if (!empty($Value_Hidden)) {

        $filename = $Value_Hidden;

        $target_file = $filename;

    } else {

        $extension = pathinfo($Value["name"], PATHINFO_EXTENSION);

        // Nombre final del archivo

        $filename = $cad . '.' . $extension;

        $target_file = $directorio . $filename;

    }

    $uploadOk = 1;

    

    // Verifica el tamaño del archivo (50MB máximo)

    if ($Value["size"] > 50000000) { 

        $uploadOk = 0;

    }

    

    $videoFileType = pathinfo($target_file, PATHINFO_EXTENSION);

    $allowed_types = ['mp4', 'avi', 'mov', '3gp', 'mpeg'];

    if (!in_array($videoFileType, $allowed_types)) {

        $uploadOk = 0;

    }

    

    // Si $uploadOk es 1, intenta mover el archivo subido

    if ($uploadOk == 1) {

        if (move_uploaded_file($Value["tmp_name"], $target_file)) {

            return $target_file; 

        } else {

            return ''; 

        }

    } else {

        return ''; 

    }

}



function upImg($Value_Hidden, $Value, $Field) {

    $directorio = '../../../repositorio/regimen_fiscal_img/';

    

    // Verifica si el directorio existe, si no, lo crea

    if (!is_dir($directorio)) {

        mkdir($directorio, 0755, true);

    }

    

    $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 

    $cad = ""; 

    for($i = 0; $i < 12; $i++) { 

        $cad .= substr($str, rand(0, 62), 1); 

    }

    

    // Si $Value_Hidden no está vacío, usa su valor como nombre del archivo

    if (!empty($Value_Hidden)) {

        $filename = $Value_Hidden;

        $target_file = $filename;

    } else {

        // Obtiene la extensión del archivo subido

        $extension = pathinfo($Value["name"], PATHINFO_EXTENSION);

        // Nombre final del archivo

        $filename = $cad . '.' . $extension;

        $target_file = $directorio . $filename;

    }



    $uploadOk = 1;

    

    // Verifica el tamaño del archivo

    if ($Value["size"] > 5000000) { // 5MB máximo

        $uploadOk = 0;

    }

    

    // Verifica el tipo de archivo

    $imageFileType = pathinfo($target_file, PATHINFO_EXTENSION);

    $allowed_types = ['jpg', 'jpeg', 'png', 'gif'];

    if (!in_array($imageFileType, $allowed_types)) {

        $uploadOk = 0;

    }

    

    // Si $uploadOk es 1, intenta mover el archivo subido

    if ($uploadOk == 1) {

        if (move_uploaded_file($Value["tmp_name"], $target_file)) {

            return $target_file;

        } else {

            return ''; 

        }

    } else {

        return '';

    }

}



function upDocumento($Value_Hidden, $Value, $Field) {

    $directorio = '../../../repositorio/regimen_fiscal_documento/';

    

    // Verifica si el directorio existe, si no, lo crea

    if (!is_dir($directorio)) {

        mkdir($directorio, 0755, true);

    }

    

    $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890"; 

    $cad = ""; 

    for ($i = 0; $i < 12; $i++) { 

        $cad .= substr($str, rand(0, 62), 1); 

    }

    

    // Si $Value_Hidden no está vacío, usa su valor como nombre del archivo

    if (!empty($Value_Hidden)) {

        $filename = $Value_Hidden;

        $target_file = $filename;

    } else {

        // Obtiene la extensión del archivo subido

        $extension = pathinfo($Value["name"], PATHINFO_EXTENSION);

        // Nombre final del archivo

        $filename = $cad . '.' . $extension;

        $target_file = $directorio . $filename;

    }



    $uploadOk = 1;

    

    // Verifica el tamaño del archivo (10MB máximo)

    if ($Value["size"] > 10000000) { // 10MB máximo

        $uploadOk = 0;

    }

    

    // Verifica el tipo de archivo

    $documentFileType = pathinfo($target_file, PATHINFO_EXTENSION);

    $allowed_types = ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt'];

    if (!in_array($documentFileType, $allowed_types)) {

        $uploadOk = 0;

    }

    

    if ($uploadOk == 1) {

        if (move_uploaded_file($Value["tmp_name"], $target_file)) {

            return $target_file; 

        } else {

            return ''; // Retorna cadena vacía si la carga falla

        }

    } else {

        return ''; 

    }

}



switch ($action) {

    case 'campos_front':

        try{

            if($Type=='video'){

                $Value=$_FILES['Value'];

                $Value=upVideo($Value_Hidden,$Value,$Field);

            }else if($Type=='imagen'){

                $Value=$_FILES['Value'];

                $Value=upImg($Value_Hidden,$Value,$Field);

            }else if($Type=='documento'){

                $Value=$_FILES['Value'];

                $Value=upDocumento($Value_Hidden,$Value,$Field);

            }

            $Obj_regimen_fiscal->update_field_front_regimen_fiscal($Field,$Value,$Id_Regimen_Fiscal);

        }catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }

        break;

    case 'campos_front_fk':

        try{

            $Obj_regimen_fiscal->update_field_regimen_fiscal($Field,$Value,$Id_Regimen_Fiscal);

            if (isset($_POST['elementos_asociados_'.$Field]) && !empty($_POST['elementos_asociados_'.$Field])) {

                // Obtener los valores concatenados

                $elementos_asociados = $_POST['elementos_asociados_'.$Field];



                // Convertir la cadena en un array

                $array_elementos_asociados = explode(',', $elementos_asociados);



                // Recorrer los campos asociados y validar que estén presentes en POST

                foreach ($array_elementos_asociados as $campo) {

                    if (isset($_POST[$campo]) && !empty($_POST[$campo])) {

                        $Value_Campo=!empty($_REQUEST[$campo])?$_REQUEST[$campo]:''; 

                        $Value_Campo=$Obj_fix_characters->fix($Value_Campo);

                        $Field=$campo;

                        $Obj_regimen_fiscal->update_field_front_regimen_fiscal($Field,$Value_Campo,$Id_Regimen_Fiscal);

                    }

                }

            }

        }catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }

        break;



    case 'campos':

        try{

            $Obj_regimen_fiscal->update_field_front_regimen_fiscal($Field,$Value,$Id_Regimen_Fiscal);

            //$locations="Location: ./#$Id_Regimen_Fiscal";

            //header($locations);

            }   

        catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }

        break;



    

    case 'editar':



        try{
 

             $Obj_regimen_fiscal->update_regimen_fiscal($Id_Regimen_Fiscal, $Id_Fk_Tipo_Persona, $Tipo_Persona, $Regimen_Tributario, $Fecha_De_Registro, $Usuario_Que_Registra, $Fecha_De_Modificacion, $Usuario_Que_Modifico);

            /*if($_Clausula_Fk!='' && $_IdFk!=''){

               $locations="Location: ../view/?_Clausula_Fk=$_Clausula_Fk&_IdFk=$_IdFk&_A_Clausula_Fk=$_A_Clausula_Fk&_A_IdFk=$_A_IdFk&_B_Clausula_Fk=$_B_Clausula_Fk&_B_IdFk=$_B_IdFk&pagina=$_Pagina&_Id_Registro=$Id_Regimen_Fiscal&_ScrollTo=$_ScrollTo";

            }else{

              $locations="Location: ../view/?pagina=$_Pagina&_Id_Registro=$Id_Regimen_Fiscal&_ScrollTo=$_ScrollTo";

            }*/
            $params = [];

            // Parámetros condicionales
            if (!empty($_Clausula_Fk))   $params[] = '_Clausula_Fk=' . urlencode($_Clausula_Fk);
            if (!empty($_IdFk))          $params[] = '_IdFk=' . urlencode($_IdFk);
            if (!empty($_A_Clausula_Fk)) $params[] = '_A_Clausula_Fk=' . urlencode($_A_Clausula_Fk);
            if (!empty($_A_IdFk))        $params[] = '_A_IdFk=' . urlencode($_A_IdFk);
            if (!empty($_B_Clausula_Fk)) $params[] = '_B_Clausula_Fk=' . urlencode($_B_Clausula_Fk);
            if (!empty($_B_IdFk))        $params[] = '_B_IdFk=' . urlencode($_B_IdFk);

            // Parámetros obligatorios (siempre presentes)
            $params[] = 'pagina=' . urlencode($_Pagina);
            $params[] = '_Id_Registro=$' . urlencode($Id_Regimen_Fiscal);
            $params[] = '_ScrollTo=' . urlencode($_ScrollTo);

            // Construcción de la URL
            $locations = 'Location: ../view/?' . implode('&', $params);

            header($locations);

            }   

        catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }

        break;



        case 'registrar':



        try{
        

         $idtupla=$Obj_regimen_fiscal->insert_regimen_fiscal($Id_Fk_Tipo_Persona, $Tipo_Persona, $Regimen_Tributario, $Fecha_De_Registro, $Usuario_Que_Registra, $Fecha_De_Modificacion, $Usuario_Que_Modifico);

         /*if($_Clausula_Fk!='' && $_IdFk!=''){

               $locations="Location: ../view/?_Clausula_Fk=$_Clausula_Fk&_IdFk=$_IdFk&_A_Clausula_Fk=$_A_Clausula_Fk&_A_IdFk=$_A_IdFk&_B_Clausula_Fk=$_B_Clausula_Fk&_B_IdFk=$_B_IdFk&pagina=1&_Id_Registro=$idtupla&_ScrollTo=0";

        }else{

            $locations="Location: ../view/?pagina=1&_Id_Registro=$idtupla&_ScrollTo=0";

        }*/
            $params = [];

            // Parámetros condicionales
            if (!empty($_Clausula_Fk))   $params[] = '_Clausula_Fk=' . urlencode($_Clausula_Fk);
            if (!empty($_IdFk))          $params[] = '_IdFk=' . urlencode($_IdFk);
            if (!empty($_A_Clausula_Fk)) $params[] = '_A_Clausula_Fk=' . urlencode($_A_Clausula_Fk);
            if (!empty($_A_IdFk))        $params[] = '_A_IdFk=' . urlencode($_A_IdFk);
            if (!empty($_B_Clausula_Fk)) $params[] = '_B_Clausula_Fk=' . urlencode($_B_Clausula_Fk);
            if (!empty($_B_IdFk))        $params[] = '_B_IdFk=' . urlencode($_B_IdFk);

            // Parámetros obligatorios (siempre presentes)
            $params[] = 'pagina=' . urlencode($_Pagina);
            $params[] = '_Id_Registro=$' . urlencode($idtupla);
            $params[] = '_ScrollTo=' . urlencode($_ScrollTo);

            // Construcción de la URL
            $locations = 'Location: ../view/?' . implode('&', $params);

            header($locations);        

           }    

        catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }   



        break;

        case 'duplicar':



        try{
        

         $idtupla=$Obj_regimen_fiscal->insert_regimen_fiscal($Id_Fk_Tipo_Persona, $Tipo_Persona, $Regimen_Tributario, $Fecha_De_Registro, $Usuario_Que_Registra, $Fecha_De_Modificacion, $Usuario_Que_Modifico);

         /*if($_Clausula_Fk!='' && $_IdFk!=''){

               $locations="Location: ../view/?_Clausula_Fk=$_Clausula_Fk&_IdFk=$_IdFk&_A_Clausula_Fk=$_A_Clausula_Fk&_A_IdFk=$_A_IdFk&_B_Clausula_Fk=$_B_Clausula_Fk&_B_IdFk=$_B_IdFk&pagina=1&_Id_Registro=$idtupla&_ScrollTo=0";

        }else{

            $locations="Location: ../view/?pagina=1&_Id_Registro=$idtupla&_ScrollTo=0";

        }*/

        $params = [];

            // Parámetros condicionales
            if (!empty($_Clausula_Fk))   $params[] = '_Clausula_Fk=' . urlencode($_Clausula_Fk);
            if (!empty($_IdFk))          $params[] = '_IdFk=' . urlencode($_IdFk);
            if (!empty($_A_Clausula_Fk)) $params[] = '_A_Clausula_Fk=' . urlencode($_A_Clausula_Fk);
            if (!empty($_A_IdFk))        $params[] = '_A_IdFk=' . urlencode($_A_IdFk);
            if (!empty($_B_Clausula_Fk)) $params[] = '_B_Clausula_Fk=' . urlencode($_B_Clausula_Fk);
            if (!empty($_B_IdFk))        $params[] = '_B_IdFk=' . urlencode($_B_IdFk);

            // Parámetros obligatorios (siempre presentes)
            $params[] = 'pagina=' . urlencode($_Pagina);
            $params[] = '_Id_Registro=$' . urlencode($idtupla);
            $params[] = '_ScrollTo=' . urlencode($_ScrollTo);

            // Construcción de la URL
            $locations = 'Location: ../view/?' . implode('&', $params);

            header($locations);        

           }    

        catch (Exception $e) {

            echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

        }   



        break;

    

        case 'eliminar':           

                try{

              $Obj_regimen_fiscal->delete_regimen_fiscal($Id_Regimen_Fiscal);

                 $locations ="Location: ../view";

                 header($locations);

                }

        

                catch (Exception $e) {

                    echo 'Excepcion capturada: ',  $e->getMessage(), "\n";

                }   



        break;



    default:

        

        break;

}

?>

