§
    Çþ¬he$  ã                   óü  — d dl mZmZmZmZ d dlmZmZ d dlm	Z	 d dl
mZmZ  ede¦  «        Ze                     ddg¬¦  «        ed	„ ¦   «         ¦   «         Ze                     d
dg¬¦  «        ed„ ¦   «         ¦   «         Ze                     d
dg¬¦  «        ed„ ¦   «         ¦   «         Ze                     d
dg¬¦  «        ed„ ¦   «         ¦   «         Ze                     ddg¬¦  «        ed„ ¦   «         ¦   «         ZdS )é    )Ú	BlueprintÚrequestÚjsonifyÚsession)ÚdbÚUser)ÚCompany)Úrequire_authÚrequire_roleÚuserz/usersÚGET)Úmethodsc                  óâ  — 	 t          j        d¦  «        } t          j        d¦  «        }t          j                             ddt          ¬¦  «        }t          j                             ddt          ¬¦  «        }t          j                             dd	¦  «        }t
          j        }| d
k    rn0| dk    r|                     |¬¦  «        }nt          ddi¦  «        dfS |r’| 	                    t
          j
                             |¦  «        t
          j                             |¦  «        z  t
          j                             |¦  «        z  t
          j                             |¦  «        z  ¦  «        }|                     ||d¬¦  «        }t          d„ |j        D ¦   «         |j        |j        ||dœ¦  «        dfS # t&          $ r-}t          ddt)          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)u:   Obtener lista de usuarios segÃºn el rol del usuario actualÚ	user_roleÚ
company_idÚpageé   )ÚtypeÚper_pageé
   ÚsearchÚ Úsuper_adminÚ
accountant)r   ÚerrorúNo autorizadoé“  F)r   r   Ú	error_outc                 ó6   — g | ]}|                      ¦   «         ‘ŒS © )Úto_dict)Ú.0r   s     ú3/home/ubuntu/invoice-606-backend/src/routes/user.pyú
<listcomp>zget_users.<locals>.<listcomp>2   s    € Ð=Ð=Ð=¨�d—l’l‘n”nÐ=Ð=Ð=ó    )ÚusersÚtotalÚpagesÚcurrent_pager   éÈ   úError interno del servidor: éô  N)r   Úgetr   ÚargsÚintr   ÚqueryÚ	filter_byr   ÚfilterÚusernameÚcontainsÚemailÚ
first_nameÚ	last_nameÚpaginateÚitemsr'   r(   Ú	ExceptionÚstr)r   Úuser_company_idr   r   r   r0   r&   Úes           r#   Ú	get_usersr>      s  € ð.PÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆåŒ|×Ò ¨µÐÑ4Ô4ˆÝ”<×#Ò# J°½Ð#Ñ=Ô=ˆÝ”×!Ò! (¨BÑ/Ô/ˆå”
ˆð ˜Ò%ð 	<àØ˜,Ò&ð 	<à—O’O¨�OÑ?Ô?ˆEˆEõ ˜G _Ð5Ñ6Ô6¸Ð;Ð;ð ð 	Ø—L’LÝ”×'Ò'¨Ñ/Ô/Ý”×$Ò$ VÑ,Ô,ñ.å”×)Ò)¨&Ñ1Ô1ñ3õ ”×(Ò(¨Ñ0Ô0ñ2ñô ˆEð —’ØØØð ñ 
ô 
ˆõ Ø=Ð=°´Ð=Ñ=Ô=Ø”[Ø”[Ø Ø ð
ð 
ñ ô ð ðð 	øõ ð Pð Pð PÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs%   ‚CF7 ÃCF7 Æ7
G.Ç"G)Ç#G.Ç)G.z/users/<int:user_id>c                 ó,  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j                             | ¦  «        }|st	          ddi¦  «        dfS |dk    rn>|dk    r|j        |k    rt	          dd	i¦  «        d
fS n| |k    rt	          dd	i¦  «        d
fS t	          d|                     ¦   «         i¦  «        dfS # t          $ r-}t	          ddt          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)u.   Obtener informaciÃ³n de un usuario especÃ­ficoÚuser_idr   r   r   úUsuario no encontradoé”  r   r   r   r   r   r*   r+   r,   N)	r   r-   r   r0   r   r   r!   r:   r;   )r@   Úcurrent_user_idr   r<   r   r=   s         r#   Úget_userrD   <   sZ  € ðPÝ!œ+ iÑ0Ô0ˆÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆåŒz�~Š~˜gÑ&Ô&ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˜Ò%ð 
	@àØ˜,Ò&ð 	@àŒ /Ò1ð @Ý ¨Ð9Ñ:Ô:¸CÐ?Ð?ð@ð ˜/Ò)ð @Ý ¨Ð9Ñ:Ô:¸CÐ?Ð?å˜ §¢¡¤Ð/Ñ0Ô0°#Ð5Ð5øåð Pð Pð PÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs0   ‚A/C Á2*C ÂC Â7$C Ã
DÃ&"DÄDÄDÚPUTc                 óB  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }t          j                             | ¦  «        }|st	          ddi¦  «        dfS d}|dk    rd	}n|d
k    r|j        |k    rd	}n| |k    rd	}|st	          ddi¦  «        dfS t          j        ¦   «         }|                     d¦  «        r|                     d¦  «        |_        |                     d¦  «        r|                     d¦  «        |_	        |                     d¦  «        r|                     d¦  «        |_
        |dv rÚ| |k    rÔ|                     d¦  «        r�t          j                             t          j        |                     d¦  «        k    t          j        | k    ¦  «                             ¦   «         }|rt	          ddi¦  «        dfS |                     d¦  «        |_        |                     d¦  «        �|                     d¦  «        |_        |dk    r­|                     d¦  «        r5g d¢}|                     d¦  «        |v r|                     d¦  «        |_        |                     d¦  «        rNt"          j                             |                     d¦  «        ¦  «        }	|	r|                     d¦  «        |_        | |k    r |                     d¦  «        r‹|                     d¦  «        st	          ddi¦  «        dfS |                     |                     d¦  «        ¦  «        st	          ddi¦  «        dfS |                     |                     d¦  «        ¦  «         t(          j                              ¦   «          t	          d|                     ¦   «         dœ¦  «        dfS # t.          $ rK}
t(          j                              ¦   «          t	          dd t3          |
¦  «        › �i¦  «        d!fcY d}
~
S d}
~
ww xY w)"u%   Actualizar informaciÃ³n de un usuarior@   r   r   r   rA   rB   Fr   Tr   r   r   r6   r7   Úphone)r   r   r5   zEmail ya existei™  Ú	is_activeNÚrole)r   r   ÚemployeeÚnew_passwordÚcurrent_passwordu   ContraseÃ±a actual requeridaé�  u   ContraseÃ±a actual incorrectaz Usuario actualizado exitosamente©Úmessager   r*   r+   r,   )r   r-   r   r0   r   r   r   Úget_jsonr6   r7   rG   r2   r5   ÚidÚfirstrH   rI   r	   Úcheck_passwordÚset_passwordr   Úcommitr!   r:   Úrollbackr;   )r@   rC   r   r<   r   Úcan_editÚdataÚexisting_userÚvalid_rolesÚcompanyr=   s              r#   Úupdate_userr\   [   sA  € ðNPÝ!œ+ iÑ0Ô0ˆÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆåŒz�~Š~˜gÑ&Ô&ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˆØ˜Ò%ð 	ØˆHˆHØ˜,Ò&ð 	¨4¬?¸oÒ+Mð 	ØˆHˆHØ˜Ò'ð 	ØˆHàð 	<Ý˜G _Ð5Ñ6Ô6¸Ð;Ð;åÔÑ!Ô!ˆð �8Š8�LÑ!Ô!ð 	5Ø"Ÿhšh |Ñ4Ô4ˆDŒOØ�8Š8�KÑ Ô ð 	3Ø!ŸXšX kÑ2Ô2ˆDŒNØ�8Š8�GÑÔð 	+ØŸš 'Ñ*Ô*ˆDŒJð Ð5Ð5ð 	7¸'À_Ò:Tð 	7Ø�xŠx˜Ñ Ô ð /å $¤
× 1Ò 1Ý”J $§(¢(¨7Ñ"3Ô"3Ò3Ý”G˜wÒ&ñ!ô !÷ ’%‘'”'ð ð !ð FÝ" GÐ->Ð#?Ñ@Ô@À#ÐEÐEØ!ŸXšX gÑ.Ô.�”
à�xŠx˜Ñ$Ô$ð 7Ø!%§¢¨+Ñ!6Ô!6�”ð ˜Ò%ð 
	=Ø�xŠx˜ÑÔð 1ØGÐGÐG�Ø—8’8˜FÑ#Ô# {Ð2ð 1Ø $§¢¨Ñ 0Ô 0�D”Ià�xŠx˜Ñ%Ô%ð =å!œ-×+Ò+¨D¯HªH°\Ñ,BÔ,BÑCÔC�Øð =Ø&*§h¢h¨|Ñ&<Ô&<�D”Oð �oÒ%ð 	8¨$¯(ª(°>Ñ*BÔ*Bð 	8Ø—8’8Ð.Ñ/Ô/ð OÝ Ð)GÐHÑIÔIÈ3ÐNÐNà×&Ò& t§x¢xÐ0BÑ'CÔ'CÑDÔDð PÝ Ð)HÐIÑJÔJÈCÐOÐOà×Ò˜dŸhšh ~Ñ6Ô6Ñ7Ô7Ð7å
Œ
×ÒÑÔÐåØ9Ø—L’L‘N”Nð
ð 
ñ ô ð ðð 	øõ
 ð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs@   ‚A/O	 Á2;O	 Â.D4O	 Ç#D>O	 Ì":O	 ÍA+O	 Ï	
PÏA PÐPÐPÚDELETEc                 ó$  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }| |k    rt          ddi¦  «        dfS t          j                             | ¦  «        }|st          ddi¦  «        dfS d	}|d
k    rd}n|dk    r|j        |k    r|j        dk    rd}|st          ddi¦  «        dfS |j        s|j        rt          ddi¦  «        dfS t          j          
                    |¦  «         t          j                              ¦   «          t          ddi¦  «        dfS # t          $ rK}t          j                              ¦   «          t          ddt          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)zEliminar un usuarior@   r   r   r   z$No puedes eliminar tu propio usuariorM   rA   rB   Fr   Tr   rJ   r   r   z3No se puede eliminar usuario con facturas asociadasrO   zUsuario eliminado exitosamenter*   r+   r,   N)r   r-   r   r   r0   r   rI   Úcreated_invoicesÚapproved_invoicesr   ÚdeleterU   r:   rV   r;   )r@   rC   r   r<   r   Ú
can_deleter=   s          r#   Údelete_userrc   ¯   sâ  € ð"PÝ!œ+ iÑ0Ô0ˆÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆð �oÒ%ð 	SÝ˜GÐ%KÐLÑMÔMÈsÐRÐRåŒz�~Š~˜gÑ&Ô&ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˆ
Ø˜Ò%ð 	ØˆJˆJØ˜,Ò&ð 	¨4¬?¸oÒ+Mð 	ÐRVÔR[Ð_iÒRið 	ØˆJàð 	<Ý˜G _Ð5Ñ6Ô6¸Ð;Ð;ð Ô ð 	b DÔ$:ð 	bÝ˜GÐ%ZÐ[Ñ\Ô\Ð^aÐaÐaå
Œ
×Ò˜$ÑÔÐÝ
Œ
×ÒÑÔÐå˜	Ð#CÐDÑEÔEÀsÐJÐJøåð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs8   ‚AD: Á3D: Â=D: Ã	 D: Ã*AD: Ä:
FÅA F
ÆFÆ
Fz"/users/<int:user_id>/toggle-statusÚPOSTc                 óì  — 	 t          j        d¦  «        }t          j        d¦  «        }t          j        d¦  «        }| |k    rt          ddi¦  «        dfS t          j                             | ¦  «        }|st          ddi¦  «        dfS d	}|d
k    rd}n|dk    r|j        |k    rd}|st          ddi¦  «        dfS |j         |_        t          j                              ¦   «          |j        rdnd}t          d|› d�| 	                    ¦   «         dœ¦  «        dfS # t          $ rK}t          j                              ¦   «          t          ddt          |¦  «        › �i¦  «        dfcY d}~S d}~ww xY w)zActivar/desactivar un usuarior@   r   r   r   z0No puedes cambiar el estado de tu propio usuariorM   rA   rB   Fr   Tr   r   r   ÚactivadoÚdesactivadozUsuario z exitosamenterN   r*   r+   r,   N)r   r-   r   r   r0   r   rH   r   rU   r!   r:   rV   r;   )r@   rC   r   r<   r   Ú
can_toggleÚstatusr=   s           r#   Útoggle_user_statusrj   ×   sÍ  € ð#PÝ!œ+ iÑ0Ô0ˆÝ”K Ñ,Ô,ˆ	Ý!œ+ lÑ3Ô3ˆð �oÒ%ð 	_Ý˜GÐ%WÐXÑYÔYÐ[^Ð^Ð^åŒz�~Š~˜gÑ&Ô&ˆØð 	DÝ˜GÐ%<Ð=Ñ>Ô>ÀÐCÐCð ˆ
Ø˜Ò%ð 	ØˆJˆJØ˜,Ò&ð 	¨4¬?¸oÒ+Mð 	ØˆJàð 	<Ý˜G _Ð5Ñ6Ô6¸Ð;Ð;à!œ^Ð+ˆŒÝ
Œ
×ÒÑÔÐà#œ~Ð@��°=ˆåØ7 &Ð7Ð7Ð7Ø—L’L‘N”Nð
ð 
ñ ô ð ðð 	øõ
 ð Pð Pð PÝ
Œ
×ÒÑÔÐÝ˜Ð!HÅÀAÁÄÐ!HÐ!HÐIÑJÔJÈCÐOÐOÐOÐOÐOÐOÐOøøøøðPøøøs2   ‚AD Á3D Â2D Â>AD Ä
E3Ä(A E.Å(E3Å.E3N)Úflaskr   r   r   r   Úsrc.models.userr   r   Úsrc.models.companyr	   Úsrc.routes.authr
   r   Ú__name__Úuser_bpÚrouter>   rD   r\   rc   rj   r    r%   r#   ú<module>rr      s¸  ðØ 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6Ð 6à
ˆ)�F˜HÑ
%Ô
%€à‡‚ˆx % €Ñ)Ô)Øð0Pð 0Pñ „ñ *Ô)ð0Pðd 	‡‚Ð%°¨w€Ñ7Ô7ØðPð Pñ „ñ 8Ô7ðPð: 	‡‚Ð%°¨w€Ñ7Ô7ØðPPð PPñ „ñ 8Ô7ðPPðd 	‡‚Ð%°¨z€Ñ:Ô:Øð$Pð $Pñ „ñ ;Ô:ð$PðL 	‡‚Ð3¸f¸X€ÑFÔFØð%Pð %Pñ „ñ GÔFð%Pð %Pð %Pr%   