
    nib*              
       P   S SK Jr  S SKJrJr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  S SKJrJr  S SKJr  S S	KJr  S S
KJr  \" SS/S9rS\S\\   4S jr\R;                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r\R?                  S5      S\" \5      \" \	5      4S\S\S\4S jj5       r \R;                  S5      \" \5      \" \	5      4S\S\4S jj5       r!\R;                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r"\R?                  S5      \" \5      \" \	5      4S\S\S\4S jj5       r#\RI                  S 5      \" \5      \" \	5      4S\S\S\S\4S! jj5       r%\RM                  S"5      \" \5      \" \	5      4S\S\S\4S# jj5       r&g)$    )Optional)	APIRouterDependsstatus)JSONResponse)get_db)Session)	UserLoginTeachingListStoreTeachingUpdateTeaching)TeachingClass_normalize_school_id)get_current_active_user)InspectionApiClient)SchoolClassz
/teachings	Teachings)prefixtagsdbreturnc                 *   U (       a  U R                   OSnU (       a  U R                  OSnU(       aX  U(       dQ  [        U5      R                  SUS9n[	        U[
        5      (       a#  [        U5      S:  a  US   R                  S5      n[        U5      $ )u   
Colegio efectivo de la sesión: school_id del usuario/JWT, o si hay customer_id
y no hay school_id, el primer colegio activo de ese cliente (mismo criterio que /courses).
Nr   )pagecustomer_idid)	r   	school_idr   get_all
isinstancelistlengetr   )session_userr   r   r   schools_lists        NC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routes\teachings.py_resolve_session_school_idr%      sx    
 /;,**K*6&&DI9"2..A;.OlD))c,.?!.C$Q++D1I	**    /teachingr"   c                    [        X5      nUci  U R                  c  SOSn[        [        R                  SUU R                  c  / O.SSU R                  (       a  U R                  OSU R
                  / S.S.S9$ U R                  c  SOU R                  n[        U5      R                  XPR
                  U R                  US	9n[        U[        5      (       aA  UR                  S
5      S:X  a,  [        [        R                  SUR                  SS5      S S.S9$ U R                  c  SOSn[        [        R                  SUUS.S9$ )Nz.Complete teachings list retrieved successfullyz Teachings retrieved successfully   r      )total_itemstotal_pagescurrent_pageitems_per_pagedatar   messager0   status_codecontent)r   r/   teaching_namer   r   error  r2   Error)r%   r   r   r   HTTP_200_OKper_pager   r   r6   r   dictr!   HTTP_404_NOT_FOUND)r(   r"   r   r   r2   
page_valueresults          r$   indexr@   !   sL    +<<I FNmmF[B  bD**"&mm3#$#$5=]]HMM&.&7&7:

 	
 mm+J2&&JGXGXhph~h~  KT&  UF&$FJJx$8G$C11!::i9
 	
 CK--BW>]G&&
 r&   z/listNr   c                    [        X5      n[        U 5      nUb$  Ub!  XC:w  a  [        [        R                  SS/ S.S9$ Un U c  [        [        R
                  SS/ S.S9$ [        U5      R                  U S9n[        U[        5      (       aA  UR                  S5      S	:X  a,  [        [        R                  S
UR                  SS5      S S.S9$ [        [        R
                  SSUS.S9$ )Ni  u5   No autorizado para listar enseñanzas de otro colegior1   r3   r*   z%Teachings list retrieved successfully)r   r   r7   r8   r2   r9   )r%   r   r   r   HTTP_403_FORBIDDENr:   r   get_all_listr   r<   r!   r=   )r   r"   r   session_sid	requestedr?   s         r$   rC   rC   P   s    -\>K$Y/I!8Y=U11R
 	
 I **B
 	
 2++i+@F&$FJJx$8G$C11!::i9
 	
 &&>
 r&   z/import_from_inspectionc                 f   [        X5      nUc  [        [        R                  SSS S.S9$ [	        5       nUR                  5       (       d  [        [        R                  SSS S.S9$ UR                  U5      nUR                  S5      (       dm  SUR                  S	5      =(       d    S
;   a  [        R                  O[        R                  n[        U[        U5      UR                  S	5      =(       d    SUS.S9$ [        U5      R                  X$5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                   SUR                  S	S5      S S.S9$ UR                  SS5      nUR                  SS5      nSU SU S3n	[        [        R"                  SU	US.S9$ )Ni  u   No se pudo determinar el colegio (school_id). Asocia un colegio al usuario, inicia sesión con un token que incluya school_id, o asegúrate de tener al menos un colegio activo para tu cliente (customer_id).r1   r3   i  zQInspection API not configured (INSPECTION_API_USERNAME / INSPECTION_API_PASSWORD)oku   No se encontró el colegior2    u-   Error al obtener enseñanzas desde Inspectionr   r7     u   Error al importar enseñanzasimportedr   skippedu   Importación finalizada: z	 nuevas, z# omitidas (duplicadas o sin datos).r*   )r%   r   r   HTTP_400_BAD_REQUESTr   is_configuredHTTP_503_SERVICE_UNAVAILABLE!fetch_teachings_for_active_schoolr!   r=   HTTP_502_BAD_GATEWAYintr   import_from_inspectionr   r<   HTTP_500_INTERNAL_SERVER_ERRORr:   )
r"   r   r   clientremoter4   r?   rJ   rK   msgs
             r$   rR   rR      s   *<<I33f 
 	
 !"F!!;;n
 	
 55i@F::d ,

90E0KL %%,, 	
 #k*!::i0c4c
 	
 255iHF&$FJJx$8G$C==!::i1PQ
 	
 zz*a(HjjA&G%hZy	Ad
eC&&
 r&   z/storec                 X   U R                  5       n[        X5      nXCS'   [        U5      R                  U5      n[	        U[         5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S.S9$ [        [        R                  S	S
US.S9$ )Nr   r   r7   rI   r2   zError creating teachingr1   r3      zTeaching created successfully)
r<   r%   r   storer   r!   r   r   rS   HTTP_201_CREATED)r(   r"   r   teaching_inputsr   r?   s         r$   rY   rY      s    mmoO*<<I#,K 2$$_5F&$FJJx$8G$C==!::i1JK
 	
 ++6
 r&   z
/edit/{id}r   c                 v   [        U5      R                  U 5      n[        U[        5      (       ao  UR                  S5      (       d  UR                  S5      S:X  aD  [	        [
        R                  SUR                  S5      =(       d    UR                  SS5      S S.S9$ [	        [
        R                  SS	US.S9$ )
Nr7   r   r8   r2   Teaching not foundr1   r3   r*   zTeaching retrieved successfully)r   r!   r   r<   r   r   r=   r:   r   r"   r   r?   s       r$   editr_      s    2""2&F&$VZZ%8%8FJJx<PT[<[11!::g.]&**YH\2]
 	
 &&8
 r&   z/update/{id}c                 V   UR                  SS9n[        X#5      nXTS'   [        U5      R                  X5      n[	        U[         5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S	.S
9$ [        [        R                  SSUS	.S
9$ )NT)exclude_unsetr   r   r7   rI   r2   zError updating teachingr1   r3   r*   zTeaching updated successfully)
r<   r%   r   updater   r!   r   r   rS   r:   )r   r(   r"   r   r[   r   r?   s          r$   rb   rb      s    mm$m7O*<<I#,K 2%%b:F&$FJJx$8G$C==!::i1JK
 	
 &&6
 r&   z/delete/{id}c                    [        U5      R                  U 5      n[        U[        5      (       aA  UR	                  S5      S:X  a,  [        [        R                  SUR	                  SS5      S S.S9$ [        [        R                  SS	US.S9$ )
Nr   r7   r8   r2   r]   r1   r3   r*   zTeaching deleted successfully)	r   deleter   r<   r!   r   r   r=   r:   r^   s       r$   rd   rd     s    2%%b)F&$FJJx$8G$C11!::i1EF
 	
 &&6
 r&   )'typingr   fastapir   r   r   fastapi.responsesr   app.backend.db.databaser   sqlalchemy.ormr	   app.backend.schemasr
   r   r   r   "app.backend.classes.teaching_classr   r   app.backend.auth.auth_userr   )app.backend.classes.inspection_api_clientr    app.backend.classes.school_classr   	teachingsrQ   r%   postr@   r!   rC   rR   rY   r_   putrb   rd    r&   r$   <module>rs      sQ    . . * * " V V R > I 8
	+ +Xc] + <CD[<\lstzl{ ,L ,	 ,bi , ,\ w"&'JaBbry  {A  sB -C -i -ho - -` )*5<=T5Uelmset A A[b A +AH =DE\=]mtu{m| M  cj  4 |,34K,L\cdj\k S 	 RY  , ~HOPgHhx  AG  yH s n I nu  4 .!.56M.N^efl^m s ) T[  "r&   