Ë
    jqj“  ã                   óF  — d dl mZmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZ d dlmZ  edd	g¬
«      Zdedededee   fd„Zej7                  dee   d¬«      ej7                  dee   d¬«       ee	«       ee«       ed d ¬«       eddd¬«      fdedededefd„«       «       Zej7                  ded¬«      ej7                  ded¬«       ed dd!¬"«       ee	«       ee«      fd#ededefd$„«       «       Zej=                  d%eej>                  ¬&«       ee	«       ee«      fd'ededefd(„«       Z ej=                  d)e¬*«       ee	«       ee«      fd'ededefd+„«       Z!ej=                  d,e¬*«       ee	«       ee«      fd'eded-efd.„«       Z"y/)0é    )Ú	APIRouterÚDependsÚHTTPExceptionÚQueryÚstatus)ÚSession)Úget_db)Úrequire_admin_token)ÚUserÚUserRole)ÚMessageÚUpdateUserRequestÚ
UserCreateÚUserIdRequestÚ
UserPublic)Úhash_passwordz/userszadmin-users)ÚprefixÚtagsÚdbÚskipÚlimitÚreturnc                 ó¾   — | j                  t        «      j                  t        j                  «      j	                  |«      j                  |«      j                  «       S ©N)Úqueryr   Úorder_byÚidÚoffsetr   Úall)r   r   r   s      ú6/var/www/html/kelly-backend/app/routers/admin/users.pyÚ_fetch_usersr!      s>   € Ø�8‰8”D‹>×"Ñ"¤4§7¡7Ó+×2Ñ2°4Ó8×>Ñ>¸uÓE×IÑIÓKÐKó    z/list-userszList users (paginated))Úresponse_modelÚsummaryz/get-all-usersz-Get all users (paginated, same as list-users))Úgeé2   é   iô  )r%   ÚleÚ_c                 ó   — t        | ||«      S r   )r!   )r   r)   r   r   s       r    Ú
list_usersr+      s   € ô  ˜˜D %Ó(Ð(r"   z	/get-userz#Get one user by id (query: user_id)z/get-user-dataz*Get one user by id (query: user_id, alias).zUser primary key)r%   ÚdescriptionÚuser_idc                 ól   — |j                  t        | «      }|st        t        j                  d¬«      ‚|S )NúUser not found©Ústatus_codeÚdetail)Úgetr   r   r   ÚHTTP_404_NOT_FOUND)r-   r   r)   Úus       r    Úget_userr6   $   s0   € ð 	�‰Œt�WÓ€AÙÜ¬×(AÑ(AÐJZÔ[Ð[Ø€Hr"   z/create-user)r#   r1   Úbodyc                 ó<  — |j                  t        «      j                  t        j                  | j                  k(  «      j	                  «       rt        t        j                  d¬«      ‚t        t        | j                  «      | j                  t        | j                  «      | j                  j                  dk(  rt        j                  nt        j                   | j"                  ¬«      }|j%                  |«       |j'                  «        |j)                  |«       |S )NzEmail already registeredr0   Úadmin)ÚemailÚ	full_nameÚhashed_passwordÚroleÚ	is_active)r   r   Úfilterr:   Úfirstr   r   ÚHTTP_409_CONFLICTÚstrr;   r   Úpasswordr=   Úvaluer   r9   Úuserr>   ÚaddÚcommitÚrefresh©r7   r   r)   r5   s       r    Úcreate_userrJ   9   s³   € à	‡x�x”ƒ~×ÑœTŸZ™Z¨4¯:©:Ñ5Ó6×<Ñ<Ô>Ü¬×(@Ñ(@ÐIcÔdÐdÜÜ�$—*‘*‹oØ—.‘.Ü% d§m¡mÓ4Ø#Ÿy™yŸ™°'Ò9ŒX�^Š^¼x¿}¹}Ø—.‘.ô	€Að ‡F�Fˆ1„IØ‡I�I„KØ‡J�Jˆq„MØ€Hr"   z/update-user)r#   c                 ód  — |j                  t        | j                  «      }|st        t        j
                  d¬«      ‚| j                  �›| j                  |j                  k7  r‚|j                  t        «      j                  t        j                  | j                  k(  «      j                  «       rt        t        j                  d¬«      ‚t        | j                  «      |_        | j                  �| j                  |_        | j                  �| j                  |_        | j                  rt        | j                  «      |_        | j"                  �>| j"                  j$                  dk(  rt&        j(                  nt&        j*                  |_        |j-                  «        |j/                  |«       |S )Nr/   r0   zEmail in user9   )r3   r   r-   r   r   r4   r:   r   r?   r@   rA   rB   r;   r>   rC   r   r<   r=   rD   r   r9   rE   rG   rH   rI   s       r    Úupdate_userrL   J   s  € ð 	�‰Œt�T—\‘\Ó"€AÙÜ¬×(AÑ(AÐJZÔ[Ð[Ø‡z�zÐ $§*¡*°·±Ò"7Ø�8‰8”D‹>× Ñ ¤§¡¨t¯z©zÑ!9Ó:×@Ñ@ÔBÜ¬F×,DÑ,DÈ^Ô\Ð\Ü�d—j‘j“/ˆŒØ‡~�~Ð!Ø—n‘nˆŒØ‡~�~Ð!Ø—n‘nˆŒØ‡}‚}Ü)¨$¯-©-Ó8ˆÔØ‡y�yÐØ#'§9¡9§?¡?°gÒ#=”—’Ä8Ç=Á=ˆŒØ‡I�I„KØ‡J�Jˆq„MØ€Hr"   z/delete-userr9   c                 ó>  — | j                   |j                  k(  rt        t        j                  d¬«      ‚|j                  t        | j                   «      }|st        t        j                  d¬«      ‚|j                  |«       |j                  «        t        d¬«      S )NzCannot delete yourselfr0   r/   zUser deleted)Úmessage)r-   r   r   r   ÚHTTP_400_BAD_REQUESTr3   r   r4   ÚdeleterG   r   )r7   r   r9   r5   s       r    Údelete_userrQ   d   sp   € à‡|�|�u—x‘xÒÜ¬×(CÑ(CÐLdÔeÐeØ
�‰Œt�T—\‘\Ó"€AÙÜ¬×(AÑ(AÐJZÔ[Ð[Ø‡I�Iˆa„LØ‡I�I„KÜ˜>Ô*Ð*r"   N)#Úfastapir   r   r   r   r   Úsqlalchemy.ormr   Úapp.databaser	   Úapp.dependenciesr
   Ú
app.modelsr   r   Úapp.schemasr   r   r   r   r   Úapp.securityr   ÚrouterÚintÚlistr!   r3   r+   r6   ÚpostÚHTTP_201_CREATEDrJ   rL   rQ   © r"   r    Ú<module>r_      s_  ðß DÕ DÝ "å Ý 0ß %ß YÕ YÝ &á	˜(¨-¨Ô	9€ðL�Wð L Cð L°ð L¸¸T¹
ó Lð ‡�ØØ˜
Ñ#Ø$ð ó ð
 ‡�ØØ˜
Ñ#Ø;ð ó ñ ˜&“/ÙÐ)Ó*Ù�a˜A”Ù�r˜a CÔ(ñ	)Øð)àð)ð ð)ð ò	)óóð)ð ‡�ØØØ1ð ó ð
 ‡�ØØØ8ð ó ñ ˜ Ð0BÔCÙ˜&“/ÙÐ)Ó*ñØðàðð òóóðð ‡�ˆ^¨JÀF×D[ÑD[€Ó\Ù07¸³É7ÐSfÓKgñ �jð  gð ÀDò ó ]ðð  ‡�ˆ^¨J€Ó7ñ ˜&“/ÙÐ)Ó*ñØ
ðàðð òó 8ðð2 ‡�ˆ^¨G€Ó4Ù3:¸6³?ÑRYÐZmÓRnñ +�mð +¨ð +È4ò +ó 5ñ+r"   