
    mhL                        d dl 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 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  e       Z e         e j:                  dd      Zej?                  d       e
d       ee	      fde dede!fd       Z"ej?                  d       e
d       ee	      fde dede!fd       Z#ejI                  d       ed       ee	      fde de%de!fd       Z&ejO                  d       ee	      fde%de!fd       Z(ej?                  d       ee	      fde%dede!fd       Z)ejI                  d       ee	      fd e%d!ede!fd"       Z*ejO                  d       ee	      fd e%de!fd#       Z+y)$    N)	APIRouterDependsHTTPExceptionForm)"disable_installed_extensions_check)check_user_is_admin)Body)List)GeneralState)Question)Module)Answer)QuestionCreateMQuestionResponseAnswerCreateAnswerResponseQuestionsBatchCreateQuestionSchemaFILE_STORAGE_PATHfilesz/modules/{module_id}/questions.	module_idquestion_datadependenciesc                 ,   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        |j                  |       }|j                  |       |j                          |j                  D ]?  }t        |j                  |j                  |j                        }|j                  |       A |j                          |j                  |       dt        j                   |      dS )N  Module introuvablecontentr   r   
is_correctquestion_idu   Question créée avec succès)messagequestion)queryr   filteridfirstr   r   r   addflushanswersr   r    commitrefreshr   from_orm)	r   r   r   dbadminmodulenew_questionanswer_dataanswers	            a/Users/theessential/Documents/Github/KofAcademy/kof-academy-backend/app/routers/admins/quizzes.pycreate_question_with_answersr5      s     IBXXf$$VYY)%;<BBDFC!566%%L FF<HHJ$,, ''"--$

 	v IIKJJ| 3#,,\:     z$/modules/{module_id}/questions/batch
batch_datac                    |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      g }|j                  D ]  }t        |j                  |       }|j                  |       |j                          |j                  D ]?  }	t        |	j                  |	j                  |j                        }
|j                  |
       A |j                  |        |j                          |D ]  }|j!                  |        t#        |       d|D cg c]  }t%        j&                  |       c}dS c c}w )Nr   r   r   r   u    questions créées)r"   	questions)r$   r   r%   r&   r'   r   r9   r   r   r(   r)   r*   r   r    appendr+   r,   lenr   r-   )r   r7   r   r.   r/   r0   created_questionsr   r1   r2   r3   qs               r4   create_questions_batchr>   >   s^    IBXXf$$VYY)%;<BBDFC!566#-- /!))
 	|

 )00 	K#++&11(OOF
 FF6N	 	  .%/( IIK  


1 /011DE  zK  ULtuUcUlUlmnUo  UL  M  M  ULs   :Ez/questions/{question_id}r!   r   c                    |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |||_        |j                          |j                  |       |S )Nr   Question introuvablestatus_codedetail)	r$   r   r%   r&   r'   r   r   r+   r,   )r!   r   r   r.   r/   r#   s         r4   update_questionrD   i   su     IB xx!(()CDJJLH4JKK "IIKJJxOr6   c                     |\  }}|j                        j                  |j                  | k(        j                         }|st	        dd      |j                  |       |j                          ddiS )Nr   r@   rA   r"   u   Question supprimée)r$   r%   r&   r'   r   deleter+   )r!   r   r.   r/   r#   s        r4   delete_questionrG      sh    IBxx!(()CDJJLH4JKKIIhIIK,--r6   z /questions/{question_id}/answersr3   c                 b   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      t        dd|j                  i|j                         }|j                  |       |j                          |j                  |       |S )Nr   r@   rA   r!    )r$   r   r%   r&   r'   r   r   dictr(   r+   r,   )r!   r3   r   r.   r/   r#   
new_answers          r4   
add_answerrL      s    IBxx!(()CDJJLH4JKKAHKKA6;;=AJFF:IIKJJzr6   z/answers/{answer_id}	answer_iddatac                 `   |\  }}|j                  t              j                  t        j                  | k(        j	                         }|st        dd      |j                  d      j                         D ]  \  }}t        |||        |j                          |j                  |       |S )Nr      Réponse introuvablerA   T)exclude_unset)r$   r   r%   r&   r'   r   rJ   itemssetattrr+   r,   )rM   rN   r   r.   r/   r3   fieldvalues           r4   update_answerrV      s    IBXXf$$VYY)%;<BBDF4JKK			5;;= &uu%&IIKJJvMr6   c                 D  K   |\  }}|j                        j                  |j                  | k(        j                         }|st	        dd      t
        j                  |_        |j                          d {    |j                  |       d {    ddiS 7 !7 
w)Nr   rP   rA   r"   u   Réponse supprimée)
r$   r%   r&   r'   r   r   DELETEDstater+   r,   )rM   r   r.   r/   r3   s        r4   delete_answerrZ      s     IBXXf$$VYY)%;<BBDF4JKK''FL
))+
**V
,-- s$   A8B :B;B B	B B ),osfastapir   r   r   r   fastapi_pagination.utilsr   app.utils.authentificationr   r	   typingr
   app.enums.general_stater   app.models.questionr   app.models.moduler   app.models.answerr   app.schemas.adminr   r   r   r   r   r   routergetenvr   postinttupler5   r>   putstrrD   rF   rG   rL   rV   rZ   rI   r6   r4   <module>rl      s   	 ; ; G :   1 ( $ $ E  E	 " $BII17;  -. &*#Y!"56  "    / D 34 (,Cy!"56'M'M$'M 'M 5'MT &' :!"56	 	 (. )*<CDW<X . .E . +. /0MTUhMi 	C 	 	U 	 1	 "#LSTgLh 	S 	 	E 	 $	 %&>EFY>Z .3 .e . '.r6   