
    q=h7                     .   d dl mZmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ d dlmZ d dlm Z  d dl!m!Z! d dl"Z"d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>  ed      Z?e?j                  eg dddgdg        ej                  ej                         	 e?j                  de&de'ide'idddg       ed       ed      fdeDdeDfd        ZEe?j                  d!e1de2ide2idd"d#g       edd$%       ed&d&'       ed(d&d)*      fd+eeD   d,eFd-eFfd.       ZGe?j                  d/e1de2ide2idd0d#g      d1        ZHe?j                  d2e3de2ide2idd3d4g      d5        ZIe?j                  d6e6de2ide2idd7d8g       edd$%      fd9eeD   fd:       ZJe?j                  d;e7de2ide2idd0d#g      d<        ZKe?j                  d=d>d?g@       eddA%       edBd&d(dCD      fdEeDdFeFfdG       ZLe?j                  dHe<de=ide=iddIdJg       eddK%      fdLeeF   fdM       ZMe?j                  dNdOdJg@      dP        ZN	 e?j                  dQe(de)ide)iddgR       ed      fdSe*fdT       ZPe?j                  dUe+de+ide,idVdWgR       ed      fdSe-fdX       ZQe?j                  dYe/de/ide0idVd4gR       ed      fdSe.fdZ       ZRe?j                  d[eSd\deSiid]gR       ed       ed       ed       ed       ed       ed       ed       ed       ed       ed      f
d^eDd_eDd`eDdeDdaeDdbeDdceDddeDdeeDdfeee
      fdg       ZTe?j                  dheSd\deSiidigR      dje8fdk       ZUe?j                  dle:de;ide;iddmdJg       ed      fdnee>   fdo       ZVeWdpk(  rd dlXZX eXj                  e?dqdrs       yy)t    )ListOptional)BodyFastAPIRequestResponseQueryHTTPException
UploadFileFileCookie	WebSocketWebSocketDisconnectDependsForm)CORSMiddleware)JSONResponseN)inscripcion)inscripcion_wp)chat_claudia)boton_descargas)voluntarios)
propuestas)noticias)redes)encuesta)urlopen)VerificarExistenciaResponseVerificarExistenciaErrorInscribirResponseInscribirErrorInscribirRequestChatClaudiaResponseChatClaudiaErrorChatClaudiaRequestBotonDescargaRequestBotonDescargaResponseBotonDescargaErrorVoluntariosResponseErrorResponseTotalDescargasResponseTotalDescargasErrorResponsePropuestaRequestNoticiasResponsePropuestasResponseinsertarInscripcionWpRequest!InsertarRespuestasEncuestaRequest"InsertarRespuestasEncuestaResponseInsertarRespuestasEncuestaError%ObtenerPreguntasConRespuestasResponse"ObtenerPreguntasConRespuestasErrorRespuestaEncuestaT)debug)zhttp://localhost:3000zhttp://localhost:4200zhttps://imparables.com.coz#https://dev.imparables.cic-ware.comzhttps://pru.imparables.com.cozhttps://dev.imparables.com.co*)allow_originsallow_credentialsallow_methodsallow_headers)levelz/ask/verificarExistenciamodel)    u3   Verifica si un correo o documento ya está inscritou   Inscripción)response_model	responsessummarytags.correo	documentoc                    K   	 t        j                  | |      }|d   st        d|d         |S # t        $ r  t        $ r3}t	        j
                  dt        |              t        dd      d }~ww xY ww)Nsuccessr?   messagestatus_codedetailz*[ERROR] en verificar_existencia endpoint: r@   z%Error interno al verificar existencia)r   verificar_existenciar
   	Exceptionloggingerrorstr)rE   rF   	resultadoes       H/var/www/dev.api.imparables.com.co/api_imparables/landing/api_general.pyverificarExistenciarU   2   s     	]44VYG	#C	)8LMM  ]B3q6(KL4[\\]s%   A9,1 A9A6.A11A66A9z/ask/obtenerVoluntariosuM   Obtiene el listado de voluntarios con paginación y filtro opcional por fechaVoluntarioszFecha en formato YYYY-MM-DD)description   )ge
   d   )rY   lefechapagina
por_paginac                    K   	 t        j                  | ||      }t        d|d   |d         S # t        $ r}t	        dt        |            d }~wt        $ r}t	        ddt        |             d }~ww xY ww)	NrX   datos
paginacion)rH   datarb   r?   rJ   r@   zError al obtener voluntarios: )r   obtener_voluntariosr)   
ValueErrorr
   rQ   rN   )r]   r^   r_   rR   verS   s         rT   obtener_voluntarios_endpointrg   A   s     _33E6:N	"7# .
 	

  =CG<< _6TUXYZU[T\4]^^_s0   A;*/ A;	A8AA8A33A88A;z/ask/obtenerTodosVoluntariosu-   Obtiene todos los voluntarios sin paginaciónc                    K   	 t        j                         } | d   dk7  rt        d| j                  dd            | S # t        $ r  t        $ r3}t        j                  dt        |              t        dd	      d }~ww xY ww)
NrH   rX   r?   rI   Error desconocidorJ   -[ERROR] en obtenerTodosVoluntarios endpoint: r@   u%   Error interno al obtener  oluntarios)r   obtener_todos_voluntariosr
   getrN   rO   rP   rQ   rR   rS   s     rT   "obtener_todos_voluntarios_endpointrn   R   s     	]99;	Y1$C	iQd8eff  ]Ec!fXNO4[\\]%   B:? BB.A??BBz/ask/totalDescargasGlobalz%Obtiene el total general de descargas	Descargasc                  (  K   	 t        j                         } | d   st        d| j                  dd            t	        d| d         S # t        $ r  t
        $ r3}t        j                  d	t        |              t        d
d      d }~ww xY ww)NrH   r?   rI   ri   rJ   Ttotal)rH   rr   z,[ERROR] en total_descargas_global endpoint: r@   z.Error interno al obtener el total de descargas)	r   obtener_total_general_descargasr
   rl   r+   rN   rO   rP   rQ   rm   s     rT   total_descargas_globalrt   a   s     f#CCE	#C	iQd8eff%G$
 	
   fDSVHMN4deefs)   BAA
 	B
B.B

BBz/ask/obtenerNoticiasz<Obtiene el listado de noticias con filtro opcional por fechaNoticiasfecha_noticiac                    K   	 t        j                  |       }d|d   dS # t        $ r}t        dt	        |            d }~wt
        $ r}t        ddt	        |             d }~ww xY ww)NrX   ra   )rH   rc   r?   rJ   r@   u   Error al obtener noticias: )r   obtener_noticiasre   r
   rQ   rN   )rv   rR   rf   rS   s       rT   obtener_noticias_endpointry   s   s{     	]--m<	g&
 	
  =CG<< ]6RSVWXSYRZ4[\\]s0   A-! A-	A*A  A*A%%A**A-z/ask/obtenerPropuestasc                    K   	 t        j                         } | d   dk7  rt        d| j                  dd            | S # t        $ r  t        $ r3}t        j                  dt        |              t        dd	      d }~ww xY ww)
NrH   rX   r?   rI   ri   rJ   rj   r@   u$   Error interno al obtener propuestas)r   obtener_todas_propuestasr
   rl   rN   rO   rP   rQ   rm   s     rT   r{   r{      s     	\779	Y1$C	iQd8eff  \Ec!fXNO4Z[[\ro   z/ask/obtenerTweetsu)   Obtiene los últimos tweets de un usuarioTwitter)rC   rD   zID del usuario de Twitter   u   Número máximo de tweets)rY   r\   rW   user_idmax_resultsc                    K   	 t        j                  | |      }d|d   |j                  d      dS # t        $ r<}t	        j
                  dt        |              t        dt        |            d }~ww xY ww)NrX   ra   includes)rH   rc   r   z$[ERROR] en obtener_tweets endpoint: r@   rJ   )r   obtener_tweetsrl   rN   rO   rP   rQ   r
   )r~   r   rR   rS   s       rT   obtener_tweets_endpointr      sx     	<((+>	g&!j1
 	

  <<SVHEFCF;;<s$   A:-2 A:	A77A22A77A:z"/ask/obtenerPreguntasConRespuestasz=Obtiene el listado de preguntas con sus respuestas opcionales	Encuestasu   ID de la encuesta específicaid_encc                   K   	 t        j                  |       }|d   st        d|d         t        di |S # t        $ r  t        $ r3}t        j                  dt        |              t        dd      d }~ww xY ww)	NrH   r?   rI   rJ   z6[ERROR] en obtener_preguntas_con_respuestas endpoint: r@   z1Error interno al obtener preguntas con respuestas )r    obtener_preguntas_con_respuestasr
   r4   rN   rO   rP   rQ   )r   rR   rS   s      rT   )obtener_preguntas_con_respuestas_endpointr      s     i==fE	#C	)8LMM4AyAA  iNsSTvhWX4ghhis%   B49 BA>.A99A>>Bz/ask/consultarEncuestasz+Obtiene el listado de encuestas disponiblesc                     K   	 t        j                         S # t        $ r*} t        j                  d|         t        dd      d } ~ ww xY ww)NzError al consultar Encuestas: r@   z5Error al procesar la solicitud de consultar encuestasrJ   )r   traer_lista_encuestasrN   rO   rP   r
   )rS   s    rT   consultar_encuestasr      sN     m--// m6qc:;4kllms$   A A	A%AAAz/ask/inscribir)rA   rB   rD   ra   c                    K   	 t        j                  | j                               }|S # t        $ r}|d }~wt        $ r'}t        j                  d       t        dd      d }~ww xY ww)Nu&   Error interno al procesar inscripciónr@   rJ   )r   procesar_inscripciondictr
   rN   rO   	exception)ra   rR   rS   s      rT   inscribir_voluntarior      sd     ^44UZZ\B	  ^BC4\]]^s.   A*$) A*	A'4A' "A""A''A*z/ask/claudia)   r@   zChat claudiac                 T   K   t        j                  | j                               }|S wN)r   enviar_chat_claudiar   ra   rR   s     rT   enviar_mensaje_chat_claudiar      s"     00>I   &(z/ask/BotonDescargac                 T   K   t        j                  | j                               }|S wr   )r   registrar_descargar   r   s     rT   registrar_boton_descargar      s"     225::<@Ir   z/ask/insertarPropuestar   zAgregar nueva propuestanombreCompletoemailtipoDocumentotelefonociudadtituloPropuestaambitoPropuestadescripcionPropuestaadjuntoc
                    K   	 | |||||||||	d
}
t        j                  |
       d {   }|S 7 # t        $ r}|d }~wt        $ r*}t	        j
                  d|        t        dd      d }~ww xY ww)N)
r   r   r   rF   r   r   r   r   r   r   z&Error al agregar una nueva propuesta: r@   z,Error interno al agregar una nueva propuestarJ   )r   propuesta_nuevar
   rN   rO   rP   )r   r   r   rF   r   r   r   r   r   r   rc   rR   rS   s                rT   insertar_propuestar      s     d -*" ..$8
 %44T::	 ;   d>qcBC4bccds:   A6%2 02 A62 	A3=A3	%A..A33A6z/ask/insertarInscripcionesWPu   Agregar nueva inscripción WPrequestc                    K   	 | j                         }t        j                  |      }|S # t        $ r*}t	        j
                  d|        t        dd      d }~ww xY ww)NuA   Error al agregar una nueva inscripción de contacto de WhatsApp: r@   uF   Error al procesar la solicitud de inscripción de contacto de WhatsApprJ   )r   r   insertar_incripcion_nuevo_wprN   rO   rP   r
   )r   rc   rR   rS   s       rT   funcr      sb     ~||~"??E	 ~YZ[Y\]^4|}}~s$   A!&+ A!	A%AAA!z/ask/insertarRespuestasEncuestaz1Inserta las respuestas del usuario en la encuesta
respuestasc                 J  K   	 | D cg c]  }|j                          }}t        j                  |      }|d   st        d|d         t	        di |S c c}w # t        $ r  t
        $ r3}t        j                  dt        |              t        dd      d }~ww xY ww)	NrH   r?   rI   rJ   z2[ERROR] en insertar_respuestas_encuesta endpoint: r@   z0Error interno al insertar respuestas de encuestar   )	r   r   insertar_respuestas_encuestar
   r2   rN   rO   rP   rQ   )r   	respuestarespuestas_dictrR   rS   s        rT   %insertar_respuestas_encuesta_endpointr     s     h=GH	9>>+HH99/J	#C	)8LMM1>I>> I   hJ3q6(ST4fgghs8   B#A A6A B#A B -.BB  B#__main__z0.0.0.0i  )hostport)Ztypingr   r   fastapir   r   r   r   r	   r
   r   r   r   r   r   r   r   fastapi.middleware.corsr   fastapi.responsesr   rO   
formularior   r   comunicacion_claudiar   r   r   r   	comunidadr   r   r   jsonurllib.requestr   clases_landingr   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   appadd_middlewarebasicConfigINFOrl   rQ   rU   intrg   rn   rt   ry   r{   r   r   r   postr   r   r   r   r   r   r   __name__uvicornrunr       rT   <module>r      s   ! T  T  T  T 2 *  " % - + # !     " w	  w	  w	  w	  w	  w	  w	 D    %%      ',, '
 G	#4Obi  lD  bE  MT  Vn  Lo  \p  zo  wE  vF  G,1#Js 
]c 
]3 
] G
] 	"3FY`boXpx  BO  xP  SQ  [j  r  q@  A>CDVs>t  EJ  KL  QR  ES  gl  mo  tu  z}  g~ _hsm _  B _  ad _ A_  	'8K^egt]u  ~E  GT  }U  XV  `O  Wd  Ve  f
] f
] 	$5K^egt]u  ~E  GT  }U  XV  `G  OZ  N[  \f \f" 	/?QXZgPhpw  zG  pH  KI  RP  Wa  Vb  cCH[xCy 
]8C= 
] c
] 	!2DW^`mVnv}  @M  vN  QO  YH  P]  O^  _
\ _
\ 	'RZcYde16sHc1d38qRUp3q<3 <-0< f< 	->cv}  @b  vc  kr  tV  jW  pX  ba  it  hu  vLQRV  eD  ME iHSM i vi 	"-Zbmanom pm H
+<wXfNgov  yG  oH  II  Q_  P`  a9=c 	^&6 	^ a	^ .)<wXkNlt{  ~N  tO  IP  Xf  Wg  hBFs) -?  h 
/DW^`uVv  F  HZ  ~[  Q\  do  cp  qAEc *>  q 
"4C'SWCYaz`{|s)cc#YIs)99 $S	*.t*#d#d#d #d 	#d
 #d #d #d #d #d d:&'#d }#dN 
(#PWY]I_  hG  gH  I~4 ~ I~ 
+<^qx  {Z  q[  cj  lK  bL  kM  WJ  R]  Q^  _VZ[^V_ hDAR<S h _h" zGKK)$/ r   