
    ]h'                     Z   S SK r S SKJr  S SKJr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  S S	KJr  S S
KJr  S SKJr  \" 5       r\" 5         \ R6                  " SS5      r\R;                  S5      \" \5      4S\4S jj5       r\RA                  S5      \" \5      4S\S\4S jj5       r!\R;                  S5      \" \5      4S\"S\4S jj5       r#\R;                  S5      \" \5      4S\"S\4S jj5       r$\RA                  S5      \" \5      4S\"S\4S jj5       r%g)    N)datetime)	APIRouterDependsHTTPException)"disable_installed_extensions_check)GeneralState)RegistrationTrackingState)RegistrationCreate)ProgramModuleLessonCourseCategoryCourseProgram)Registration)check_token_validity)RegistrationStateFILE_STORAGE_PATHfilesz/users/me/registrationsdependenciesc                    U u  pUR                  [        5      R                  [        R                  UR                  :H  [        R
                  [        R                  :H  5      R                  5       n/ nU GHR  nUR                  [        5      R                  [        R                  UR                  :H  [        R
                  [        R                  :H  5      R                  5       nU(       d  Mz  UR                  [        5      R                  [        R                  UR                  :H  5      R                  5       nUR!                  UR                  UR"                  UR$                  UR&                  UR(                  UR                  UR*                  UR,                  UR.                  UR0                  UR2                  S.5        GMU     SUS.$ )N)registration_id	course_id	module_id	lesson_idtracking_xp_count
program_idprogram_nameprogram_descriptioncategory_titleprogressionenrolled_atu2   Liste des formations auxquelles vous êtes inscrit)messageregistrations)queryr   filteruser_ididstater   PAIDallr   r   r   ACTIVEfirstr   category_idappendr   r   r   r   namedescriptiontitletracking_state
created_at)r   dbuserr$   resultsregprogramcategorys           QD:\kofCorporation\kof-academy-backend\app\routers\students\my_taining_progress.pyget_my_registrationsr<      sb   HB HH\*11'););?P?U?U)U	ce  G((7#**JJ#..(MM\000
 %' 	
 88H%,,KK7...

%' 	 	"vv!$!6!6!**#LL#*#6#6&nn-->>
 	 8 H      z/registrationsregistration_datac                    Uu  p#U R                   n[        U[        5      (       d
  [        SSS9eU[        R                  :X  a  SnOU[        R
                  :X  a  SnOSn[        UR                  U R                  U R                  U R                  U R                  UU[        R                  " 5       S9nUR                  U5        UR                  5         UR!                  U5        SUR                  UR                  UR                  UR                  UR                  UR                   R"                  UR$                  S.S	.$ )
Ni  zInvalid tracking statestatus_codedetailr      )r'   r   r   r   r   r3   r   r4   u%   Inscription enregistrée avec succès)r(   r   r   r   r   r3   r   )r#   registration)r3   
isinstancer	   r   IN_PROGRESSFINISHEDr   r(   r   r   r   r   r   utcnowaddcommitrefreshvaluer   )r>   r   r5   r6   r3   xp_countnew_registrations          r;   create_registrationrO   H   s'   
 HB '55Nn&?@@4LMM 2>>>	4==	=#$//#--#--#--%"??$	 FFIIKJJ  ;"%%*55)33)33)33.==CC!1!C!C
 r=   z/programs/{program_id}/contentr   c           	      n   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                  [        5      R                  [        R
                  UR                  :H  5      R                  5       nUR
                  UR                  UR                  U(       a  UR                   OS / S.nUR                  ["        5      R                  ["        R                  UR
                  :H  5      R%                  ["        R&                  5      R)                  5       nU GHM  n	UR                  [*        5      R                  [*        R
                  U	R,                  :H  [*        R                  [        R                  :H  5      R                  5       n
U
(       d  Mz  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 H  nUR
                  UR                   UR&                  / S.nUR                  [0        5      R                  [0        R2                  UR
                  :H  [0        R                  [        R                  :H  5      R%                  [0        R&                  5      R)                  5       nU Vs/ s H'  nUR
                  UR                   UR&                  S	.PM)     snUS
'   US   R5                  U5        GM     US   R5                  U5        GMP     SUS.$ s  snf )N  (   Vous n'êtes pas inscrit à ce programmer@     zProgramme introuvable)r(   r2   r1   r:   courses)r(   r2   r1   ordermodules)r(   r2   rU   lessons)r(   r2   rU   rW   rV   rT   zContenu complet du programme)r#   r9   )r%   r   r&   r   r'   r(   r-   r   r   r)   r   r,   r   r.   r0   r1   r2   r   order_byrU   r+   r   r   r   r   r   r/   )r   r   r5   r6   rD   r9   r:   program_datacourse_linkslinkcoursecourse_datarV   modulemodule_datarW   lessons                    r;   get_program_contentra   x   s*   HB88L)00:-' eg  4^__hhw&&

j ,,, eg  4KLLxx!((8K8K)KLRRTH jj**&.HNNDL 		((GJJ6	7	-%%	&		  &!((II'LLL///
 %' 	  ))\\!--ZZ
 HHVVF$$		16<<<CVCV3VWXfll#SU	 	 Fii	K  ((FII5v|||GZGZ7Z[&,,'	  &	& &F !))#\\#\\	 &	&K	" 	"))+67 : 	Y&&{3i l 6,OO	&s   .P2z/lessons/{lesson_id}/contentr   c                    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                  [        R                  :H  5      R                  [        [        R                   [        R                  :H  5      R                  [        R                  UR                  :H  5      R#                  5       nU(       d
  [        SSS9e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R0                  UR                   S.nSUS	.$ )
NrS      Leçon introuvabler@   '   Programme introuvable pour cette leçonrQ   rR   )r(   r2   contentresourcerU   rM   r   u-   Contenu de la leçon récupéré avec succès)r#   r`   )r%   r   r&   r(   r)   r   r,   r-   r   r   joinr   r   r   r   r   r   scalarr   r'   r2   re   rf   rU   rM   )r   r   r5   r6   r`   r   rD   lesson_datas           r;   get_lesson_contentrj      s   HB XXf$$		Y+++ eg 
 4HII 		m]55C	D	ffii=#:#::	;	ff&&&))3	4	ff&&&))3	4			VYY&	'	  4]^^ 88L)00':- eg 
 4^__ ii>>OOOO%%K C r=   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                  [        R                  5      R                  [        [        R                  [        R                  :H  5      R                  [        [        R                  [        R                  :H  5      R                  [        [        R                  [        R                  :H  5      R                  [        [        R                   [        R                  :H  5      R                  [        R                  UR                  :H  5      R#                  5       nU(       d
  [        SSS9e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 :X  a-  UR*                  [,        R.                  :X  a  SUR0                  S.$ UR                  Ul        UR                   Ul        UR                  [        R                  5      R                  [        R                  UR                   :H  5      R#                  5       Ul        [,        R.                  Ul        UR0                  c  S	Ul        U=R0                  UR2                  (       a  UR2                  OS	-  sl        UR5                  5         UR7                  U5        S
UR                  UR0                  UR*                  S.$ )NrS   rc   r@   rd   rQ   rR   u   Leçon déjà complétée)r#   xpr   u   Leçon complétée avec succès)r#   r   xp_totalr3   )r%   r   r&   r(   r)   r   r,   r-   r   r   rg   r   r   r   r   r   r   rh   r   r'   r   r3   r	   rG   r   rM   rJ   rK   )r   r   r5   r6   r`   r   rD   s          r;   complete_lessonrn     s|   
 HB XXf$$		Y+++ eg  4HII 		m]55C	D	ffii=#:#::	;	ff&&&))3	4	ff&&&))3	4			VYY&	'	  4]^^ 88L)00':- eg 
 4^__ *|/J/JNgNpNp/p6l>\>\]] $YYL#--L
!!"			V---	.	 
 #<"D"DL%%-)*& ""fooaO"IIKJJ| 5YY 22&55	 r=   )&osr   fastapir   r   r   fastapi_pagination.utilsr   app.enums.general_stater   app.schemas.userr	   r
   app.models.baser   r   r   r   r   r   app.models.registrationr   app.utils.authentificationr   app.enums.registration_stater   routergetenvr   gettupler<   postrO   intra   rj   rn    r=   r;   <module>r      si   	  6 5 G 0 6 0 T T 0 ; :	 " $II17;  %&/67K/L (u ( '(T  ""67-)-- -^ ,-?FG[?\ YPC YPu YP .YPz *+=DEY=Z 1# 1U 1 ,1j ,- ""67AAA .Ar=   