
    h                     ^   d dl Z d dlZd dlZd dl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mZ d dlmZ d dlmZ d dlmZ  e       Z e
         ej0                  d	d
      Zej5                  d       ee      fdedefd       Zej5                  d       ee      fdededefd       Zy)    N)	APIRouterDependsHTTPExceptionFile
UploadFile)"disable_installed_extensions_check)GeneralState)QuizModuleQuestion)Registration)QuizAnswers)check_token_validityFILE_STORAGE_PATHfilesz/quizzes/generate/{module_id}	module_iddependenciesc                 x   |\  }}|j                  t              j                  t        j                  | k(  t        j                  t
        j                  k(        j                         }|st        dd      |j                  t              j                  t        j                  |j                  k(  t        j                  | k(        j                         }|st        dd      |j                  t              j                  t        j                  | k(        j                         }|st        dd      t        j                  |       t!        |j"                  t%        |            }|d | }t'        d|j(                   d|j(                   t*        j*                  j-                         t*        j*                  j-                         d t
        j                  |j                  |j                  	      }	|j/                  |	       |j1                          |j3                  |	       |	j                  |	j(                  |	j4                  |D 
cg c]V  }
|
j                  |
j6                  |
j8                  D cg c]&  }|j                  |j6                  |j:                  d
( c}dX c}}
dS c c}w c c}}
w )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)r    r!   answers)quiz_idr   r   	questions)queryr   filterr    r   r	   ACTIVEfirstr   r   user_idr   r   allrandomshufflemin	quizCountlenr
   r   datetimeutcnowaddcommitrefreshr   r!   r#   r"   )r   r   dbusermoduleregistrationr%   nombre_questionsquestions_selectionneesquizqas               `/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/students/quiz.pygenerate_quizr@      s/   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   )J69+J1$J61J6z/quizzes/{quiz_id}/submitr$   r#   c                 b   |\  }}|j                  t              j                  t        t        j                  t        j
                  k(        j                  t        j
                  | k(  t        j                  |j
                  k(        j                         }|st        dd      |j                  t              j                  t        j                  |j                  k(        j                         }d}|D ]  }t        d |j                  D        d       }	|j                  j!                  t#        |j
                              }
|
rt%        |
      |	k(  r|dz  }||_        t(        j(                  j+                         |_        |j/                           |j
                  ||j,                  dS )Nr   u!   Quiz introuvable ou non autorisér   r   c              3   N   K   | ]  }|j                   s|j                    y w)N)r"   r    ).0r>   s     r?   	<genexpr>zsubmit_quiz.<locals>.<genexpr>q   s     5aQTT5s   %%   )r$   r   finished_at)r&   r
   joinr   r   r    r'   r*   r)   r   r   r   r+   nextr#   reponsesgetstrintr   r1   r2   endDater4   )r$   r#   r   r6   r7   r<   r%   r   r=   correct_answeruser_answers              r?   submit_quizrP   Y   s[   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||     )r1   osr,   fastapir   r   r   r   r   fastapi_pagination.utilsr   app.enums.general_stater	   app.models.baser
   r   r   app.models.registrationr   app.schemas.userr   app.utils.authentificationr   routergetenvr   postrK   tupler@   rP    rQ   r?   <module>r_      s     	  G G G 0
 3 2 0 ( ;	 " $BII17;  ,-8?@T8U :S : : .:z ()JQRfJg ' '{ '% ' *'rQ   