
    	h                     z   S SK r S SKrS SKrS SKJrJrJrJrJr  S SK	J
r
Jr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJrJrJ r   S SK!J"r"  S SK#J$r$J%r%J&r&J'r'J(r(  S SK)J*r*  S SK+J,r,J-r-  S SK.J/r/J0r0  \" 5       r1\" 5         \Rd                  " SS5      r3\1Ri                  S5      \" \,5      4S\54S jj5       r6\1Ri                  S5      \" \,5      4S\7S\54S jj5       r8\1Ri                  S5      \" \,5      4S\7S\54S jj5       r9\1Ru                  S5      \" \,5      4S\7S\54S jj5       r;g)    N)	APIRouterDependsHTTPExceptionFile
UploadFile)Pagepaginate)"disable_installed_extensions_check)descfunc)
joinedload)GeneralState)	UserState)RegistrationState)UserProgramQuizModuleQuestionLessonCourse)Registration)UserBase
UserUpdateUserPasswordUpdateRegistrationRequestQuizAnswers)send_otp_email)check_token_validitypwd_context)get_random_intgenerate_otpFILE_STORAGE_PATHfilesz/users/me/registrationsdependenciesc                 n   U u  pUR                  [        5      R                  [        R                  UR                  :H  5      R                  5       n/ nU H  nUR                  [        5      R                  [        R                  UR                  :H  [        R                  [        R                  :H  5      R                  5       nU(       d  My  UR                  UR                  UR                  UR                  UR                  UR                  UR                   UR"                  S.5        M     SUS.$ )N)registration_id
program_idprogram_titleprogram_descriptioncategory_idprogressionenrolled_atu2   Liste des formations auxquelles vous êtes inscrit)messageregistrations)queryr   filteruser_ididallr   r(   stater   ACTIVEfirstappendtitledescriptionr+   r,   
created_at)r%   dbuserr/   resultsregprograms          HD:\kofCorporation\kof-academy-backend\app\routers\my_taining_progress.pyget_my_registrationsrB      s    HB HH\*11'	ce  G((7#**JJ#..(MM\000
 %' 	
 "vv!**$]]#*#6#6"..??>>
 	 ( H      z/programs/{program_id}/contentr(   c                 Z   Uu  p#UR                  [        5      R                  [        R                  U :H  [        R                  UR
                  :H  5      R                  5       nU(       d
  [        SSS9eUR                  [        5      R                  [        R
                  U :H  [        R                  [        R                  :H  5      R                  5       nU(       d
  [        SSS9eUR
                  UR                  UR                  UR                  / S.nUR                  [        5      R                  [        R                  UR
                  :H  [        R                  [        R                  :H  5      R!                  [        R"                  5      R%                  5       nU GH  nUR
                  UR                  UR                  UR"                  / S.n	UR                  [&        5      R                  [&        R(                  UR
                  :H  [&        R                  [        R                  :H  5      R!                  [&        R"                  5      R%                  5       n
U
 GH   nUR
                  UR                  UR"                  / S.nUR                  [*        5      R                  [*        R,                  UR
                  :H  [*        R                  [        R                  :H  5      R!                  [*        R"                  5      R%                  5       nU Vs/ s HH  nUR
                  UR                  UR.                  UR0                  UR"                  UR2                  S	.PMJ     snUS
'   U	S   R5                  U5        GM#     US   R5                  U	5        GM     SUS.$ s  snf )N  (   Vous n'êtes pas inscrit à ce programmestatus_codedetail  zProgramme introuvable)r3   r9   r:   r+   courses)r3   r9   r:   ordermodules)r3   r9   rL   lessons)r3   r9   contentresourcerL   xp_countrN   rM   rK   zContenu complet du programme)r.   r@   )r0   r   r1   r(   r2   r3   r7   r   r   r5   r   r6   r9   r:   r+   r   order_byrL   r4   r   	course_idr   	module_idrO   rP   rQ   r8   )r(   r%   r<   r=   registrationr@   program_datarK   coursecourse_datarM   modulemodule_datarN   lessons                  rA   get_program_contentr\   @   s   HB 88L)00:-' eg 
 4^__ hhw&&

j ,,, eg 
 4KLL jj****L hhv%%WZZ'+++ hv||SSU 
 ))\\!--\\
 ((6"))		)LLL///
 (6<<
  	
 Fii	K hhv&--  FII- 3 33 hv||$SSU  &
& &F !))#\\%~~ &#\\ & &
&K	" 	"))+65 8 	Y&&{3W \ 2 !
&s   AN(z/lessons/{lesson_id}/content	lesson_idc                    Uu  p#UR                  [        5      R                  [        R                  U :H  [        R                  [
        R                  :H  5      R                  5       nU(       d
  [        SSS9eUR                  [        R                  5      R                  [        [        R                  [        R                  :H  5      R                  [        [        R                  [        R                  :H  5      R                  [        R                  UR                  :H  5      R!                  5       nUR                  ["        5      R                  ["        R$                  UR                  :H  ["        R                  U:H  5      R                  5       nU(       d
  [        SSS9eUR                  UR&                  UR(                  UR*                  UR,                  UR.                  UR                  S.nSUS.$ )	NrJ      Leçon introuvablerG   rE   rF   )r3   r9   rO   rP   rL   rQ   rT   u-   Contenu de la leçon récupéré avec succès)r.   r[   )r0   r   r1   r3   r5   r   r6   r7   r   r   joinr   r(   r   rS   rT   scalarr   r2   r9   rO   rP   rL   rQ   )r]   r%   r<   r=   r[   r(   rU   lesson_datas           rA   get_lesson_contentrc      sw   HB XXf$$		Y+++ eg 
 4HII 		ff''7::5	6	ff&&&))3	4			V---	.	  88L)00':- eg 
 4^__ ii>>OOOO%%K C rC   z/lessons/{lesson_id}/completec           	         Uu  p#UR                  [        5      R                  [        R                  U :H  [        R                  [
        R                  :H  5      R                  5       nU(       d
  [        SSS9eUR                  [        5      R                  [        R                  UR                  :H  [        R                  UR                  [        R                  5      R                  [        [        R                  [        R                  :H  5      R                  [        [        R                  [        R                  :H  5      R                  [        R                  U :H  5      R!                  5       :H  5      R                  5       nU(       d
  [        SSS9eUR"                  U :X  a  UR$                  S:X  a  SUR&                  S.$ UR                  Ul        UR                  Ul        UR                  [        R(                  5      R                  [        R                  UR                  :H  5      R!                  5       Ul        SUl        U=R&                  UR*                  (       a  UR*                  OS	-  sl        UR-                  5         UR/                  U5        S
UR                  UR&                  UR$                  S.$ )NrJ   r_   rG   rE   rF   	COMPLETEDu   Leçon déjà complétée)r.   xpr   u   Leçon complétée avec succès)r.   r]   xp_totalr5   )r0   r   r1   r3   r5   r   r6   r7   r   r   r2   r(   r   r`   r   rT   ra   r]   tracking_statetracking_xp_countrS   rQ   commitrefresh)r]   r%   r<   r=   r[   rU   s         rA   complete_lessonrl      s   
 HB XXf$$		Y+++ eg  4HII 88L)00'HHV&&'T&&))vyy01T&&**fii78VFII*+VX	
	 eg  4^__ *|/J/Jk/Y6l>\>\]] $YYL#--L
!!"			V---	.	 
 #.L""fooaO"IIKJJ| 5YY 22,,	 rC   )<datetimeosrandomfastapir   r   r   r   r   fastapi_paginationr   r	   fastapi_pagination.utilsr
   
sqlalchemyr   r   sqlalchemy.ormr   app.enums.general_stater   app.enums.user_stater   app.enums.registration_stater   app.models.baser   r   r   r   r   r   r   app.models.registrationr   app.schemas.userr   r   r   r   r   app.services.emailr   app.utils.authentificationr   r    app.utils.helpersr!   r"   routergetenvr#   gettuplerB   intr\   rc   postrl    rC   rA   <module>r      s>    	  G G - G ! % 0 * : R Q Q 0 g g - H :	 " $II17;  %&/67K/L u  'D ,-?FG[?\ TC Tu T .Tn *+=DEY=Z +# +U + ,+\ ,- ""67444 .4rC   