ó
    ß¿›i+2  ã            
       ó°  • S SK Jr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  S SKJr  S SKJr  \" S	S
/S9r\R/                  S5      \" SSS9\" SSS9\" \
5      \" \5      4S\\   S\\   S\S\4S jj5       r\R/                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\R7                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R;                  S5      \" \
5      \" \5      4S\S\S\S\4S jj5       r\R/                  S5      \" \
5      \" \5      4S\S\S\4S jj5       r\RA                  S 5      \" \
5      \" \5      4S\S\S\4S! jj5       r!\R;                  S5      \" \
5      \" \5      4S\S\S\S\4S" jj5       r"\R7                  S5      \" \
5      \" \5      4S\S\S\4S# jj5       rg)$é    )Ú	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           	      ó¨  •  [        U5      R                  U US9nUR                  S5      S:X  a<  [        [        R                  SUR                  SS5      UR                  S/ 5      S.S	9$ [        [        R
                  S
SUR                  S/ 5      S.S	9$ ! [         a/  n[        [        R                  S[        U5      / S.S	9s SnA$ SnAff = f)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         ÚpC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\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 Á,+B Â
CÂ"$CÃCÃCz$/by_meeting/{meeting_schedualing_id}Úmeeting_schedualing_idc           	      óˆ  •  [        U5      R                  U SS9nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      / S.S	9$ [        [        R
                  S
SUR                  S/ 5      S.S	9$ ! [         a/  n[        [        R                  S[        U5      / S.S	9s SnA$ SnAff = f)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Â$B<Â6CÂ<CzL/by_meeting/{meeting_schedualing_register_id}/professional/{professional_id}c                 óˆ  •  [        U5      R                  U US9nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S	9$ [        [        R                  S
UR                  SS5      SS.S	9$ ! [         a/  n[        [        R                  S[        U5      SS.S	9s SnA$ SnAff = f)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                 ó  •  [        US5      (       a  UR                  5       OUR                  5       nUR                  S5      =(       d    / n[	        U5      R                  U US9nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S	S
.S9$ [        [        R                  SUR                  SS5      S	S
.S9$ ! [         a/  n[        [        R                  S[        U5      S	S
.S9s S	nA$ S	nAff = f)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Ñ'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                 óˆ  •  [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	S
UR                  S5      S.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)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Â$B<Â6CÂ<Cz/storec           	      ó:  •  [        U S5      (       a  U R                  5       OU R                  5       n[        U5      R	                  U5      nUR                  S5      S:X  a,  [        [        R                  SUR                  SS5      SS.S	9$ UR                  S
5      n[        [        R                  SUR                  SS5      Ub  UOSUR                  S5      0S.S	9$ ! [         a/  n[        [        R                  S[        U5      SS.S	9s SnA$ SnAff = f)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Ñ'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           	      óü  •  [        US5      (       a  UR                  SS9O7UR                  5       R                  5        VVs0 s H  u  pEUc  M
  XE_M     snnnU(       d  [	        [
        R                  SSSS.S9$ [        U5      R                  X5      nUR                  S	5      S
:X  aS  UR                  SS5      nUS:H  n	[	        U	(       a  [
        R                  O[
        R                  U	(       a  SOSUSS.S9$ [	        [
        R                  SUR                  SS5      SUR                  S5      0S.S9$ s  snnf ! [         a/  n
[	        [
        R                  S[        U
5      SS.S9s Sn
A
$ Sn
A
ff = f)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Ñ9T$—/‘/°/Ñ5Ðlp×luÑluÓlw×l}Ñl}Ôlô  [RÒlÑdhÐdeð  DEÓ[_Ð[\Ò[_Ñlò  [RˆÞÜÜ"×7Ñ7à!Ø~Ø ññð ô =¸RÓ@×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Øññ
õ 	
ûð
úsC   ‚AE Á	D<ÁD<Á&E Á=BE Ã?<E Ä<E Å
E;Å$E6Å0E;Å6E;c                 óŠ  •  [        U5      R                  U 5      nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  SS
5      SS.S9$ ! [         a/  n[        [        R                  S[        U5      SS.S9s SnA$ SnAff = f)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Â$B=Â7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   