
    {h                        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\5S\64S jj5       r7\1Ri                  S5      \" \,5      4S\5S\(S\64S jj5       r8g)    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/quizzes/generate/{module_id}	module_iddependenciesc                    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 :H  5      R                  5       nU(       d
  [        SSS9eUR                  [        5      R                  [        R                  U :H  5      R                  5       nU(       d
  [        SSS9e[        R                  " U5        [!        UR"                  [%        U5      5      nUS U n['        SUR(                   3SUR(                   3[*        R*                  R-                  5       [*        R*                  R-                  5       S [
        R                  UR                  UR                  S	9n	UR/                  U	5        UR1                  5         UR3                  U	5        U	R                  U	R(                  U	R4                  U V
Vs/ s HZ  n
U
R                  U
R6                  U
R8                   Vs/ s H'  nUR                  UR6                  UR:                  S
.PM)     snS.PM\     snn
S.$ s  snf s  snn
f )N  zModule introuvablestatus_codedetaili  u$   Utilisateur non inscrit à ce moduleu'   Aucune question trouvée pour ce modulezQuiz - u.   Quiz généré automatiquement pour le module )titledescription
start_dateend_datescorestater%   registration_id)idcontent
is_correct)r3   r4   answers)quiz_idr,   r-   	questions)queryr   filterr3   r1   r   ACTIVEfirstr   r   user_idr%   r   allrandomshufflemin	quizCountlenr   r,   datetimeutcnowaddcommitrefreshr-   r4   r6   r5   )r%   r&   dbusermoduleregistrationr8   nombre_questionsquestions_selectionneesquizqas               9D:\kofCorporation\kof-academy-backend\app\routers\quiz.pygenerate_quizrS      s9   HB XXf$$VYY)%;V\\\M`M`=`aggiF4HII 		$$/1G1G91T	U	 
 4Z[[ "))(*<*<	*IJNNPI4]^^ NN96++S^<'(9)9: ~&DV\\NS&&--/""))+!!))$	D FF4LIIKJJt 77'' %

 % dd99 YY
 44AIIQ\\J
 %

	 
	

s   *J?=.J:+	J?:J?z/quizzes/{quiz_id}/submitr7   r6   c                 r   Uu  p4UR                  [        5      R                  [        [        R                  [        R
                  :H  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R                  :H  5      R                  5       nSnU H  n[        S UR                   5       S 5      n	UR                  R!                  [#        UR
                  5      5      n
U
(       a  [%        U
5      U	:X  a  US-  nXul        [(        R(                  R+                  5       Ul        UR/                  5         M     UR
                  UUR,                  S.$ )Nr(   u!   Quiz introuvable ou non autorisér)   r   c              3   ^   #    U  H#  oR                   (       d  M  UR                  v   M%     g 7f)N)r5   r3   ).0rQ   s     rR   	<genexpr>submit_quiz.<locals>.<genexpr>s   s     59aTQTT9s   --   )r7   r0   finished_at)r9   r   joinr   r2   r3   r:   r=   r<   r   r   r%   r>   nextr6   reponsesgetstrintr0   rD   rE   endDaterG   )r7   r6   r&   rI   rJ   rO   r8   r0   rP   correct_answeruser_answers              rR   submit_quizrd   [   sR   HB 		lD00LOOC	D	GGw  DGG+

 
 	 4WXX "))(*<*<*NOSSUI E51995
 &&**3qtt953{+~=QJE 
((//1
		  77||     )9rD   osr?   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#   postr_   tuplerS   rd    re   rR   <module>rz      s     	  G G - G ! % 0 * : R Q Q 0 g g - H :	 " $II17;  ,-8?@T8U :S : : .:z ()JQRfJg ' '{ '% ' *'re   