
    U+i              
          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mZmZ d dlmZ d dlmZ d dlmZ  ed	d
g      Zej-                  d       edd       edd       ee
       ee      fdee   de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j-                  d       ee
       ee      fdededefd       Zej7                  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defd       Zej?                  d       ee
       ee      fdededefd       Zy)    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCollaborativeWorkUpdateCollaborativeWork)CollaborativeWorkClass)Session)Optionalz/collaborative_workszCollaborative Works)prefixtags Nz-1 o omitir = no filtrar)description	school_id	course_idsession_userdbc           	         	 t        |      j                  | |      }|j                  d      dk(  r?t        t        j                  d|j                  dd      |j                  dg       d	      S t        t        j
                  d
d|j                  dg       d	      S # t        $ r2}t        t        j                  dt        |      g d	      cY d}~S d}~ww xY w)z]Lista registros activos (deleted_date is None). Filtros opcionales por school_id y course_id.)r   r   r   error  messagezError al listardatar   r   r   status_codecontent   OKN)r   getr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   r   r   resultes         O/var/www/pie360backend.cl/public_html/app/backend/routes/collaborative_works.pyget_listr+      s    
'+//)y/Y::h7*"AA!%zz)5FG"JJvr2  **

62.
 	
  
==q6
 	

s$   A.B  1.B   	C)'CCCz/by_course/{course_id}c                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd	      S t        t        j                  d
d|j                  d      d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)zVObtiene el registro de trabajo colaborativo para un course_id (uno por curso, activo).)r   r   r     r   Registro no encontradoNr   r   r!   r"   r   r   )
r   get_by_course_idr#   r   r   HTTP_404_NOT_FOUNDr%   r&   r$   r'   )r   r   r   r(   r)   s        r*   r/   r/   6   s    
'+<<y<Q::h7*"55!%zz)5MN   **

6*
 	
  
=="s1vtD
 	

s$   AB  -B 	C	'C>C	C	z/{id}idc                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	d
|j                  d      d      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)zObtiene un registro por id.r   r   r-   r   r.   Nr   r   r!   r"   r   r   )
r   	get_by_idr#   r   r   r0   r%   r&   r$   r'   r1   r   r   r(   r)   s        r*   r3   r3   W   s    
'+55b9::h7*"55!%zz)5MN   **

6*
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCz/storer   c           	         	 t        | d      r| j                         n| j                         }|j                  d      |r|j                  |d<   t        |      j                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	
      S |j                  d      }t        t        j                  d|j                  dd      ||nd|j                  d      id	
      S # t        $ r2}t        t        j                  dt        |      dd	
      cY d}~S d}~ww xY w)un   Crea o actualiza: si ya existe para ese course_id, actualiza; si no, crea. school_id del body o de la sesión.
model_dumpr   Nr   r   r   r   zError al guardarr   r   r      zRegistro creador1   )hasattrr6   dictr#   r   r   storer   r   r$   HTTP_201_CREATEDr&   r'   )r   r   r   payloadr(   createdr)   s          r*   r:   r:   x   s*   
'.t\'B$//#		;;{#+#/#9#9GK '+11':::h7*"AA!%zz)5GH   **V$//!::i1BC#*#6T6::dCS<T
 	
  
==q6
 	

s%   B*D -AD 	D='D82D=8D=c           	      n   	 t        |d      r|j                  d      n4|j                         j                         D ci c]  \  }}|	|| c}}}t	        |      j                  | |      }|j                  d      dk(  r/t        t        j                  d|j                  dd	      dd
      S t        t        j                  d|j                  dd      d|j                  d      id
      S c c}}w # t        $ r2}t        t        j                  dt        |      dd
      cY d}~S d}~ww xY w)zActualiza un registro por id.r6   T)exclude_unsetNr   r   r-   r   r.   r   r   r!   zRegistro actualizador1   r   )r8   r6   r9   itemsr   updater#   r   r   r0   r%   r&   r$   r'   )	r1   r   r   r   kvr<   r(   r)   s	            r*   rA   rA      s=   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R'+222w?::h7*"55!%zz)5MN   **!::i1GHvzz$/0
 	
 [R&  
==q6
 	

s<   ?C9 
C3C3A!C9 3?C9 3C9 9	D4'D/)D4/D4c                    	 t        |      j                  |       }|j                  d      dk(  r/t        t        j
                  d|j                  dd      dd      S t        t        j                  d	|j                  dd
      dd      S # t        $ r2}t        t        j                  dt        |      dd      cY d}~S d}~ww xY w)u$   Borrado lógico: setea deleted_date.r   r   r-   r   r.   Nr   r   r!   zRegistro eliminador   )
r   deleter#   r   r   r0   r%   r&   r$   r'   r4   s        r*   rE   rE      s    
'+2226::h7*"55!%zz)5MN   **!::i1EF
 	
  
==q6
 	

s$   AB .B 	C	'C>C	C	) fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   ,app.backend.classes.collaborative_work_classr   sqlalchemy.ormr   typingr   collaborative_worksr#   intr+   r/   r3   postr:   putrA   rE        r*   <module>rT      s/   5 5 * * > Z Z O " !
	   $T7QR$T7QR%&=>&/	"
}"
}"
 "
 		"
 "
J 12 &&=>&/


 	
 3
@ ! &&=>&/


 	
 "
@ (# &&=>&/%

 %
%
 	%
 $%
P ! &&=>&/	#
#

!#
 #
 		#
 "#
L G$ &&=>&/!
!
!
 	!
 %!
rS   