
    hQ                        d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlm	Z	 ej                  j                  ej                  j                  e            Zej                  j                  e      Zej                  j!                  edd      Z e	e       e j                  j%                  d       d dlmZ d dlmZ d dlZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$y)    N)FTP)load_dotenvconfiguracionesz.envz/var/www/html/config)get_connection)datetimec                  x   t               } | dddS 	 d}| j                  d      }|j                  |       |j                         }|j	                          | j	                          |rdd|d	S dd
dS # t
        $ r;}j	                          | j	                          ddt        |       dcY d }~S d }~ww xY w)Nr      Error de conexiónsuccessmessagezSELECT * FROM empleados_areasT
dictionary   u   Áreas encontradasr   r   datau   Error al buscar las áreasError: r   cursorexecutefetchallclose	Exceptionstr)
conexionBDqueryr   areases        R/var/www/dev.api.imparables.com.co/api_imparables/crm/administracion/my_profile.pyconsultarAreasr       s    !J)=>>
/""d"3u! /  7 
  
  Q)
 	
	
s$   AA5 0A5 5	B9>0B4.B94B9c                    t               }|dddS 	 | j                  d      }| j                  d      }d}|j                         }|j                  |||f       |j	                          |j                          |j                          dd| d	S # t        $ r;}j                          |j                          dd
t        |       dcY d }~S d }~ww xY w)Nr   r	   r
   areadescripcionzb
            INSERT INTO empleados_areas (area, descripcion) 
            VALUES (%s, %s)
        r   u   Área insertadar   r   r   getr   r   commitr   r   r   )r   r   r!   r"   r   r   r   s          r   insertarArear&   D   s    !J)=>>
xxhh}- ""$ut[12 (
 	
  
 Q)
 	

s   A=B 	C0C
CCc                    t               }|dddS 	 |j                  d      }|j                  d      }d}|j                         }|j                  |||| f       |j	                          |j                          |j                          | |d<   dd	|d
S # t        $ r<}j                          |j                          ddt        |       g d
cY d }~S d }~ww xY w)Nr   r	   r
   r!   r"   zr
            UPDATE empleados_areas
            SET area = %s, descripcion = %s
            WHERE id = %s
        idr   u   Área actualizadar   r   r#   )r(   r   r   r!   r"   r   r   r   s           r   actualizarArear)   f   s    !J)=>>
xxhh}-
 ""$ut["56T
 *
 	
  
 Q)
 	

s   BB 	C 1CCCc                    t               }|dddS 	 | }d}|j                         }|j                  ||f       |j                         d   }|dkD  r%|j	                          |j	                          dddS d}|j                  ||f       |j                          |j	                          |j	                          dddS # t        $ r;}j	                          |j	                          dd	t        |       dcY d }~S d }~ww xY w)
Nr   r	   r
   zp
            SELECT COUNT(*) as count 
            FROM empleados_cargos 
            WHERE idArea = %s
        u;   No se puede eliminar el área porque tiene cargos asociadoszX
                DELETE FROM empleados_areas 
                WHERE id = %s
            r   u   Área eliminada correctamenter   r   r   r   fetchoner   r%   r   r   )r(   r   idArear   r   countr   s          r   eliminarArear/      s   !J)=>>+

 ""$uvi(!!$19LLNX E NN56),LLN : 
  
 Q)
 	

%   A#C 7A	C 	D
0D :D Dc                  z   t               } | dddS 	 d}| j                  d      }|j                  |       |j                         }|j	                          | j	                          |rdd|d	S dd
g d	S # t
        $ r;}j	                          | j	                          ddt        |       dcY d }~S d }~ww xY w)Nr   r	   r
   z
            SELECT ec.*, ea.area AS nomarea
            FROM empleados_cargos ec
            LEFT JOIN empleados_areas ea ON ea.id = ec.idArea
        Tr   r   Cargos encontradosr   Error al buscar los cargosr   r   )r   r   r   cargosr   s        r   consultarCargosr5      s    !J)=>>#

 ""d"3u" /  7   
 Q)
 	

s$   AA6 0A6 6	B:?0B5/B:5B:c                 |   t               }|dddS 	 d}|j                  d      }|j                  || f       |j                         }|j	                          |j	                          |rdd|d	S dd
dS # t
        $ r;}j	                          |j	                          ddt        |       dcY d }~S d }~ww xY w)Nr   r	   r
   z
            SELECT ec.*, ea.area AS nomarea
            FROM empleados_cargos ec
            LEFT JOIN empleados_areas ea ON ea.id = ec.idArea
            WHERE ec.idArea = %s
        Tr   r   r2   r   r3   r   r   )r-   r   r   r   r4   r   s         r   consultarCargosByAreasr7      s    !J)=>> 
 ""d"3uvi("/  7 
  
 Q)
 	

$   AA7 2A7 7	B; 0B60B;6B;c                 6   t               }|dddS 	 | j                  d      }| j                  d      }| j                  d      }d}|j                  d	      }|j                  ||||f       |j	                          d
}|j                  ||f       |j                         }|r|d   | d<   |j                          |j                          dd| dS # t        $ r;}j                          |j                          ddt        |       dcY d }~S d }~ww xY w)Nr   r	   r
   cargor"   r-   zo
            INSERT INTO empleados_cargos (cargo, descripcion, idArea)
            VALUES (%s, %s, %s)
        Tr   z+SELECT * FROM empleados_areas WHERE id = %sr!   nomarear   zCargo insertador   r   )	r   r$   r   r   r%   r,   r   r   r   )	r   r   r:   r"   r-   r   r   r;   r   s	            r   insertarCargor<     s'   !J)=>>%
!hh}-(# ""d"3uuk6:; >uvi(//#%foDO (
 	
  
 Q)
 	

s   C C 	D0DDDc                    	 t               }|dddS |d   }|d   }|d   }d}|j                         }|j                  ||||| f       |j                          d}|j                  ||f       |j	                         }	|	r|	d	   |d
<   |j                          |j                          | |d<   dd|dS # t        $ r}
ddt        |
       dcY d }
~
S d }
~
ww xY w)NFr	   r
   r:   r"   r-   z
            UPDATE empleados_cargos
            SET cargo = %s, descripcion = %s, idArea = %s
            WHERE id = %s
        z.SELECT area FROM empleados_areas WHERE id = %sr   r;   r(   TzCargo actualizador   r   )r   r   r   r%   r,   r   r   r   )r(   r   r   r:   r"   r-   r   r   
query_arear;   r   s              r   actualizarCargor?   ;  s   1
#%
 /  W=)h
 ""$uuk62>? 	 F
zF9-//# %ajDOT
 *
 	
  
 Q)
 	

s#   B4 B B4 4	C=CCCc                    t               }|dddS 	 | }d}|j                         }|j                  ||f       |j                         d   }|dkD  r%|j	                          |j	                          dddS d}|j                  ||f       |j                          |j	                          |j	                          dddS # t        $ r;}j	                          |j	                          dd	t        |       dcY d }~S d }~ww xY w)
Nr   r	   r
   zi
            SELECT COUNT(*) as count
            FROM empleados
            WHERE id_cargo = %s
        z>No se puede eliminar el cargo porque tiene empleados asociadoszX
                DELETE FROM empleados_cargos
                WHERE id = %s
            r   zCargo eliminado correctamenter   r+   )r(   r   idCargor   r   r.   r   s          r   eliminarCargosrB   q  s   !J)=>>+

 ""$uwj)!!$19LLN[ E NN57*-LLN : 
  
 Q)
 	

r0   c                    t               }|dddS 	 |j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d      }|j                  d	      }|j                  d
      }	|j                  d      }
|j                  d      }d}|j                         }|j                  ||||||||	|
|| f
       |j	                          |j                          |j                          dd|dS # t        $ r<}j                          |j                          ddt        |       g dcY d }~S d }~ww xY w)Nr   r	   r
   nombres	apellidostipo_doc	documentocorreo_corporativocorreo_alternotelefono	direccionstatusz
            UPDATE empleados
            SET nombres = %s, apellidos = %s, tipo_doc = %s, documento = %s, correo_corporativo = %s,
                correo_alterno = %s, telefono = %s, direccion = %s, status = %s
            WHERE id = %s
        r   zPerfil actualizador   r   r#   )r(   r   r   rD   rE   rF   rG   rH   rI   rJ   rK   rL   r   r   r   s                  r   actualizarMyPerfilrM     s_   !J)=>>&
((9%HH[)	88J'HH[)	!XX&:;"2388J'HH[)	(# ""$uw	8YHZ-xFBP 	Q +
 	
  
 Q)
 	

s   C<D 	E1E
EEc                 r   t               }|dddS 	 |j                  d      }d}|j                         }|j                  ||| f       |j	                          t        j                         j                  d      }d}d}|j                  || ||f       |j	                          d	}	|j                  |	| f       |j	                          |j                          |j                          d
d|dS # t        $ r<}
j                          |j                          ddt        |
       g dcY d }
~
S d }
~
ww xY w)Nr   r	   r
   newPasswordzY
            UPDATE usuarios
            SET pass = %s
            WHERE id = %s
        z%Y-%m-%d %H:%M:%Su   Actualización de contraseñazm
            INSERT INTO logs_login (id_usuario, fecha_hora, evento)
            VALUES (%s, %s, %s)
        z]
            UPDATE usuarios
            SET passtemp = ''
            WHERE id = %s
        r   u   Contraseña actualizadar   r   )r   r$   r   r   r%   r   nowstrftimer   r   r   )idUserr   r   pass_r   r   
fecha_horaevento	query_logquery_update_tempr   s              r      actualizarContraseñarX     sB   !J)=>>0
'
 ""$uufo. \\^,,-@A
0	 	y6:v">?
 	(6)4 0
 	
  
 Q)
 	

s   CC1 1	D6:1D1+D61D6c           
      F   	 d|  d}t        d|        t        j                  j                  |      rt        j                  |      }|D ]f  }t        j                  j                  ||      }t        j                  j                  |      sC	 t        j                  |       t        d|        h y t        d| d       y # t        $ r$}t        d| dt        |              Y d }~d }~ww xY w# t        $ r!}t        d	t        |              Y d }~y d }~ww xY w)
Nz&/var/www/html/crm/assets/img/employee//z[INFO] Verificando archivos en z[SUCCESS] Archivo eliminado: z[ERROR] No se pudo borrar z: z[WARNING] La carpeta z no existe.z![ERROR] Error en limpiarArchivo: )
printospathisdirlistdirjoinisfileremover   r   )idEmpcarpetaarchivosarchivoruta_completar   s         r   limpiarArchivorh     s   <:5'C/y9:77==!zz'*H# P "Wg >77>>-0P		-0 =gYGHP )'+>? % P :7)2c!fXNOOP
  <1#a&:;;<sH   BC6 #C3C6 6C6 	C3C.)C6 .C33C6 6	D ?DD c                    	 t               }|sdddS d|vsd|vsd|vrdddS |d   }|  |d    }|d   }g d}||vrdd	dS t        j                  d
      }t        j                  d      }t        j                  d      }	t        j                  d      }
t        |||	|
g      sdddS |
 |  d}| | }d\  }}	 t	        d| d|	        t
        j                  j                  |	      }t        j                  |df      }|j                  ||       t
        j                  j                  |      }	 |j                  |       	 |j%                  |      D ]2  }|j'                  t)        |             s|j+                  | |        4 	 |j.                  j1                  d       |j3                  |j.                  |       |j#                  |d       	 |r|j5                          |r|j5                          	 t        j                  dd      j7                  d      }|sdddS | d|  d| }	 |j9                         }d}|j;                  ||| f       |j=                          ddd |id!|r|j5                          |r|j5                          S S # t        $ r |j                  d      j                  d      }d}|D ]b  }|s|| dz  }	 |j                  |       !# t        $ r7 |j!                  |       |j#                  |d       |j                  |       Y `w xY w Y w xY w# t,        $ r Y w xY w# t,        $ r7}dd| dcY d }~|r|j5                          |r|j5                          S S d }~ww xY w# |r|j5                          |r|j5                          w w xY w# t,        $ r7}dd"| dcY d }~r|j5                          |r|j5                          S S d }~ww xY w# r|j5                          |r|j5                          w w xY w# t,        $ r}dd#t)        |       dcY d }~S d }~ww xY w)$NFu%   Error de conexión a la base de datosr
   profile_picture	file_name	file_typez%Faltan datos para procesar la imagen.)z
image/jpegz	image/pngz	image/jpgzFormato de imagen no permitido.
ftp_serverftp_user_nameftp_private_key_pathUpdate_fotou5   Variables de entorno incompletas para conexión SFTP.rZ   )NNu   🔐 [SFTP] Conectando a z con clave privada en    )usernamepkeyi  r   i  u$   Error en la conexión o carga SFTP: URL_IMG z+Variable de entorno URL_IMG no configurada.z/assets/img/employee/z.UPDATE empleados SET imagen = %s WHERE id = %sTz!Perfil actualizado correctamente.imagenr   z&Error al actualizar la base de datos: zError general: )r   r\   getenvallr[   paramikoRSAKeyfrom_private_key_file	Transportconnect
SFTPClientfrom_transportchdirIOErrorstripsplitmkdirchmodr_   
startswithr   rb   r   fileseekputfor   rstripr   r   r%   )rc   r   r   rj   rk   rl   allowed_image_typessftp_serversftp_user_namepem_key_pathupdate_folderremote_folderremote_file_path	transportsftpkey
path_partscurrent_pathpartrf   r   app_url
imagen_urlr   r   s                            r   
updateFotor   "  s   lI#%
$1XYYD(Kt,C{Z^G^$1XYY01gd;/01	%	F//$1RSS
 ii-?3yy!78		-0K}MN$1hii(/%2+_YK8$	4+	"-k]:PQ]P^_`//77EC **K+<=I~C@&&55i@D5

=)#||M: AG))#e*5}ogY$?@A   %%a(JJ++-=>JJ'/ 

!
 ))Ir*11#6$1^__y 5eWAi[I
	#&&(FDENN5:u"56  >!:.   " }  5*005;;C@
"& 5D$4&
25 JJ|4& 5 JJ|4 JJ|V< JJ|4555$    	]$3WXYWZ1[\\ 

! 	] 

! 0  	_$3YZ[Y\1]^^   " 	_   "   I s1vh-GHHIs3  P P P A'P ,P ?A9M 9J .L4 :L4 A
M AP -
P 8=N1 5$P 2L1L1K)(L1)=L)&L1(L))L1-M 0L11M 4	M=M  MM 	NM?NN $P ?NN 'N..P 1	O1:O,O1O4 $P ,O11O4 4'PP 	Q'P=7Q=Qc                 |   t               }|dddS 	 d}|j                  d      }|j                  || f       |j                         }|j	                          |j	                          |rdd|d	S dd
dS # t
        $ r;}j	                          |j	                          ddt        |       dcY d }~S d }~ww xY w)Nr   r	   r
   z.SELECT * FROM logs_login WHERE id_usuario = %sTr   r   zLogs login encontradosr   zError al buscar los logs loginr   r   )rR   r   r   r   logsr   s         r   consultarLogsLoginr     s    !J+
 	


@""d"3uvi( 3  ; 
  
 Q)
 	

r8   )%sysr\   shutilrequestsry   ftplibr   jsondotenvr   r]   dirnameabspath__file__
script_dircrm_dirr`   env_pathappendcnxpdor   r   hashlibr   r&   r)   r/   r5   r7   r<   r?   rB   rM   rX   rh   r   r        r   <module>r      s    
 	      
 WW__RWW__X67

''//*
%77<<!2F; H  & ' !  "
H 
D#
J0
f(
T%
N*
X2
l0
h+
Z5
t<,mIb$
r   