
    U+ih%              
       ~   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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j1                  d       ee       ee	      fdedefd       Zej1                  d       ee       ee	      fdededefd       Zej1                  d       edd       ee       ee	      f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j1                  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jC                  d       ee       ee	      fdedededefd       Z"ejG                  d       ee       ee	      fdededefd        Z#y)!z<5. Estrategias de trabajo con la familia y con la comunidad.    )	APIRouterDependsQuerystatus)JSONResponse)get_db)get_current_active_user)	UserLoginStoreCourseFamilyCommunityUpdateCourseFamilyCommunity&StoreCourseFamilyCommunityObservations)CourseFamilyCommunityClass)Session)Optionalz/course_family_communityzCourse Family Community)prefixtagsz/typessession_userdbc           	         	 t        |      j                         }|j                  d      dk(  r/t        t        j
                  d|j                  d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)u\   List strategy types (planificación, aprendizaje, evaluación, otras_acciones) for the form.r   error  messagezError al listarr   r   datastatus_codecontent   OKr   N)	r   	get_typesgetr   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_200_OK	Exceptionstr)r   r   resultes       S/var/www/pie360backend.cl/public_html/app/backend/routes/course_family_community.pyr    r       s    
+B/99;::h7*"AA#&6::iIZ3[egh  **"tVZZPR=ST
 	
  
=="s1vrB
 	

s$   AB .B 	C'C=CCz/by_course/{course_id}	course_idc           	         	 t        |      j                  |       }|j                  d      dk(  r0t        t        j
                  d|j                  dd      g dd	      S t        t        j                  d
d|j                  dg       |j                  d      d	      S # t        $ r3}t        t        j
                  dt        |      g dd	      cY d}~S d}~ww xY w)zdFull structure for the course: each type with descripcion, seguimiento, evaluacion and observations.r)   r   r   r   r   ErrorN)r   r   r   observationsr   r   r   r   r-   )	r   get_by_course_idr!   r   r   r"   r#   r$   r%   r)   r   r   r&   r'   s        r(   r.   r.   /   s    
+B/@@9@U::h7*"AA#&6::i3Q[]ost  **

62. &

> :	
 	
  
=="s1vrSWX
 	

s$   AB  !>B   	C)(CCCz/observationsN)descriptionc                    	 | t        t        j                  dddd      S 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,Get observations for section 5 for a course.Ni  zcourse_id is requiredr   r   r+   r   r   r   r   r,   r   r   r   )
r   r   HTTP_400_BAD_REQUESTr   get_observationsr!   r"   r#   r$   r%   r/   s        r(   r3   r3   M   s    
"77#&3JTXY  ,B/@@9@U::h7*"AA#&6::i3Q[_`  **"tVZZ=OP
 	
  
=="s1vtD
 	

s)    B/ AB/ -B/ /	C*8'C%C*%C*r   c                    	 t        | d      r| j                         n| j                         }t        |      j	                  |d   |j                  d            }|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)z1Save observations for section 5 (one per course).
model_dumpr)   r-   )r)   r-   r   r   r   r   Error al guardarNr   r   r   zObservaciones guardadas.)hasattrr5   dictr   set_observationsr!   r   r   r"   r#   r$   r%   )r   r   r   payloadr&   r'   s         r(   store_observationsr;   k   s    
'.t\'B$//#		+B/@@k* ^4 A 
 ::h7*"AA#&6::iI[3\fjk  **"vzz)E_/`jno
 	
  
=="s1vtD
 	

s$   BC .C 	D	'D>D	D	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&Get one course_family_community by id.r   r     r   Registro no encontradoNr   r   r   r   r   r   )
r   	get_by_idr!   r   r   HTTP_404_NOT_FOUNDr#   r$   r"   r%   r<   r   r   r&   r'   s        r(   r@   r@      s    
+B/99"=::h7*"55#&6::iIa3blpq  **"tVZZ=OP
 	
  
=="s1vtD
 	

s$   AB -B 	C'C=CCz/storec                 Z   	 t        | d      r| j                         n| j                         }t        |      j	                  |      }|j                  d      dk(  r/t        t        j                  d|j                  dd      dd	      S |j                  d
      |j                  d
      nd|j                  d      i}t        t        j                  d|j                  dd      |d	      S # t        $ r2}t        t        j                  dt        |      dd	      cY d}~S d}~ww xY w)zdCreate or update one row for (course_id, family_community_strategy_type_id). Optional: observations.r5   r   r   r   r   r6   Nr   r   r   r<      zRegistro guardado)r7   r5   r8   r   storer!   r   r   r"   HTTP_201_CREATEDr$   r%   )r   r   r   r:   r&   data_outr'   s          r(   rE   rE      s   
'.t\'B$//#		+B/55g>::h7*"AA#&6::iI[3\fjk  *0F);)G6::f%dTZT^T^_cTdMe//"vzz)EX/Yckl
 	
  
=="s1vtD
 	

s%   BC/ A#C/ /	D*8'D%D*%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)zZUpdate one course_family_community by id (optional: descripcion, seguimiento, evaluacion).r5   T)exclude_unsetNr   r   r>   r   r?   r   r   r   zRegistro actualizador<   r   )r7   r5   r8   itemsr   updater!   r   r   rA   r#   r$   r"   r%   )	r<   r   r   r   kvr:   r&   r'   s	            r(   rK   rK      s7   
9@|9T$///5lplululwl}l}l  [Rdhdegh  DE  DQ[\^_[_  [R+B/66r7C::h7*"55#&6::iIa3blpq  **"vzz)E[/\gkmsmwmwx|m}f~
 	
 [R  
=="s1vtD
 	

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)zSoft delete (deleted_date).r   r   r>   r   r?   Nr   r   r   zRegistro eliminador   )
r   deleter!   r   r   rA   r#   r$   r"   r%   rB   s        r(   rO   rO      s    
+B/66r:::h7*"55#&6::iIa3blpq  **"vzz)EY/Zdhi
 	
  
=="s1vtD
 	

s$   AB .B 	C	'C>C	C	)$__doc__fastapir   r   r   r   fastapi.responsesr   app.backend.db.databaser   app.backend.auth.auth_userr	   app.backend.schemasr
   r   r   r   1app.backend.classes.course_family_community_classr   sqlalchemy.ormr   typingr   course_family_communityr!   r    intr.   r3   postr;   r@   rE   putrK   rO        r(   <module>r_      s   B 5 5 * * >  Y " #%
#	$  X&%&=>&/


 '
. 56 &&=>&/


 	
 7
: _-$T{C%&=>&/
}

 	
 .
: o. &&=>&/

0

 	
 /
8 W% &&=>&/


 	
 &
0 h' &&=>&/

$

 	
 (
4 W% &&=>&/	


%
 
 		
 &
4 ( &&=>&/


 	
 )
r^   