<?php

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

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

$url_cartera_contrasenas = $_SERVER["REQUEST_URI"];

$subtree_cartera_contrasenas = substr_count($url_cartera_contrasenas, '/');

$context_cartera_contrasenas='';

for ($i_cartera_contrasenas=2; $i_cartera_contrasenas <$subtree_cartera_contrasenas ; $i_cartera_contrasenas++) { 

        $context_cartera_contrasenas=$context_cartera_contrasenas.'../';

}

require_once($context_cartera_contrasenas.'home/cartera_contrasenas/modelo/cartera_contrasenas.php');*/

require_once(ROOT_CONTROLLER.'cartera_contrasenas.php');

$Obj_cartera_contrasenas = new cartera_contrasenas();

require_once(ROOT_CHARACTER_FIX);

//require_once($context_cartera_contrasenas.'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_Cartera=!empty($_REQUEST['Id_Cartera'])?$_REQUEST['Id_Cartera']:'';
   $Id_Fk_Categoria=!empty($_REQUEST['Id_Fk_Categoria'])?$_REQUEST['Id_Fk_Categoria']:'';
   $Categoria=!empty($_REQUEST['Categoria'])?$_REQUEST['Categoria']:'';
   $Nombre_Registro=!empty($_REQUEST['Nombre_Registro'])?$_REQUEST['Nombre_Registro']:'';
   $Nombre_Servicio=!empty($_REQUEST['Nombre_Servicio'])?$_REQUEST['Nombre_Servicio']:'';
   $Url_Acceso=!empty($_REQUEST['Url_Acceso'])?$_REQUEST['Url_Acceso']:'';
   $Host_O_Ip=!empty($_REQUEST['Host_O_Ip'])?$_REQUEST['Host_O_Ip']:'';
   $Usuario_Acceso=!empty($_REQUEST['Usuario_Acceso'])?$_REQUEST['Usuario_Acceso']:'';
   $Contrasena_Acceso=!empty($_REQUEST['Contrasena_Acceso'])?$_REQUEST['Contrasena_Acceso']:'';
   $Correo_Relacionado=!empty($_REQUEST['Correo_Relacionado'])?$_REQUEST['Correo_Relacionado']:'';
   $Telefono_Soporte=!empty($_REQUEST['Telefono_Soporte'])?$_REQUEST['Telefono_Soporte']:'';
   $Tags=!empty($_REQUEST['Tags'])?$_REQUEST['Tags']:'';
   $Notas=!empty($_REQUEST['Notas'])?$_REQUEST['Notas']:'';
   $Es_Favorito=!empty($_REQUEST['Es_Favorito'])?$_REQUEST['Es_Favorito']:'';
   $Estatus=!empty($_REQUEST['Estatus'])?$_REQUEST['Estatus']:'';
   $Registro=!empty($_REQUEST['Registro'])?$_REQUEST['Registro']:'';
   $Fecha_Registro=!empty($_REQUEST['Fecha_Registro'])?$_REQUEST['Fecha_Registro']:'';
   $Modifico=!empty($_REQUEST['Modifico'])?$_REQUEST['Modifico']:'';
   $Fecha_Modificacion=!empty($_REQUEST['Fecha_Modificacion'])?$_REQUEST['Fecha_Modificacion']:'';
   

    $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/cartera_contrasenas/';

    

    // 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/cartera_contrasenas_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/cartera_contrasenas_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_cartera_contrasenas->update_field_front_cartera_contrasenas($Field,$Value,$Id_Cartera);

        }catch (Exception $e) {

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

        }

        break;

    case 'campos_front_fk':

        try{

            $Obj_cartera_contrasenas->update_field_cartera_contrasenas($Field,$Value,$Id_Cartera);

            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_cartera_contrasenas->update_field_front_cartera_contrasenas($Field,$Value_Campo,$Id_Cartera);

                    }

                }

            }

        }catch (Exception $e) {

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

        }

        break;



    case 'campos':

        try{

            $Obj_cartera_contrasenas->update_field_front_cartera_contrasenas($Field,$Value,$Id_Cartera);

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

            //header($locations);

            }   

        catch (Exception $e) {

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

        }

        break;



    

    case 'editar':



        try{
 

             $Obj_cartera_contrasenas->update_cartera_contrasenas($Id_Cartera, $Id_Fk_Categoria, $Categoria, $Nombre_Registro, $Nombre_Servicio, $Url_Acceso, $Host_O_Ip, $Usuario_Acceso, $Contrasena_Acceso, $Correo_Relacionado, $Telefono_Soporte, $Tags, $Notas, $Es_Favorito, $Estatus, $Registro, $Fecha_Registro, $Modifico, $Fecha_Modificacion);

            /*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_Cartera&_ScrollTo=$_ScrollTo";

            }else{

              $locations="Location: ../view/?pagina=$_Pagina&_Id_Registro=$Id_Cartera&_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_Cartera);
            $params[] = '_ScrollTo=' . rawurlencode($_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_cartera_contrasenas->insert_cartera_contrasenas($Id_Fk_Categoria, $Categoria, $Nombre_Registro, $Nombre_Servicio, $Url_Acceso, $Host_O_Ip, $Usuario_Acceso, $Contrasena_Acceso, $Correo_Relacionado, $Telefono_Soporte, $Tags, $Notas, $Es_Favorito, $Estatus, $Registro, $Fecha_Registro, $Modifico, $Fecha_Modificacion);

         /*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=' . rawurlencode($_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_cartera_contrasenas->insert_cartera_contrasenas($Id_Fk_Categoria, $Categoria, $Nombre_Registro, $Nombre_Servicio, $Url_Acceso, $Host_O_Ip, $Usuario_Acceso, $Contrasena_Acceso, $Correo_Relacionado, $Telefono_Soporte, $Tags, $Notas, $Es_Favorito, $Estatus, $Registro, $Fecha_Registro, $Modifico, $Fecha_Modificacion);

         /*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=' . rawurlencode($_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_cartera_contrasenas->delete_cartera_contrasenas($Id_Cartera);

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

                 header($locations);

                }

        

                catch (Exception $e) {

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

                }   



        break;



    default:

        

        break;

}

?>

