
    9gEi5                        d Z ddlmZ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 ddlmZmZ dd	lmZmZmZmZmZ dd
lmZ ddlmZ  e       Zej=                  dee         dd ee	      fdededefd       Z ejC                  de       ee       ee      fdededefd       Z"ejC                  de       ee       ee	       ee      fdededededef
d       Z#y)z7
Endpoints utilisateur pour le module de quiz flexible
    )	APIRouterDependsHTTPExceptionstatus)Session)get_db)User)QuizCategory)FlexibleAttempt)FlexibleQuizServiceget_flexible_quiz_service)QuizStartResponseQuizQuestionsResponseQuizSubmissionQuizAttemptResponseQuestionForUser)get_current_user)List/)response_model   skiplimitdbc                    K   |j                  t              j                  t        j                  dk(        j	                  |       j                  |      j                         }|S w)u=   Liste des catégories de quiz disponibles pour l'utilisateur.T)queryr
   filter	is_activeoffsetr   all)r   r   r   
categoriess       M/home/www/lebenam.kofcorporation.com/app/api/v1/endpoints/flexible_quizzes.pyget_available_categoriesr#      sS      ,'..|/E/E/MNUUVZ[aabghllnJs   A$A&z/{category_id}/startcategory_idcurrent_userquiz_servicec           	        K   	 |j                  | |j                        }|j                  |      }t        |j                  |D cg c]  }t	        j
                  |       c}      S c c}w # t        $ r)}t        t        j                  t        |            d}~wt        $ r#}t        t        j                  d|       d}~ww xY ww)uk   
    Démarre un quiz pour une catégorie, crée une tentative, et retourne les questions aléatoires.
    )
attempt_id	questionsstatus_codedetailNu#   Erreur lors du démarrage du quiz: )
start_quizidget_questions_for_attemptr   r   model_validate
ValueErrorr   r   HTTP_404_NOT_FOUNDstr	ExceptionHTTP_500_INTERNAL_SERVER_ERROR)r$   r%   r&   attemptr)   qes          r"   r-   r-      s     A))+|G ::7C	$zzBKLQ55a8L
 	
L R(A(A#a&QQ A(M(MX{|}{~V  A  	AAsG   CAA. A)
!A. (C)A. .	C
7$BC
'CC

Cz/{attempt_id}/submitr(   
submissionc                   K   |j                  t              j                  t        j                  | k(  t        j                  |j                  k(        j                         }|st        t        j                  d      	 |j                  ||      }|S # t        $ r)}t        t        j                  t        |            d}~wt        $ r#}t        t        j                  d|       d}~ww xY ww)uL   
    Soumet les réponses d'un quiz de catégorie et retourne le score.
    u   Tentative de quiz non trouvéer*   Nz&Erreur lors de la soumission du quiz: )r   r   r   r.   user_idfirstr   r   r2   submit_quizr1   HTTP_400_BAD_REQUESTr3   r4   r5   )r(   r9   r%   r   r&   r6   completed_attemptr8   s           r"   submit_category_quizr@   4   s      hh'..j(<??2 eg 
 (A(AJjkkD(44WjI   T(C(CCPQFSS D(M(MX~  @A  B  WC  D  	DDs6   A=C3 B C3	C0$CC0C++C00C3N)$__doc__fastapir   r   r   r   sqlalchemy.ormr   app.db.sessionr   app.models.userr	   app.models.flexible_quizr
   app.models.flexible_attemptr   "app.services.flexible_quiz_servicer   r   app.schemas.flexible_quizr   r   r   r   r   app.core.securityr   typingr   routergetintr#   postr-   r@        r"   <module>rR      sT   > = " !   1 7 ]  / 	C%6 78&/
 	 9 #4IJ !!12(/0I(JAAA &A KA* #4GH !!12&/(/0I(JDDD D 		D
 &D IDrQ   