
    dZh              
          d dl Z d dlZd dlmZ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 d dl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mZ d dlmZmZ  e       Z  e         ejB                  dd      Z"e jG                  de       ee      fde$fd       Z%e jM                  d       ed       ed       ee      fde'de'dede$fd       Z(e jM                  d       ee      fde'de$fd       Z)e jU                  d       ee      fde$fd       Z+e jM                  d       ee      fde'dede$fd       Z,y)     N)	APIRouterDependsHTTPExceptionFile
UploadFile)Pagepaginate)"disable_installed_extensions_check)descfunc)
joinedload)User)UserBase
UserUpdateUserPasswordUpdate)send_otp_email)check_token_validitypwd_context)get_random_intgenerate_otpFILE_STORAGE_PATHfilesz/show)response_modeldependenciesc                     | \  }}|j                  t              j                  t        j                  |j                  k(        j	                         }|S )N)queryr   filteridfirstr   dbuserdb_users       X/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/users.py	read_userr%      s>    HBhhtn##DGGtww$67==?GN    z
/{user_id}.user_id	user_dataavatarc                 ,  K   |\  }}t        j                  |      }	 |j                  t              j	                  t        j
                  | k(        j                         }|t        dd      |j                         j                         D ]  \  }}	|		t        |||	        |r|j                  j                  d      d   }
t        j                  j                  t         t#        d       d|
       }t%        |d      5 }|j'                  |j)                          d {          d d d        ||_        |j-                          |j/                  |       dd	|d
S 7 ># 1 sw Y   9xY w# t0        $ r}dt3        |      dcY d }~S d }~ww xY ww)N  User not foundstatus_codedetail.
   wbTu%   Utilisateur mis à jour avec succès!)statusmessager"   Fr4   r5   )r   model_validate_jsonr   r   r   r   r   r   
model_dumpitemssetattrfilenamesplitospathjoinr   r   openwritereadr)   commitrefresh	Exceptionstr)r'   r(   r)   r   r!   r"   user_updater#   keyvaluefile_extensionavatar_pathfes                 r$   update_userrN      sr     HB00;K
((4.''7(:;AAC?C8HII%00288: 	-JC e,	- #__2237;N'',,'8^B=O<PPQR`Qa:bcKk4( -Afkkm+,-(GN
		


7 >
 	
 ,- -  
1v
 	

sf   FA8E0 A-E0 E$#E"
$E$,5E0 !F"E$$E-)E0 0	F9FFFFFz/verify-emailemailc                 j   |\  }}|j                  t              j                  t        j                  |j                  k(        j	                         }|t        dd      t               }| |_        d|_        ||_	        t        | |       |j                          |j                  |       d|ddS )Nr+   r,   r-   F)to_emailotpu   Otp envoyé avec succès!)r4   rR   r5   )r   r   r   r   r   r   r   rO   email_verifyrR   r   rC   rD   )rO   r   r!   r"   r#   rR   s         r$   verify_emailrT   F   s    HBhhtn##DGGtww$67==?G4DEE
.CGM GGKEs+IIKJJw . r&   z/delete-accountc                 n   | \  }}|j                  t              j                  t        j                  |j                  k(        j	                         }|t        dd      d|_        |j                  dz   |_        |j                  dz   |_        |j                          |j                  |       dddS )	Nr+   r,   r-   r   _oldTu   Compte supprimé avec succès!r6   )r   r   r   r   r   r   r4   rO   phonerC   rD   r    s       r$   delete_accountrX   ^   s    HBhhtn##DGGtww$67==?G4DEEGNMMF*GMMMF*GMIIKJJw 3 r&   z/update-password/{user_id}user_update_passwordc                   K   |\  }}	 |j                  t              j                  t        j                  | k(        j	                         }|t        dd      t        j                  |j                  |j                        sdddS t        j                  |j                        }||_	        |j                          |j                  |       dddS # t        $ r}dt        |      dcY d }~S d }~ww xY ww)	Nr+   r,   r-   FzMot de passe incorrect!r6   Tu&   Mot de passe mis à jour avec succès!)r   r   r   r   r   r   r   verifyold_passwordpasswordhashnew_passwordrC   rD   rE   rF   )r'   rY   r   r!   r"   r#   hashed_passwordrM   s           r$   update_passwordra   r   s      HB
((4.''7(:;AAC?C8HII!!"6"C"CT]]S4 
 &**+?+L+LM*
		


7 ?
 	

  
1v
 	

sB   C:B C 	C:
AC C:	C7C2,C7-C:2C77C:)-datetimer=   fastapir   r   r   r   r   fastapi_paginationr   r	   fastapi_pagination.utilsr
   
sqlalchemyr   r   sqlalchemy.ormr   app.models.userr   app.schemas.userr   r   r   app.services.emailr   app.utils.authentificationr   r   app.utils.helpersr   r   routergetenvr   gettupler%   putrF   rN   rT   deleterX   ra    r&   r$   <module>rt      su    	 G G - G ! %   E E - H :	 " $BII17;  GH-$+,@$A E  . L59#YUYZ^U_,34H,I#
s #
s #

 #
$)#
 #
L O3:;O3P  5  .  !)01E)F   "& ()078L0M
3 
>P 
(-
 *
r&   