Ë
    U+Áiß0  ã            
       ó¢  — 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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j7                  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defd„«       Zej/                  d«       ee
«       ee«      fdededefd„«       ZejA                  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j7                  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Ú+StoreMeetingSchedualingRegisterProfessionalÚ,UpdateMeetingSchedualingRegisterProfessionalÚ+SyncMeetingSchedualingRegisterProfessionals)Ú+MeetingSchedualingRegisterProfessionalClass)ÚSession)ÚOptionalz+/meeting_schedualing_register_professionalsz*Meeting Schedualing Register Professionals)ÚprefixÚtagsÚ Nz-1 o omitir = no filtrar)ÚdescriptionÚmeeting_schedualing_register_idÚprofessional_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)zCLista registros activos (deleted_date is None). Filtros opcionales.©r   r   r   Úerroréô  Úmessageú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         úf/var/www/pie360backend.cl/public_html/app/backend/routes/meeting_schedualing_register_professionals.pyÚget_listr0      sá   € ð
Ü<¸RÓ@×DÑDØ,KØ+ð Eó 
ˆð :‰:hÓ 7Ò*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5FÓGØ"ŸJ™J v¨rÓ2ñôð ô Ü×*Ñ*àØØŸ
™
 6¨2Ó.ñô
ð 	
øô ò 
ÜÜ×=Ñ=àÜ˜q›6Øñô
õ 	
ûð
ús$   ‚A.B  Á1.B  Â 	CÂ)'CÃCÃCz$/by_meeting/{meeting_schedualing_id}Úmeeting_schedualing_idc           	      óœ  — 	 t        |«      j                  | d¬«      }|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   Obtiene la lista de profesionales para un meeting_schedualing_register_id (en la ruta se usa meeting_schedualing_id como nombre del parÃ¡metro).Nr   r   r   r   r   r   r    r!   r$   r%   r   r&   )r1   r   r   r-   r.   s        r/   Úget_by_meeting_schedualing_idr3   @   sÒ   € ð
Ü<¸RÓ@×DÑDØ,BØ ð Eó 
ˆð :‰:hÓ 7Ò*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5FÓGØñôð ô Ü×*Ñ*àØØŸ
™
 6¨2Ó.ñô
ð 	
øô ò 
ÜÜ×=Ñ=Ø"¬s°1«v¸rÑBô
õ 	
ûð
úó$   ‚AB Á!.B Â	CÂ'CÃ CÃCzL/by_meeting/{meeting_schedualing_register_id}/professional/{professional_id}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)uy   Quita un profesional de la lista: borrado lÃ³gico del registro con ese meeting_schedualing_register_id y professional_id.r   r   r   é”  r   úRegistro no encontradoNr    r!   r$   úRegistro eliminador   )
r   Ú#delete_by_register_and_professionalr'   r   r   ÚHTTP_404_NOT_FOUNDr)   r*   r(   r+   r,   s         r/   r9   r9   d   sÓ   € ð
Ü<¸RÓ@×dÑdØ,KØ+ð eó 
ˆð :‰:hÓ 7Ò*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ñôð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1EÓFØñô
ð 	
øô ò 
ÜÜ×=Ñ=Ø"¬s°1«v¸tÑDô
õ 	
ûð
úr4   z2/by_meeting/{meeting_schedualing_register_id}/syncr   c                 ó  — 	 t        |d«      r|j                  «       n|j                  «       }|j                  d«      xs g }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‚   Sincroniza la lista: envÃ­a professional_ids y el backend deja solo esos (borra lÃ³gico los que no estÃ©n, aÃ±ade los que falten).Ú
model_dumpÚprofessional_ids)r   r=   r   r   r   r   zError al sincronizarNr    r!   r$   zLista actualizada)Úhasattrr<   Údictr'   r   Úsync_professionalsr   r   r(   r)   r*   r+   )r   r   r   r   Úpayloadr=   r-   r.   s           r/   r@   r@   ‰   s  € ð
Ü'.¨t°\Ô'B$—/‘/Ô#ÈÏ	É	ËˆØ"Ÿ;™;Ð'9Ó:Ò@¸bÐÜ<¸RÓ@×SÑSØ,KØ-ð Tó 
ˆð :‰:hÓ 7Ò*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5KÓLØ ñôð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1DÓEØñô
ð 	
øô ò 
ÜÜ×=Ñ=Ø"¬s°1«v¸tÑ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 Obtiene un registro por id (pk).r   r   r6   r   r7   Nr    r!   r$   r%   r   r   )
r   Ú	get_by_idr'   r   r   r:   r)   r*   r(   r+   ©rB   r   r   r-   r.   s        r/   rD   rD   °   sÂ   € ð
Ü<¸RÓ@×JÑJÈ2ÓNˆØ:‰:hÓ 7Ò*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ñôð ô Ü×*Ñ*àØØŸ
™
 6Ó*ñô
ð 	
øô ò 
ÜÜ×=Ñ=Ø"¬s°1«v¸tÑDô
õ 	
ûð
ús$   ‚AB Á-B Â	CÂ'CÂ=CÃCz/storec           	      ó<  — 	 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
«      }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)z?Crea un registro en meeting_schedualing_register_professionals.r<   r   r   r   r   zError al guardarNr    r!   r   éÉ   zRegistro creadorB   )r>   r<   r?   r   Ústorer'   r   r   r(   ÚHTTP_201_CREATEDr*   r+   )r   r   r   rA   r-   Úcreatedr.   s          r/   rH   rH   Ñ   s	  € ð
Ü'.¨t°\Ô'B$—/‘/Ô#ÈÏ	É	ËˆÜ<¸RÓ@×FÑFÀwÓOˆØ:‰:hÓ 7Ò*ÜÜ"×AÑAà!Ø%Ÿz™z¨)Ð5GÓHØ ñôð ð —*‘*˜VÓ$ˆÜÜ×/Ñ/àØ!Ÿ:™: iÐ1BÓCØ#*Ð#6™¸TÀ6Ç:Á:ÈdÓCSÐ<Tñô
ð 	
øô ò 
ÜÜ×=Ñ=àÜ˜q›6Øñô
õ 	
ûð
ús%   ‚BC  ÂAC  Ã 	DÃ)'DÄDÄDc           	      óê  — 	 t        |d«      r|j                  d¬«      n4|j                  «       j                  «       D ci c]  \  }}|€Œ	||“Œ c}}}|st	        t
        j                  ddddœ¬«      S t        |«      j                  | |«      }|j                  d	«      d
k(  rL|j                  dd«      }|dk(  }	t	        |	rt
        j                  nt
        j                  |	rdn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)zwActualiza un registro por id. Enviar en el body al menos un campo: meeting_schedualing_register_id y/o professional_id.r<   T)Úexclude_unsetNi  u]   EnvÃ­e al menos un campo para actualizar (meeting_schedualing_register_id o professional_id).r    r!   r   r   r   ÚErrorzRegistro no encontrado.r6   r   r$   zRegistro actualizadorB   )r>   r<   r?   Úitemsr   r   ÚHTTP_400_BAD_REQUESTr   Úupdater'   r:   r(   r)   r*   r+   )rB   r   r   r   ÚkÚvrA   r-   ÚmsgÚ	not_foundr.   s              r/   rP   rP   ø   sƒ  € ð'
Ü9@ÀÀ|Ô9T$—/‘/°/Ô5Ðlp×luÑluÓlw×l}Ñl}Ól÷  [RÑdhÐdeÐghð  DEñ  DQÐ[\Ð^_Ñ[_ó  [RˆÙÜÜ"×7Ñ7à!Ø~Ø ñôð ô =¸RÓ@×GÑGÈÈGÓTˆØ:‰:hÓ 7Ò*Ø—*‘*˜Y¨Ó0ˆCØÐ8Ñ8ˆIÜÙ9BœF×5Ò5Ì×HmÑHmá%.™c°CØ"Ø ñôð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1GÓHØ˜vŸz™z¨$Ó/Ð0ñô
ð 	
ùó- [Røô< ò 
ÜÜ×=Ñ=àÜ˜q›6Øñô
õ 	
ûð
úsB   ‚?D7 Á
D1ÁD1Á$D7 Á6A:D7 Ã1?D7 Ä1D7 Ä7	E2Å 'E-Å'E2Å-E2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   r6   r   r7   Nr    r!   r$   r8   r   )
r   Údeleter'   r   r   r:   r)   r*   r(   r+   rE   s        r/   rV   rV   *  sÉ   € ð
Ü<¸RÓ@×GÑGÈÓKˆØ:‰:hÓ 7Ò*ÜÜ"×5Ñ5à!Ø%Ÿz™z¨)Ð5MÓNØ ñôð ô Ü×*Ñ*àØ!Ÿ:™: iÐ1EÓFØñô
ð 	
øô ò 
ÜÜ×=Ñ=àÜ˜q›6Øñô
õ 	
ûð
ú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   r   ÚCapp.backend.classes.meeting_schedualing_register_professional_classr   Úsqlalchemy.ormr   Útypingr   Ú*meeting_schedualing_register_professionalsr'   Úintr0   r3   rV   r9   Úputr@   rD   ÚpostrH   rP   © ó    r/   ú<module>re      sî  ðß 5Ó 5Ý *Ý *Ý >÷ó õõ #Ý á-6Ø8Ø
6Ð	7ô.Ð *ð ,×/Ñ/°Ó3á5:¸4ÐMgÔ5hÙ%*¨4Ð=WÔ%XÙ%Ð&=Ó>Ù˜&“/ñ	%
Ø%-¨c¡]ð%
à˜c‘]ð%
ð ð%
ð 	ò	%
ó 4ð%
ðP ,×/Ñ/Ð0VÓWñ &Ð&=Ó>Ù˜&“/ñ 
Øð 
àð 
ð 	ò 
ó Xð 
ðF ,×2Ñ2ð  4Bó  Cñ &Ð&=Ó>Ù˜&“/ñ	!
Ø%(ð!
àð!
ð ð!
ð 	ò	!
ó Cð!
ðH ,×/Ñ/Ð0dÓeñ &Ð&=Ó>Ù˜&“/ñ	#
Ø%(ð#
à
5ð#
ð ð#
ð 	ò	#
ó fð#
ðL ,×/Ñ/°Ó8ñ &Ð&=Ó>Ù˜&“/ñ
Øð
àð
ð 	ò
ó 9ð
ð@ ,×0Ñ0°Ó:ñ &Ð&=Ó>Ù˜&“/ñ#
Ø
5ð#
àð#
ð 	ò#
ó ;ð#
ðL ,×/Ñ/°Ó8ñ &Ð&=Ó>Ù˜&“/ñ	.
Øð.
à
6ð.
ð ð.
ð 	ò	.
ó 9ð.
ðb ,×2Ñ2°7Ó;ñ &Ð&=Ó>Ù˜&“/ñ!
Øð!
àð!
ð 	ò!
ó <ñ!
rd   