
    mh                        d dl Z d dlmZmZ d dlZd dlmZmZ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mZ d dlmZmZmZmZ d dlmZ  e       Z e         e j8                  d	d
      Zej=                  dee          ee       e	dd       e	dd       e	dd      fdedee    dee    dee    fd       Z!ejE                  de       ed       ee      fdede
defd       Z#ej=                  de       ee      fde defd       Z$ejK                  de       ed       ee      fde dede
defd       Z&ejO                  d       ee      fde defd       Z(y)    N)OptionalList)	APIRouterDependsHTTPExceptionQuery
UploadFileFileForm)"disable_installed_extensions_check)check_user_is_admin)UserRegistration)
UserUpdate
UserCreateUserResponseProfileResponse)GeneralStateFILE_STORAGE_PATHfiles/)response_modelzRecherche par nom ou email)descriptionu   Filtrer par rôleu   Filtrer par étatdependenciessearchrolestatec                 :   | \  }}|j                  t              j                  t        j                  t        j
                  k(        }|rz|j                  t        j                  j                  d| d      t        j                  j                  d| d      z  t        j                  j                  d| d      z        }|r"|j                  t        j                  |k(        }|r"|j                  t        j                  |k(        }|j                         S )N%)queryr   filterr   r   ACTIVE	firstnameilikelastnameemailr   all)r   r   r   r   dbuserr    s          _/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/admins/users.py
list_usersr+      s     HBHHTN!!$**0C0C"CDE^^!!AfXQ-0]]  1VHA/1ZZ&m,.

 TYY$./TZZ50199;    user_createavatarc                    |\  }}t        di | j                         }|rt        j                  j	                  |j
                        d   }t        j                          | }t        j                  j                  t        |      }t        |d      5 }	|	j                  |j                  j                                d d d        ||_        |j                  |       |j!                          |j#                  |       |S # 1 sw Y   DxY w)N   wb )r   
model_dumpospathsplitextfilenameuuiduuid4joinr   openwritefilereadr.   addcommitrefresh)
r-   r.   r   r(   r)   new_userextr7   filepathfs
             r*   create_userrF   3   s     HB/k,,./Hggv/2jjl^C5)77<< 18<(D! 	(QGGFKK$$&'	(" FF8IIKJJxO	( 	(s   *DDz
/{user_id}user_idc                 :   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  t              j                  t        j                  |j                  k(        j                         }|D cg c]I  }|j                  |j                  r|j                  j                  nd |j                  |j                  dK }}t        t        j                   |      |      S c c}w )N  Utilisateur introuvable)
program_idprogram_titletracking_statexp)r)   progression)r    r   r!   idfirstr   r   rG   r'   rK   programtitlerM   tracking_xp_countr   r   model_validate)rG   r   r(   r)   registrationsrrO   s          r*   get_user_detailsrX   O   s    HB88D>  G!34::<DC!:;; 		$$/	0	    ,,01		QYY__t..%%		
K  		$	$T	* s   (ADdatac                    |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  d      j                         D ]  \  }}t        |||        |rt        j                  j                  |j                        d   }t        j                          | }	t        j                  j                  t         |	      }
t#        |
d      5 }|j%                  |j&                  j)                                d d d        |
|_        |j-                          |j/                  |       |S # 1 sw Y   3xY w)NrI   rJ   T)exclude_unsetr0   r1   )r    r   r!   rP   rQ   r   dictitemssetattrr4   r5   r6   r7   r8   r9   r:   r   r;   r<   r=   r>   r.   r@   rA   )rG   rY   r.   r   r(   r)   fieldvaluerC   r7   rD   rE   s               r*   update_userra   l   s   HB88D>  G!34::<DC!:;;			5;;= $ueU#$ggv/2jjl^C5)77<< 18<(D! 	(QGGFKK$$&'	(IIKJJtK	( 	(s   *EE'c                    |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        j                  |_        |j                          ddiS )NrI   zUser not found)status_codedetailmessagezUser deleted successfully)
r    r   r!   rP   rQ   r   r   DELETEDr   r@   )rG   r   r(   adminr)   s        r*   delete_userrh      sl     IB88D>  G!34::<D4DEE %%DJIIK233r,   ))r4   typingr   r   r8   fastapir   r   r   r   r	   r
   r   fastapi_pagination.utilsr   app.utils.authentificationr   app.models.baser   r   app.schemas.userr   r   r   r   app.enums.general_stater   routergetenvr   gettuplestrr+   postrF   rX   putra   deleterh   r2   r,   r*   <module>rx      s   	 !  T T T G : / R R 0 
 " $BII17;  C\ 23!"56!$4PQ2EF 3FG	SM 3- C=	 40 S. d!"56  /6 L/:9@AT9U c   ;8 L6EI$Zgn  pC  hD  J 
 _d  7, |4;<O4P 4 4E 4 4r,   