U
    iY                     @   sT   d dl mZ d dlmZmZmZ dd Zdd Zdd Zd	d
 Zdd Z	dd Z
dS )    )get_connection)datetime	timedeltatimezonec           	   
   C   s   zd}t  }| }||| f | }|r|d }|d }|dkrt|d  d|d  d|d  d|d	  }n0|d
kr|d }ntd|  W 5 Q R  W d S ||dW  5 Q R  W S td|   W 5 Q R  W d S W 5 Q R X W n4 tk
r } ztd|   W 5 d }~X Y nX d S )Nz
            SELECT RequestTypeID, FirstName, MiddleName, LastName, SecondLastName, BusinessName, Email 
            FROM Profiles WHERE USERID = ?
        r      ZEMPLEADO             )ZDISCANZDISEUAu   DISMÉXu   CLIMÉXZCLIEXT   zRequestTypeID desconocido: )NombreEmailu$   No se encontró perfil para UserID: Error: r   cursorexecutefetchoneprint	Exception)	UserIDcheck_user_queryconnr   dataZrequest_type_idr   r   e r   eC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\Consultas_SQL\Security\UserPasswordSQL.pyconsultar_profile   s*    ,
r   c              
   C   s   zd}t  tdd }t }| }||| g | }|sbtd|  d W 5 Q R  W d S d}| ||f}||| | d }	|	  |	W  5 Q R  W S Q R X W n2 t
k
r }
 ztd|
   W 5 d }
~
X Y nX d S )	NzA
            SELECT COUNT(*) FROM Users WHERE UserID = ?
        i  )minuteszError: El UserID z no existe en la tabla Usersz
                INSERT INTO ActivationTokens (UserID, Token, CreatedAt, ExpiresAt, IsUsed)
                OUTPUT INSERTED.ActivationTokenID
                VALUES (?, ?, GETDATE(), ?, 0);
            r   zError guardando token: )r   utcnowr   r   r   r   fetchvalr   r   commitr   )r   Tokenr   
expires_atr   r   Z
user_countZinsert_queryvaluestoken_idr   r   r   r   
save_Token/   s&    
r&   c           
   
   C   s   ddl }|d}zn| s td|  }d}t $}| }|||f | }W 5 Q R X |s|d| }|| t	||W S  t	k
r    Y n: t
k
r }	 z|d|  d|	   W 5 d}	~	X Y nX dS )	u   
    Busca el módulo correspondiente a la ruta proporcionada.
    Retorna una tupla (ModuleID, CompanyID, DivisionID, DepartamentID)
    o lanza LookupError si no se encuentra.
    r   NZuser_accessu2   Ruta vacía o nula proporcionada a get_ModuleID().z
            SELECT ModuleID, CompanyID, DivisionID, DepartamentID
            FROM Modules
            WHERE LOWER(RutaPython) = LOWER(?)
        u*   Módulo no encontrado en BD para la ruta: zError en get_ModuleID(z): )logging	getLogger
ValueErrorstripr   r   r   r   warningLookupErrorr   error)
rutar'   loggerZruta_limpiaLoduleID_queryr   r   r   msgr   r   r   r   get_ModuleID\   s*    


r2   c              
   C   s~   zFd}t  2}| }||| f | }|W  5 Q R  W S Q R X W n2 tk
rx } ztd|   W 5 d }~X Y nX d S )Nz^
            SELECT CompanyID,DivisionID,DepartamentID FROM Profiles WHERE UserID = ?
        r   r   r   r   r   r   r   )r   r0   r   r   r   r   r   r   r   .get_CompanyID_DivisionID_DepartamentID_Profile   s    r4   c              
   C   s   zXd}t  D}| }||| f | }|d }td| |W  5 Q R  W S Q R X W n2 tk
r } ztd|   W 5 d }~X Y nX d S )NzD
            Select RoleID from UserRoles where UserID  = ?
        r   z------------------------>r   r   )useridZRoleID_queryr   r   r   RoleIDr   r   r   r   
get_RoleID   s    
r7   c              
   C   s   zPd}t  <}| }||| |f | }|d }|W  5 Q R  W S Q R X W n2 tk
r } ztd|   W 5 d }~X Y nX d S )NzX
            Select count(*) from RoleModules where RoleID = ? AND ModuleID = ?
        r   r   r3   )r6   ZModuloIDZpermiso_queryr   r   r   Zpermisor   r   r   r   get_permiso   s    r8   N)Consultas_SQL.conexionr   r   r   r   r   r&   r2   r4   r7   r8   r   r   r   r   <module>   s   (-,