
     qh!                         d dl mZmZmZmZ d dlZd dlmZ d dlZej                  j                  d       d dl
mZ deeeef      deeef   fdZdd	ee   deeef   fd
Zd Zy)    )ListOptionalDictAnyN)datetimez/var/www/html/config)get_connection
respuestasreturnc           
         d }d }	 t               }|st        d      |j                         }| rt        | t              s*ddd|r|j                          |r|j                          S S d}d}g }| D ]<  }	 d|vsd|vr|j                  d	       |j                  ||d   |d   f       |d
z  }> |j                          |t        |       k(  r9dd| d|t        |       d|r|j                          |r|j                          S S |dkD  rFdd| dt        |        d|t        |       |d|r|j                          |r|j                          S S dd|d|r|j                          |r|j                          S S # t        $ r\}|j                  d|j                  dd       dt        |              t        j                  dt        |              Y d }~ld }~ww xY w# t        $ rs}t        j                  dt        |              |r|j                          ddt        |       dcY d }~|r|j                          |r|j                          S S d }~ww xY w# |r|j                          |r|j                          w w xY w)N2   No se pudo establecer conexión a la base de datosFu(   No se proporcionaron respuestas válidassuccessmessagez
            INSERT INTO encuestas_respuestas_log
            (id_enc_det, respuesta_usuario)
            VALUES(%s, %s)
        r   
id_enc_detrespuesta_usuariou9   Respuesta inválida: falta id_enc_det o respuesta_usuario   zError al insertar respuesta ID desconocidoz: z(Error al insertar respuesta individual: TzSe insertaron correctamente z respuestas)r   r   respuestas_insertadastotal_enviadaszSe insertaron z de )r   r   r   r   erroresz%No se pudo insertar ninguna respuesta)r   r   r   z'Error en insertar_respuestas_encuesta: z&Error interno al insertar respuestas: )r   	Exceptioncursor
isinstancelistcloseappendexecutegetstrloggingerrorcommitlenrollback)r	   conexionr   queryr   r   	respuestaes           N/var/www/dev.api.imparables.com.co/api_imparables/landing/encuesta/encuesta.pyinsertar_respuestas_encuestar*      s   HFT!#PQQ" J!= EN LLNNN G !" $ 	SISy04Gy4XNN%^` ul+12' 
 &*%	S( 	 !C
O39:O9PP[\)>"%j/	> LLNNN 7 #Q&+,A+B$s:FWWbc)>"%j/"0 LLNNN # !B"  LLNNN U  S!@|]jAk@llnorstounvwx HQQRRS<  
?AxHI?AxH
 	
 LLNNN 
 LLNNN sy   =G% )G% 5E=G% E=.3G% %G% G% =	G"AGG% G""G% %	I!.AI1I!2I$ I!!I$ $'Jid_encc           
         d}d}	 t               }|st        d      |j                  d      }d}g }| |dz  }|j                  |        |dz  }|j	                  ||       |j                         }|s+ddg d	|r|j                          |r|j                          S S |D cg c]  }|d
   	 }}dj                  dgt        |      z        }d| d}	|j	                  |	|       |j                         }
i }|
D ]-  }|d
   }||vrg ||<   ||   j                  |d   |d   d       / g }|D ]R  }|d
   }|d
   |d   |d   t        |d         t        |d         |j                  |g       d}|j                  |       T ddt        |       d|t        |      d|r|j                          |r|j                          S S c c}w # t        $ ra}t        j                  dt        |              ddt        |       dcY d}~|r|j                          |r|j                          S S d}~ww xY w# |r|j                          |r|j                          w w xY w)u   
    Obtiene el listado de preguntas con sus posibles respuestas
    
    Args:
        id_enc: ID de la encuesta específica (opcional)
    
    Returns:
        Dict con el resultado de la operación
    Nr   T
dictionaryzx
            SELECT id_enc_det, id_enc, pregunta, tipo_pregunta, obligatorio
            FROM encuestas_detalle
        z WHERE id_enc = %sz ORDER BY id_enc_detzNo se encontraron preguntasr   r   datar   ,z%sz
            SELECT id_enc_res_preg, id_enc_det, respuesta_pregunta
            FROM encuestas_respuestas_pregunta
            WHERE id_enc_det IN (z;)
            ORDER BY id_enc_det, id_enc_res_preg
        id_enc_res_pregrespuesta_pregunta)r2   r3   r+   preguntatipo_preguntaobligatorio)r   r+   r4   r5   r6   respuestas_opcioneszSe encontraron z
 preguntas)r   r   r0   total_preguntasz+Error en obtener_preguntas_con_respuestas: Fz$Error interno al obtener preguntas: r   )r   r   r   r   r   fetchallr   joinr#   r   boolr   r    r!   )r+   r%   r   query_preguntasparams_preguntas	preguntasr4   ids_preguntasplaceholdersquery_respuestasr	   respuestas_por_preguntar'   r   preguntas_completaspregunta_completar(   s                    r)    obtener_preguntas_con_respuestasrE   f   s    HFZ!#PQQD1  33O##F+11 	(89OO%	8x LLNNN o AJJH,/JJxx]); ;< " #/ 0	 	'7__&
 #%# 	I"<0J!8868'
3#J/66#,->#?&/0D&E8 		 !! 
	:H!,/J&|4"8,$Z0!$Xo%>!?#H]$;<'>'B'B:r'R!  &&'89
	: (-@)A(B*M'"#67	
 LLNNN o KZ  
CCF8LM=c!fXF
 	
 LLNNN 
 LLNNN sI   A3G G #G/C1G G 	H51H0H5H8 0H55H8 8'Ic                      t               } | dddS | j                  d      }d}|j                  |       |j                         }|j	                          | j	                          dd|dS )	NFu   Error de conexiónr   Tr-   a  
            SELECT 
                e.id_enc, 
                e.nombre_encuesta, 
                ec.categoria as categoria, 
                e.fecha_vencimiento, e.status,  
                e.descripcion
            FROM encuestas e
            LEFT JOIN encuestas_categorias ec  ON  e.categoria =  ec.id_enc_cat 
            LEFT JOIN usuarios u ON e.usuario = u.id
            LEFT JOIN empleados emp ON emp.id  = u.idEmpleado
            ORDER BY e.id_enc DESC
        z!Encuestas obtenidas correctamenter/   )r   r   r   r9   r   )
conexionBDr   r&   	encuestass       r)   traer_lista_encuestasrI      s    #%
 / 
 ""d"3 	uOO%	 	:
 	
    )N)typingr   r   r   r   r    r   syspathr   cnxpdor   r   r*   intrE   rI    rJ   r)   <module>rQ      s~    , ,   
 & ' !XT$sCx.-A Xd3PS8n XvgXc] gd3PS8n gT"
rJ   