
    iH.                     v    S SK JrJrJr  S SKJrJrJrJrJ	r	J
r
JrJrJrJr  S SKJr  S SKrS SKrS SKJr  S rg)    )jsonifyrequestrender_template)
get_AccessEmployeesget_all_request_typesget_roles_by_filtersget_all_companiesget_divisions_by_companyget_departments_by_divisionget_infocheck_if_email_existsupdate_infoupdate_user_request_rejected)MessageN)send_activation_emailc                   ^ ^^ T R                  SS/S9S 5       nT R                  SS/S9S 5       nT R                  SS/S9S 5       nT R                  S	S/S9S
 5       nT R                  SS/S9S 5       nT R                  SS/S9S 5       nT R                  SS/S9S 5       nT R                  SS/S9S 5       n	T R                  SS/S9U U4S j5       n
T R                  SS/S9U4S j5       nSU U4S jjmT $ )uG   
Agrupamos todas las funciones que importamos en la aplicación Flask.
z2/SupyCtrol_Module/DataMaster/DMAccessEmployee/listGET)methodsc                       [        5       n [        U 5      S4$ ! [         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)u8   Retorna la lista de empleados pendientes de aceptación.   error  N)r   r   	Exceptionstr)AccessEmployeeses     oC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\SupyCtrol_Module\DataMaster\DMAccessEmployee.pylist_AccessEmployees5funcion_AccessEmployees.<locals>.list_AccessEmployees   sH    	313O?+S00 	3GSV,-s22	3    
AA A Az;/SupyCtrol_Module/DataMaster/DMAccessEmployee/request-typesc                       [        5       n [        U 5      S4$ ! [         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)z4Retorna la lista de tipos de formulario disponibles.r   r   r   N)r   r   r   r   )request_typesr   s     r   get_request_types2funcion_AccessEmployees.<locals>.get_request_types   sH    	313M=)3.. 	3GSV,-s22	3r    z7/SupyCtrol_Module/DataMaster/DMAccessEmployee/companiesc                       [        5       n [        U 5      S4$ ! [         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)u,   Retorna la lista de compañías disponibles.r   r   r   N)r	   r   r   r   )	companiesr   s     r   get_companies.funcion_AccessEmployees.<locals>.get_companies'   sH    	3)+I9%s** 	3GSV,-s22	3r    z7/SupyCtrol_Module/DataMaster/DMAccessEmployee/divisionsc                       [         R                  R                  S5      n U (       d  [        SS05      S4$ [	        U 5      n[        U5      S4$ ! [
         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)uC   Retorna las divisiones disponibles para una compañía específica.	companyIdr   zCompanyID es requerido  r   r   N)r   argsgetr   r
   r   r   )
company_id	divisionsr   s      r   get_divisions.funcion_AccessEmployees.<locals>.get_divisions0   sw    	3 ))+6J)ABCSHH0<I9%s** 	3GSV,-s22	3s"   4A A 
A;A60A;6A;z9/SupyCtrol_Module/DataMaster/DMAccessEmployee/departmentsc                  H    [         R                  R                  S5      n [         R                  R                  S5      nU (       a  U(       d  [        SS05      S4$ [	        X5      n[        U5      S4$ ! [
         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)	uS   Retorna los departamentos disponibles para una compañía y división específicas.r*   
divisionIdr   z%CompanyID y DivisionID son requeridosr+   r   r   N)r   r,   r-   r   r   r   r   )r.   division_iddepartmentsr   s       r   get_departments0funcion_AccessEmployees.<locals>.get_departments=   s    
	3 ))+6J!,,**<8K[)PQRTWWW5jNK;',, 	3GSV,-s22	3s$   AA5 A5 5
B!?BB!B!z</SupyCtrol_Module/DataMaster/DMAccessEmployee/filtered-rolesc                  T    [         R                  R                  SS5      n [         R                  R                  SS5      n[         R                  R                  SS5      n[        XU5      n[	        U5      S4$ ! [
         a"  n[	        S[        U5      05      S4s SnA$ SnAff = f)	uY   Retorna la lista de roles disponibles filtrados por compañía, división y departamento.r*    r3   departamentIdr   r   r   N)r   r,   r-   r   r   r   r   )r.   r4   departament_idrolesr   s        r   get_filtered_roles3funcion_AccessEmployees.<locals>.get_filtered_rolesL   s    	3 ))+r:J!,,**<<K$\\--orBN(.QE5>3&& 	3GSV,-s22	3s   A8A; ;
B'B"B'"B'z5/SupyCtrol_Module/DataMaster/DMAccessEmployee/getinfoc                  ,    [         R                  R                  S5      n [        SU 5        U (       d  [	        SS05      S4$ [        U 5      n[        SU5        [	        U5      S4$ ! [         a"  n[	        S[        U5      05      S4s S	nA$ S	nAff = f)
uB   Obtiene la información detallada de un empleado por su RequestID.	RequestIDzID del usuario: r   RequestID es requeridor+   u   Información del empleado: r   r   N)r   r,   r-   printr   r   r   r   )
request_idInfoEmployeer   s      r   getinfo(funcion_AccessEmployees.<locals>.getinfoY   s    	3 ))+6J$j1)ABCSHH#J/L0,?<(#-- 	3GSV,-s22	3s$   A A' #A' '
B1BBBz9/SupyCtrol_Module/DataMaster/DMAccessEmployee/check-emailc                       [         R                  R                  S5      n U (       d  [        SS05      S4$ [	        U 5      n[        SU05      S4$ ! [
         a"  n[        S[        U5      05      S4s SnA$ SnAff = f)	u?   Verifica si un correo electrónico ya existe en la tabla Users.emailr   zEmail es requeridor+   existsr   r   N)r   r,   r-   r   r   r   r   )rH   rI   r   s      r   check_email_exists3funcion_AccessEmployees.<locals>.check_email_existsl   s|    		3LL$$W-E)=>?DD*51FHf-.33 	3GSV,-s22	3s"   4A A 
A=A82A=8A=z4/SupyCtrol_Module/DataMaster/DMAccessEmployee/updatePOSTc                    >  [         R                  " 5       n U (       d  [        SS05      S4$ U R                  S5      nU(       d  [        SS05      S4$ [	        U 5      n[        SU5        U(       a  SU;  a  [        SS05      S	4$ [        S
US   5        [        T	T
US   5      n [        U[        5      (       a4  Uu  pEUR                  5       n[        SUR                  SS5      S.5      U4$ [        S[        US5      (       a  UR                  OSS.5      S4$ ! [         aM  nSSKn[        SU 35        [        UR                  5       5        [        S[        U5      05      S	4s SnA$ SnAff = f)u)   Actualiza la información de un empleado.r   zNo se recibieron datosr+   r@   rA   u    Resultado de la actualización: user_idz0No se pudo obtener el ID del usuario actualizador   zID del usuario actualizado: ub   Hubo un error al enviar el correo de activación contacte a soporte carlos.velazquezm@igsa.com.mx zError desconocido)messager   u&   Información actualizada correctamentejsonzEmail enviado correctamente)rO   
token_infor   r   Nz)Error en al intentar resgistrar usuario: )r   get_jsonr   r-   r   rB   r   
isinstancetuplehasattrrP   r   	traceback
format_excr   )datarC   update_resulttoken_resultjson_responsestatus_code
error_datar   rV   appmails            r   
updateinfo+funcion_AccessEmployees.<locals>.updateinfoz   s   3	3##%D )ABCSHH+.J)ABCSHH'-M4mD I]$B)[\]_bbb0-	2JK 1dM)<TUL ,..-9**335
  D'^^G5HI       
 C3:<3P3Pl//Vs   
  	3=aSAB)&&()GSV,-s22		3s6   *D &D 2D A(D 1,D 
E5(AE0*E50E5z4/SupyCtrol_Module/DataMaster/DMAccessEmployee/rejectc                    >  [         R                  " 5       n U R                  S5      nU R                  S5      nU(       d  [        SS05      S4$ [	        U5      nU(       a  SU;   a  [        SS05      S4$ [
        R                  " S5      n[        R                  R                  U5      R                  S	5      n[        XU5      nSU;   a  [        U5      S4$ T	" X25      nSU;   a  [        S
US   S.5      S4$ [        SS05      S4$ ! [         a0  n[        SU 35        [        S[        U5      05      S4s SnA$ SnAff = f)uD   Rechaza una solicitud de empleado y envía notificación por correo.
employeeId
comentarior   zID de empleado requeridor+   u/   No se pudo obtener la información del empleador   America/Mexico_Cityz%Y-%m-%d %H:%M:%SuK   Solicitud rechazada, pero hubo un problema al enviar el correo electrónico)rO   
error_mailr   rO   u9   Solicitud rechazada correctamente y notificación enviadaz[Error en reject_employee] N)r   rR   r-   r   r   pytztimezonedatetimenowstrftimer   r   rB   r   )
rX   employee_idrd   employee_inforh   current_daterY   email_resultr   enviar_correo_rechazos
            r   reject_employee0funcion_AccessEmployees.<locals>.reject_employee   s_   "	3##%D((<0K,/J )CDEsJJ %[1M G}$<)Z[\^aaa }}%:;H#,,00:CCDWXL8T^_M-'}-s22 1KL,&l".w"7    
 I'bcdfiii 	3/s34GSV,-s22	3s7   AD
 &D
 7A"D
  D
 ;D
 

E%D?9E?Ec                 .  >  U S   nU(       d  SS0$ Sn[         R                  " S5      n[        R                  R                  U5      nU S   U S   [        R                  R                  5       R                  US.n[        S	US
9n[        UT
R                  S   U/S9nXxl        T
R                  5          TR                  U5        SSS5        SS0$ ! , (       d  f       N= f! [         a%  n	[        SU	 35        S[        U	5      0s Sn	A	$ Sn	A	ff = f)u;   
Envía un correo de notificación de rechazo al empleado.
CorporateEmailr   u&   No se encontró el correo del empleadoz0Respuesta a su solicitud de acceso como empleadore   	FirstNameLastName)ru   rv   Year
ComentariozSecurity/UserPasswordemail.html)rX   MAIL_USERNAME)sender
recipientsNsuccesszCorreo enviado correctamentez#Error al enviar correo de rechazo: )rg   rh   ri   rj   yearr   r   confightmlapp_contextsendr   rB   r   )rm   rd   destinatarioasuntorh   rn   rX   cuerpo_htmlmsgr   r^   r_   s             r   rp   6funcion_AccessEmployees.<locals>.enviar_correo_rechazo   s   &	%()9:L!IJJ HF }}%:;H#,,00:L*;7)*5 ))--/44(	D **KRVWKzz/2(>C #H "		# # =>> #"  	%7s;<SV$$	%s;   C% B#C% 6CC% 
C"C% %
D/D	DD)N)route)r^   r_   r   r#   r'   r0   r6   r=   rE   rJ   r`   rq   rp   s   ``          @r   funcion_AccessEmployeesr      s    	YYCeWYU3 V3 	YYLW\V]Y^3 _3 	YYHSXRYYZ3 [3 	YYHSXRYYZ
3 [
3 	YYJUZT[Y\3 ]3 	YYMX]W^Y_
3 `
3 	YYFQVPWYX3 Y3$ 	YYJUZT[Y\3 ]3 	YYEPVxYX53 Y53p 	YYEPVxYX$3 Y$3L*% *%Z J    )flaskr   r   r   6Consultas_SQL.SupYCtrol.DataMaster.DMAccessEmployeeSQLr   r   r   r	   r
   r   r   r   r   r   
flask_mailr   ri   rg    App.Security_Module.UserPasswordr   r    r   r   <module>r      s0   
 4 3  
    Bwr   