
    ib*              
       8   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 d dlmZmZmZmZ d dlmZmZ d dlmZ d d	lmZ d d
lmZ  eddg      Zdedee   fdZej;                  d       ee       ee	      fdededefd       Zej?                  d      d ee       ee	      fdededefd       Z ej;                  d       ee       ee	      fdedefd       Z!ej;                  d       ee       ee	      fdededefd       Z"ej?                  d       ee       ee	      fdededefd       Z#ejI                  d        ee       ee	      fdedededefd!       Z%ejM                  d"       ee       ee	      fdededefd#       Z&y)$    )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                     | r| j                   nd}| r| j                  nd}|rP|sNt        |      j                  d|      }t	        |t
              r"t        |      dkD  r|d   j                  d      }t        |      S )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        E/var/www/pie360backend.cl/public_html/app/backend/routes/teachings.py_resolve_session_school_idr%      su    
 /;,**K*6&&DI9"2..A;.OlD)c,.?!.C$Q++D1I	**    /teachingr"   c                    t        ||      }|e| j                  dnd}t        t        j                  d|| j                  g n)dd| j                  r| j                  nd| j
                  g dd      S | j                  dn| j                  }t        |      j                  || j
                  | j                  |	      }t        |t              rC|j                  d
      dk(  r/t        t        j                  d|j                  dd      d d      S | j                  dnd}t        t        j                  d||d      S )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@   !   sM    +<<I FNmmF[B  bD**"&mm3#$#$5=]]HMM&.&7&7:

 	
 mm+J2&&JxGXGXhph~h~  KT&  UF&$FJJx$8G$C11!::i9
 	
 CK--BW>]G&&
 r&   z/listNr   c                    t        ||      }t        |       }|&|$||k7  rt        t        j                  ddg d      S |} | t        t        j
                  ddg d      S t        |      j                  |       }t        |t              rC|j                  d      d	k(  r/t        t        j                  d
|j                  dd      d d      S t        t        j
                  dd|d      S )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    -\2>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                 N   t        | |      }|t        t        j                  ddd d      S t	               }|j                         st        t        j                  ddd d      S |j                  |      }|j                  d      sdd|j                  d	      xs d
v rt        j                  nt        j                  }t        |t        |      |j                  d	      xs d|d      S t        |      j                  ||      }t        |t              rC|j                  d      dk(  r/t        t        j                   d|j                  d	d      d d      S |j                  dd      }|j                  dd      }d| d| d}	t        t        j"                  d|	|d      S )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                 \   | j                         }t        ||      }||d<   t        |      j                  |      }t	        |t               rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d d      S t        t        j                  d	d
|d      S )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#,OK 2$$_5F&$FJJx$8G$C==!::i1JK
 	
 ++6
 r&   z
/edit/{id}r   c                 b   t        |      j                  |       }t        |t              rg|j                  d      s|j                  d      dk(  rBt	        t
        j                  d|j                  d      xs |j                  dd      d d      S t	        t
        j                  dd	|d      S )
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%8FJJx<PT[<[11!::g.]&**YH\2]
 	
 &&8
 r&   z/update/{id}c                 b   |j                  d      }t        ||      }||d<   t        |      j                  | |      }t	        |t               rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d d	
      S t        t        j                  dd|d	
      S )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#,OK 2%%b/:F&$FJJx$8G$C==!::i1JK
 	
 &&6
 r&   z/delete/{id}c                    t        |      j                  |       }t        |t              rC|j	                  d      dk(  r/t        t        j                  d|j	                  dd      d d      S t        t        j                  dd	|d      S )
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&   