
    mh&                     F   d dl 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 d dl
mZ 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 d dlmZ  e       Z e         e j6                  dd      Zej;                  d       ee      fdefd       ZejA                  d       ee      fdedefd       Z!ej;                  d       ee      fde"defd       Z#ej;                  d       ee      fde"defd       Z$ejA                  d       ee      fde"defd       Z%y)    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                    | \  }}|j                  t              j                  t        j                  |j                  k(  t        j
                  t        j                  k(        j                         }g }|D ]K  }|j                  t              j                  t        j                  |j                  k(  t        j
                  t        j                  k(        j                         }|st|j                  t              j                  t        j                  |j                  k(        j                         }|j!                  |j                  |j"                  |j$                  |j&                  |j(                  |j                  |j*                  |j,                  |j.                  |j0                  |j2                  d       N d|d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           o/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/students/my_taining_progress.pyget_my_registrationsr<      si   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                    |\  }}| j                   }t        |t              st        dd      |t        j                  k(  rd}n|t        j
                  k(  rd}nd}t        |j                  | j                  | j                  | j                  | j                  ||t        j                               }|j                  |       |j                          |j!                  |       d|j                  |j                  |j                  |j                  |j                  |j                   j"                  |j$                  dd	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           	      B   |\  }}|j                  t              j                  t        j                  | k(  t        j                  |j
                  k(        j                         }|st        dd      |j                  t              j                  t        j
                  | k(  t        j                  t        j                  k(        j                         }|st        dd      |j                  t              j                  t        j
                  |j                  k(        j                         }|j
                  |j                  |j                  |r|j                   nd g d}|j                  t"              j                  t"        j                  |j
                  k(        j%                  t"        j&                        j)                         }|D ]@  }	|j                  t*              j                  t*        j
                  |	j,                  k(  t*        j                  t        j                  k(        j                         }
|
st|
j
                  |
j                   |
j                  |	j&                  g d}|j                  t.              j                  t.        j,                  |
j
                  k(  t.        j                  t        j                  k(        j%                  t.        j&                        j)                         }|D ]  }|j
                  |j                   |j&                  g d}|j                  t0              j                  t0        j2                  |j
                  k(  t0        j                  t        j                  k(        j%                  t0        j&                        j)                         }|D cg c]&  }|j
                  |j                   |j&                  d	( c}|d
<   |d   j5                  |        |d   j5                  |       C d|dS c c}w )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	-%%	&		   44&!((II'LLL///
 %' 	  ))\\!--ZZ
 HHVVF$$		16<<<CVCV3VWXfll#SU	 	  	7Fii	K  ((FII5v|||GZGZ7Z[&,,'	  &	&  !))#\\#\\		&K	" 	"))+67	7: 	Y&&{3i44l 6,OO	&s   9+Pz/lessons/{lesson_id}/contentr   c                    |\  }}|j                  t              j                  t        j                  | k(  t        j                  t
        j                  k(        j                         }|st        dd      |j                  t        j                        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                   t        j                  k(        j                  t        j                  |j                  k(        j#                         }|st        dd      |j                  t$              j                  t$        j&                  |j                  k(  t$        j                  |k(        j                         }|st        dd      |j                  |j(                  |j*                  |j,                  |j.                  |j0                  |j                   d}d|d	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                    |\  }}|j                  t              j                  t        j                  | k(  t        j                  t
        j                  k(        j                         }|st        dd      |j                  t        j                        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                  t        j                  k(        j                  t        t        j                   t        j                  k(        j                  t        j                  |j                  k(        j#                         }|st        dd      |j                  t$              j                  t$        j&                  |j                  k(  t$        j                  |k(        j                         }|st        dd      |j(                  | k(  r,|j*                  t,        j.                  k(  rd|j0                  dS |j                  |_        |j                   |_        |j                  t        j                        j                  t        j                  |j                   k(        j#                         |_        t,        j.                  |_        |j0                  d	|_        |xj0                  |j2                  r|j2                  nd	z  c_        |j5                          |j7                  |       d
|j                  |j0                  |j*                  d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      sk   	  6 5 G 0 6 0 T T 0 ; :	 " $BII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=   