§
    O�Çi\  ã            
       óÀ  — d dl mZmZmZmZ d dlmZ d dlmZm	Z	 d dl
mZ d dlmZ d dlmZmZmZmZ d dlmZ d dlmZ d d	lmZmZ  ed
dg¬¦  «        Z ed¦  «        Ze                     dee         ¬¦  «         edd¬¦  «         eddd¬¦  «         ee¦  «         ee¦  «        fdedededefd„¦   «         Ze                     ded¬¦  «         ee¦  «         ee¦  «        fdededefd„¦   «         Z e !                    de¬¦  «         ee¦  «         ee¦  «        fdedededefd „¦   «         Z"e                     d!e¬¦  «         ee¦  «        fd"efd#„¦   «         Z#e $                    d$e¬¦  «         ee¦  «         ee¦  «        fdeded"efd%„¦   «         Z%e &                    dd&¬'¦  «         ee¦  «         ee¦  «        fdededefd(„¦   «         Z'd)S )*é    )Ú	APIRouterÚDependsÚHTTPExceptionÚQuery)ÚAsyncSession)ÚselectÚfunc)Úget_db)ÚUser)Ú
UserCreateÚ
UserUpdateÚUserProfileUpdateÚUserOut)ÚPagedOut)Úhash_password)Úrequire_roleÚget_current_userz/usersÚusers)ÚprefixÚtagsÚadminÚ )Úresponse_modelé   )Úgeé   iô  )r   ÚleÚpageÚlimitÚdbÚ_c              ƒ   ó  K  — |                      t          t          j        ¦   «         ¦  «                             t
          ¦  «        ¦  «        ƒ d {V —†}|                     t          t
          ¦  «                             t
          j        ¦  «         	                    | dz
  |z  ¦  «         
                    |¦  «        ¦  «        ƒ d {V —†}|                     ¦   «                              ¦   «         }t          ||| |¬¦  «        S )Nr   )ÚitemsÚtotalr   r   )Úscalarr   r	   ÚcountÚselect_fromr   ÚexecuteÚorder_byÚidÚoffsetr   ÚscalarsÚallr   )r   r   r    r!   r$   Úresultr#   s          ú9/var/www/html/jarvis.com/web/backend/app/routers/users.pyÚ
list_usersr0      sê   è è € ð —)’)�F¥4¤:¡<¤<Ñ0Ô0×<Ò<½TÑBÔBÑCÔCÐCÐCÐCÐCÐCÐC€EØ—:’:Ý�t‰Œ×Ò�dœgÑ&Ô&×-Ò-¨t°a©x¸5Ñ.@ÑAÔA×GÒGÈÑNÔNñô ð ð ð ð ð ð €Fð �NŠNÑÔ× Ò Ñ"Ô"€EÝ˜% u°4¸uÐEÑEÔEÐEó    éÉ   )r   Ústatus_codeÚbodyc              ƒ   ó"  K  — |                      t          t          ¦  «                             t          j        | j        k    t          j        | j        k    z  ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         rt          dd¬¦  «        ‚t          | j        | j        t          | j	        ¦  «        | j
        ¬¦  «        }|                     |¦  «         |                     ¦   «         ƒ d {V —† |                     |¦  «        ƒ d {V —† |S )Ni�  z Username or email already exists©r3   Údetail)ÚusernameÚemailÚhashed_passwordÚrole)r(   r   r   Úwherer8   r9   Úscalar_one_or_noner   r   Úpasswordr;   ÚaddÚcommitÚrefresh)r4   r    r!   r.   Úusers        r/   Úcreate_userrC       s  è è € ð —:’:Ý�t‰Œ×Ò�DœM¨T¬]Ò:½t¼zÈTÌZÒ?WÑXÑYÔYñô ð ð ð ð ð ð €Fð × Ò Ñ"Ô"ð XÝ¨Ð4VÐWÑWÔWÐWåØ”ØŒjÝ% d¤mÑ4Ô4ØŒYð	ñ ô €Dð ‡F‚Fˆ4�L„L€LØ
�)Š)‰+Œ+ÐÐÐÐÐÐÐØ
�*Š*�TÑ
Ô
ÐÐÐÐÐÐÐØ€Kr1   z
/{user_id}Úuser_idc              ƒ   ó  K  — |                      t          t          ¦  «                             t          j        | k    ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         }|st          dd¬¦  «        ‚|j        �|j        |_        |j        rt          |j        ¦  «        |_
        |j        �|j        |_        |j        �|j        |_        |                     ¦   «         ƒ d {V —† |                     |¦  «        ƒ d {V —† |S ©Ni”  zUser not foundr6   )r(   r   r   r<   r*   r=   r   r9   r>   r   r:   r;   Ú	is_activer@   rA   )rD   r4   r    r!   r.   rB   s         r/   Úupdate_userrH   8   s  è è € ð —:’:�f¥T™lœl×0Ò0µ´¸GÒ1CÑDÔDÑEÔEÐEÐEÐEÐEÐEÐE€FØ×$Ò$Ñ&Ô&€DØð FÝ¨Ð4DÐEÑEÔEÐEà„zÐØ”ZˆŒ
Ø„}ð <Ý,¨T¬]Ñ;Ô;ˆÔØ„yÐØ”IˆŒ	Ø„~Ð!ØœˆŒà
�)Š)‰+Œ+ÐÐÐÐÐÐÐØ
�*Š*�TÑ
Ô
ÐÐÐÐÐÐÐØ€Kr1   z/meÚcurrent_userc              ƒ   ó
   K  — | S )z<Return the full profile of the currently authenticated user.© )rI   s    r/   Úget_my_profilerL   R   s   è è € ð
 Ðr1   z/me/profilec              ƒ   óÈ   K  — | j         �| j         pd|_         | j        �| j        pd|_        |                     ¦   «         ƒ d{V —† |                     |¦  «        ƒ d{V —† |S )zCAllow any authenticated user to update their notification settings.N)Útelegram_chat_idÚ
push_tokenr@   rA   )r4   r    rI   s      r/   Úupdate_my_profilerP   Z   s‚   è è € ð ÔÐ(Ø(,Ô(=Ð(EÀˆÔ%Ø„Ð"Ø"&¤/Ð"9°TˆÔØ
�)Š)‰+Œ+ÐÐÐÐÐÐÐØ
�*Š*�\Ñ
"Ô
"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÐr1   éÌ   )r3   c              ƒ   ó^  K  — |                      t          t          ¦  «                             t          j        | k    ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         }|st          dd¬¦  «        ‚|                     |¦  «        ƒ d {V —† |                     ¦   «         ƒ d {V —† d S rF   )	r(   r   r   r<   r*   r=   r   Údeleter@   )rD   r    r!   r.   rB   s        r/   Údelete_userrT   j   s¼   è è € ð —:’:�f¥T™lœl×0Ò0µ´¸GÒ1CÑDÔDÑEÔEÐEÐEÐEÐEÐEÐE€FØ×$Ò$Ñ&Ô&€DØð FÝ¨Ð4DÐEÑEÔEÐEà
�)Š)�D‰/Œ/ÐÐÐÐÐÐÐØ
�)Š)‰+Œ+ÐÐÐÐÐÐÐÐÐr1   N)(Úfastapir   r   r   r   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr   r	   Úapp.databaser
   Úapp.models.userr   Úapp.schemas.userr   r   r   r   Úapp.schemas.pagedr   Úapp.services.authr   Úapp.depsr   r   ÚrouterÚ
admin_onlyÚgetÚintr0   ÚpostrC   ÚputrH   rL   ÚpatchrP   rS   rT   rK   r1   r/   ú<module>re      sª  ðØ <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ø /Ð /Ð /Ð /Ð /Ð /Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3Ð 3à	ˆ˜(¨'¨Ð	3Ñ	3Ô	3€àˆ\˜'Ñ"Ô"€
ð ‡‚ˆB˜x¨Ô0€Ñ1Ô1à��a˜A�‘”Ø��r˜a CÐ(Ñ(Ô(Ø�w˜v‘”Øˆg�jÑ!Ô!ð	Fð FØ
ðFàðFð 	ðFð ð	Fð Fð Fñ 2Ô1ðFð ‡‚ˆR °S€Ñ9Ô9ð �w˜v‘”Øˆg�jÑ!Ô!ðð Ø
ðàðð ðð ð ñ :Ô9ðð. ‡‚ˆL¨€Ñ1Ô1ð �w˜v‘”Øˆg�jÑ!Ô!ð	ð Øðà
ðð 	ðð ð	ð ð ñ 2Ô1ðð2 ‡‚ˆE '€Ñ*Ô*à ˜Ð!1Ñ2Ô2ðð Øðð ð ñ +Ô*ðð ‡‚ˆm¨G€Ñ4Ô4ð �w˜v‘”Ø ˜Ð!1Ñ2Ô2ðð Ø
ðàðð ðð ð ñ 5Ô4ðð ‡‚ˆ|¨€Ñ-Ô-ð �w˜v‘”Øˆg�jÑ!Ô!ðð Øðàðð ðð ð ñ .Ô-ðð ð r1   