perfilmodel.php 9.31 KB
<?php 
include_once 'models/arcu.php';
include_once 'SED.php';

class PerfilModel extends Model{

    public function __construct(){
        parent::__construct();
    }

    public function getbyID($id){

        try{
            $query=$this->db->connect()->prepare("SELECT t1.id_usuario,
            usuario,
            clave,
            fecha,
            t1.estatus,
            t1.id_perfil,
            t3.descripcion as perfil,
            t1.id_persona,
            primer_nombre,
            segundo_nombre,
            primer_apellido,
            segundo_apellido,
            correo,
            telefono,
            genero,
            t2.id_ciudad,
            t6.descripcion as ciudad,
            t6.id_pais,
            t7.descripcion as pais,
            t4.id_documento_identidad_tipo as id_tipo_documento,
            t5.descripcion as tipo_documento,
            identificacion
            
             from 
            usuario as t1, 
            persona as t2,
            perfil as t3,
            persona_nacionalidad as t4,
            documento_identidad_tipo as t5,
            ciudad as t6,
            pais as t7
            
            
            where 
            t1.id_persona=t2.id_persona
            and t1.id_perfil=t3.id_perfil
            and t4.id_persona=t2.id_persona
            and t4.id_documento_identidad_tipo=t5.id_documento_identidad_tipo
            and t2.id_ciudad=t6.id_ciudad
            and t6.id_pais=t7.id_pais
            and t1.id_persona=:id_persona;");
            $query->execute(['id_persona'=>$id]);
            $item=new Arcu();
            //se encripta la contraseña
            $crypt= new SED();
            
            while($row=$query->fetch()){

                $item->id_usuario=$row['id_usuario'];
                $item->usuario=$row['usuario'];
                
                //se desencripta la contraseña
                $clave=$crypt->decryption($row['clave']);

                $item->clave=$clave;
                $item->fecha=$row['fecha'];
                $item->estatus=$row['estatus'];
                $item->id_perfil=$row['id_perfil'];
                $item->perfil=$row['perfil'];

                $item->id_persona=$row['id_persona'];
                $item->primer_nombre=$row['primer_nombre'];
                $item->segundo_nombre=$row['segundo_nombre'];

                $item->primer_apellido=$row['primer_apellido'];
                $item->segundo_apellido=$row['segundo_apellido'];
                $item->correo=$row['correo'];
                $item->telefono=$row['telefono'];
                $item->genero=$row['genero'];
                
                $item->id_ciudad=$row['id_ciudad'];
                $item->ciudad=$row['ciudad'];
                $item->id_pais=$row['id_pais'];
                $item->pais=$row['pais'];

                $item->id_tipo_documento=$row['id_tipo_documento'];
                $item->tipo_documento=$row['tipo_documento'];
                $item->identificacion=$row['identificacion'];
            }
            
            return $item;
          
        }catch(PDOException $e){
            return false;
        }
        
    }

    // obtener roles
    public function getbyIdUsuarioInfoU($id_persona){
        $items=[];
        $query = $this->db->connect()->prepare("SELECT usuario_rol.id_usuario, 
            usuario_rol.id_rol, rol.descripcion AS rol 
            FROM rol,usuario_rol,usuario, persona
            WHERE usuario_rol.id_rol=rol.id_rol
            AND usuario_rol.id_usuario=usuario.id_usuario 
            AND usuario.id_persona=persona.id_persona
            AND usuario.id_persona=:id_persona");
        try{
            $query ->execute(['id_persona'=>$id_persona]);

            while($row = $query->fetch()){
                $item = new Arcu();
                $item->id_usuario = $row['id_usuario'];

            //rol       
                $item->id_rol = $row['id_rol'];
                $item->rol = $row['rol'];
                //  var_dump($row['usuario']);
                array_push($items,$item);
            }


            return $items;
        }catch(PDOException  $e){
                return null;
        }
    }

    //rolespor id
    public function getRolbyID($id_persona, $id_rol){

        try{
            $query=$this->db->connect()->prepare("SELECT usuario_rol.id_usuario, 
                usuario_rol.id_rol, rol.descripcion AS rol 
                FROM rol,usuario_rol,usuario, persona
                WHERE usuario_rol.id_rol=rol.id_rol
                AND usuario_rol.id_usuario=usuario.id_usuario 
                AND usuario.id_persona=persona.id_persona
                AND usuario.id_persona=:id_persona 
                AND usuario_rol.id_rol=:id_rol");
            $query->execute([
                'id_persona'=>$id_persona,
                'id_rol'=>$id_rol
            ]);
      
            $item=new Arcu();
            while($row=$query->fetch()){
                $item->id_usuario = $row['id_usuario'];
                $item->id_rol = $row['id_rol'];
                $item->rol = $row['rol'];
            }
              
            return $item;
                
        } catch(PDOException $e){
                return false;
        }
      
    }

    //////////////    funcion que llama datos de tablas catalogos   ///////////////
    public function getCatalogo($valor){
        $items=[];
        try{
            $query=$this->db->connect()->query("SELECT * FROM ".$valor."");
      
            while($row=$query->fetch()){

                $item=new Arcu();
                $item->id=$row['id_'.$valor.''];
                $item->descripcion=$row['descripcion'];
                array_push($items,$item);
            
            }
            return $items;
            
        }catch(PDOException $e){
            return[];
        }
      
    }
    ///////////////////////////////////////////////////////

    public function getPerfil(){
        $items=[];
        try{
          $query=$this->db->connect()->prepare("SELECT * FROM perfil WHERE id_perfil != :id_perfil;");
          $query->execute(['id_perfil'=>3]);
          while($row=$query->fetch()){
            $item=new Arcu();
            $item->id_perfil=$row['id_perfil'];
            $item->descripcion=$row['descripcion'];
            array_push($items,$item);
          }
          return $items;
          
        }catch(PDOException $e){
          return[];
        }
        
    }

    public function update($datos){
        try{
            //1. guardas el objeto pdo en una variable
            $pdo=$this->db->connect();
                    
            //2. comienzas transaccion
            $pdo->beginTransaction();
            
            $persona=$pdo->prepare("UPDATE persona 
            SET primer_nombre=:primer_nombre, 
                segundo_nombre=:segundo_nombre,
                primer_apellido=:primer_apellido,
                segundo_apellido=:segundo_apellido,
                telefono=:telefono,
                genero=:genero,
                id_ciudad=:id_ciudad
                WHERE id_persona=:id_persona;");

            $persona->execute([
                'primer_nombre'=>$datos['pnombre'],
                'segundo_nombre'=>$datos['snombre'],
                'primer_apellido'=>$datos['papellido'],
                'segundo_apellido'=>$datos['sapellido'],
                'telefono'=>$datos['telefono'],
                'genero'=>$datos['genero'],
                'id_ciudad'=>$datos['ciudad'],
                'id_persona'=>$datos['id_persona']
                ]);
            
            $persona_nacionalidad=$pdo->prepare("UPDATE persona_nacionalidad 
                SET identificacion=:identificacion, 
                    id_documento_identidad_tipo=:id_documento_identidad_tipo
                    WHERE id_persona=:id_persona;");
                    
            $persona_nacionalidad->execute([
                'identificacion'=>$datos['cedula'],
                'id_documento_identidad_tipo'=>$datos['tipo_documento'],
                'id_persona'=>$datos['id_persona']
            ]);

            
            //4. consignas la transaccion (en caso de que no suceda ningun fallo)
            $pdo->commit(); 

            return true;
        }catch(PDOException $e){
            //5. regresas a un estado anterior en caso de error
            $pdo->rollBack();
            return false;
        }
    }


    public function updateUser($datos){
        try{
            //1. guardas el objeto pdo en una variable
            $pdo=$this->db->connect();
                    
            //2. comienzas transaccion
            $pdo->beginTransaction();
            

            //se encripta la contraseña
            $crypt= new SED();
            $clave=$crypt->encryption($datos['clave']);

            $usuario=$pdo->prepare("UPDATE usuario 
                SET usuario=:usuario,
                clave=:clave 
                WHERE id_persona=:id_persona;");
                    
            $usuario->execute([
                'usuario'=>$datos['usuario'],
                'clave'=>$clave,
                'id_persona'=>$datos['id_persona']
            ]);

            //4. consignas la transaccion (en caso de que no suceda ningun fallo)
            $pdo->commit(); 

            return true;
        }catch(PDOException $e){
            //5. regresas a un estado anterior en caso de error
            $pdo->rollBack();
            return false;
        }
    }


}

?>