Ë
    >È'j´  ã                   ó¸  — d dl mZmZmZmZmZmZ d dlmZ d dl	m
Z
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mZ d dlmZmZ d d	lmZmZ  ed
dg¬«      Zdede defd„Z!ejE                  de¬«       ee«       ee«      fdedefd„«       Z#ejI                  de¬«       ee«       ee«      fdededefd„«       Z%ejI                  ded¬«       ee«       ee«      fdededefd„«       Z&ejO                  ded¬«       ee«       ee«       edd¬ «      fdeded!efd"„«       Z(ejO                  d#ed$¬«       ee«       ee«      fdededefd%„«       Z)y&)'é    )Ú	APIRouterÚDependsÚFileÚHTTPExceptionÚ
UploadFileÚstatus)ÚSession)ÚSessionLocalÚget_dbÚrelease_db_connection)Úrequire_user_token)ÚUser)ÚChangePasswordRequestÚMessageÚProfileUpdateÚ
UserPublic)Úhash_passwordÚverify_password)Úserialize_user_publicÚupdate_user_profile)Úsave_user_profile_imageÚset_user_profile_imagez/profilezuser-profile)ÚprefixÚtagsÚdbÚuser_idÚreturnc                 ó¨   — | j                  t        «      j                  t        j                  |k(  «      j	                  «       }|€J ‚t        || «      S ©N)Úqueryr   ÚfilterÚidÚfirstr   )r   r   Úus      úC/var/www/html/kelly/kelly-backend/app/routers/user_panel/profile.pyÚ_load_user_publicr&      sC   € Ø
�‰”‹×ÑœdŸg™g¨Ñ0Ó1×7Ñ7Ó9€AØˆ=Ðˆ=Ü   BÓ'Ð'ó    Ú )Úresponse_modelÚmec                 ó.   — t        | |j                  «      S r   )r&   r"   )r   r*   s     r%   Úget_profiler,      s   € ä˜R §¡Ó'Ð'r'   z/updateÚbodyc                 ó  — | j                   r¨t        | j                   «      |j                   k7  r†|j                  t        «      j	                  t        j                   | j                   k(  t        j
                  |j
                  k7  «      j                  «       }|rt        t        j                  d¬«      ‚	 t        ||| «       t        ||j
                  «      S # t        $ r*}t        t        j                  t        |«      ¬«      |‚d}~ww xY w)zh
    Update the logged-in user's profile.

    Requires `Authorization: Bearer <token>` from login.
    zEmail already in use©Ústatus_codeÚdetailN)ÚemailÚstrr    r   r!   r"   r#   r   r   ÚHTTP_409_CONFLICTr   Ú
ValueErrorÚHTTP_400_BAD_REQUESTr&   )r-   r   r*   ÚexistsÚes        r%   Úupdate_profiler9      sÆ   € ð ‡z‚z”c˜$Ÿ*™*“o¨¯©Ò1Ø—‘œ$“×&Ñ&¤t§z¡z°T·Z±ZÑ'?ÄÇÁÈBÏEÉEÑAQÓR×XÑXÓZˆÙÜ¬F×,DÑ,DÐMcÔdÐdð[Ü˜B  DÔ)ô ˜R §¡Ó'Ð'øô ò [Ü¬×(CÑ(CÌCÐPQËFÔSÐYZÐZûð[ús   Â6C Ã	DÃ"%DÄDF)r)   Úinclude_in_schemac                 ó   — t        | ||«      S )z Alias for PATCH /profile/update.)r9   ©r-   r   r*   s      r%   Úupdate_profile_legacyr=   2   s   € ô ˜$  BÓ'Ð'r'   z/upload-imagezUpload user profile image)r)   Úsummary.z#Profile image (jpg, png, gif, webp))ÚdescriptionÚimagec              ƒ   ó¨  K  — |j                   st        t        j                  d¬«      ‚|j                  }t        | «       t        |«      ƒ d {  –—† }t        «       }	 |j                  t        |«      }|€t        t        j                  d¬«      ‚t        |||«      }t        ||«      |j                  «        S 7 Œk# |j                  «        w xY w­w)NzImage file is requiredr/   zUser not found)Úfilenamer   r   r6   r"   r   r   r
   Úgetr   ÚHTTP_404_NOT_FOUNDr   r   Úclose)r   r*   r@   r   Ú
image_pathÚwrite_dbÚusers          r%   Úupload_profile_imagerI   <   sª   è ø€ ð �>Š>Ü¬×(CÑ(CÐLdÔeÐeØ�e‰e€GÜ˜"ÔÜ.¨uÓ5×5€JÜ‹~€HðØ�|‰|œD 'Ó*ˆØˆ<Ü¬F×,EÑ,EÐN^Ô_Ð_Ü% h°°jÓAˆÜ$ T¨8Ó4à�‰Õð 6ùð 	�‰Õüs+   ‚ACÁB;ÁCÁAB= Â*CÂ=CÃCz/change-passwordzChange logged-in user passwordc                 óL  — t        | j                  |j                  «      st        t        j
                  d¬«      ‚| j                  | j                  k(  rt        t        j
                  d¬«      ‚t        | j                  «      |_        |j                  «        t        d¬«      S )NzCurrent password is incorrectr/   z4New password must be different from current passwordzPassword updated successfully)Úmessage)
r   Úcurrent_passwordÚhashed_passwordr   r   r6   Únew_passwordr   Úcommitr   r<   s      r%   Úchange_passwordrP   R   sŒ   € ô ˜4×0Ñ0°"×2DÑ2DÔEÜÜ×3Ñ3Ø2ô
ð 	
ð ×Ñ × 1Ñ 1Ò1ÜÜ×3Ñ3ØIô
ð 	
ô ' t×'8Ñ'8Ó9€BÔØ‡I�I„KÜÐ:Ô;Ð;r'   N)*Úfastapir   r   r   r   r   r   Úsqlalchemy.ormr	   Úapp.databaser
   r   r   Úapp.dependenciesr   Ú
app.modelsr   Úapp.schemasr   r   r   r   Úapp.securityr   r   Ú!app.services.user_profile_servicer   r   Ú'app.services.user_profile_image_servicer   r   ÚrouterÚintr&   rC   r,   Úpatchr9   r=   ÚpostrI   rP   © r'   r%   Ú<module>r_      sÙ  ðß O× OÝ "ç DÑ DÝ /Ý ß QÓ Qß 7ß Xß cá	˜*¨NÐ+;Ô	<€ð(˜'ð (¨Cð (°Jó (ð ‡�ˆB˜z€Ó*Ù% f›o¹'ÐBTÓ:Uñ (�Gð (°4ò (ó +ð(ð ‡�ˆi¨
€Ó3ñ ˜&“/ÙÐ)Ó*ñ(Ø
ð(àð(ð 	ò(ó 4ð(ð. ‡�ˆb ¸u€ÓEñ ˜&“/ÙÐ)Ó*ñ(Ø
ð(àð(ð 	ò(ó Fð(ð ‡�ˆ_¨ZÐA\€Ó]á˜&“/ÙÐ)Ó*Ù˜SÐ.SÔTñØðàðð òó ^ðð* ‡�Ð°ÐAa€Óbñ ˜&“/ÙÐ)Ó*ñ<Ø
ð<àð<ð 	ò<ó cñ<r'   