o
    mj                     @   sd   d Z ddlmZmZmZ ddlmZmZ ddlm	Z	 ddl
mZ eddgdZded	efd
dZdS )z'Rutas de consulta a la API CRM externa.    )	APIRouterHTTPExceptionQuery)CrmApiClientCrmApiError)resolve_crm_base_url)get_settingsz/crmcrm)prefixtagsreturnc              
      s   t ddtf fdd}t dtd td td fdtd B dtd B dtd B dtf fd	d
}t ddtdtf fdd}t ddtf fdd}t ddtdtf fdd}t ddtf fdd}t ddtdtf fdd}t S )Nz/statusr   c               
      s|   t  } z| jrt| nd}W n ty' } zd}t|}W Y d }~nd }~ww d }| jo/ j|p6 jd| j j	|dS )N /)enabledbase_urlbase_id	endpointserror)
r   crm_api_enabledr   
ValueErrorstrr   r   rstripcrm_api_base_idr   )settingsbaseexcr   r	    8/var/www/html/bot-asterisk-ari/backend/api/crm_routes.py
crm_status   s    
z%create_crm_router.<locals>.crm_statusz	/clientesid	documentosearchc              
      sz   dd | ||d  D }z j|pd dI d H }W n ty0 } z	tdt|d|d }~ww t|dd |D d	S )
Nc                 S   s   i | ]	\}}|r||qS r   r   ).0kvr   r   r   
<dictcomp>%   s    z<create_crm_router.<locals>.list_clientes.<locals>.<dictcomp>)r    r!   r"   )params  status_codedetailc                 S   s&   g | ]}|j |j|j|j|jd qS )r    nombreapellidonombre_completorawr,   )r#   cr   r   r   
<listcomp>0   s    z<create_crm_router.<locals>.list_clientes.<locals>.<listcomp>)countclientes)itemslist_clientesr   r   r   len)r    r!   r"   r'   r4   r   r   r   r   r6      s   z(create_crm_router.<locals>.list_clientesz/clientes/{cliente_id}
cliente_idc              
      sl   z
  | I d H }W n ty  } z	tdt|d|d }~ww |s)tddd|j|j|j|j|jdS )Nr(   r)     zCliente no encontrador,   )	get_clienter   r   r   r    r-   r.   r/   r0   )r8   clienter   r   r   r   r:   <   s   z&create_crm_router.<locals>.get_clientez
/productosc               
      X   z	   I d H } W n ty } z	tdt|d|d }~ww t| dd | D dS )Nr(   r)   c                 S   s   g | ]}|j |j|jd qS )r    r-   r0   r=   r#   pr   r   r   r2   T   s    z=create_crm_router.<locals>.list_productos.<locals>.<listcomp>)r3   	productos)list_productosr   r   r   r7   )r@   r   r   r   r   rA   L   s   z)create_crm_router.<locals>.list_productosz/productos/{producto_id}producto_idc              
      sd   z
  | I d H }W n ty  } z	tdt|d|d }~ww |s)tddd|j|j|jdS )Nr(   r)   r9   zProducto no encontrador=   )get_productor   r   r   r    r-   r0   )rB   productor   r   r   r   rC   Y   s   z'create_crm_router.<locals>.get_productoz/polizasc               
      r<   )Nr(   r)   c                 S   sJ   g | ]!}|j |j|j|j|j|j|j|j|j|j	|j
|j|j|jd qS )r    r-   r.   polizarD   plan_actualprecio_actualmonedacreadoplan_ofrecidoprecio_ofrecidoplan_retencionmonto_asegurador0   rE   r>   r   r   r   r2   o   s"    
z;create_crm_router.<locals>.list_polizas.<locals>.<listcomp>)r3   polizas)list_polizasr   r   r   r7   )rO   r   r   r   r   rP   g   s   z'create_crm_router.<locals>.list_polizasz/polizas/{poliza_id}	poliza_idc                    s   z
  | I d H }W n ty  } z	tdt|d|d }~ww |s)tddd|j|j|j|j|j|j	|j
tjtjtjtj|j|j|j|jdS )Nr(   r)   r9   u   Póliza no encontrada)r    r-   r.   rF   rD   rG   rH   rK   rL   rM   rN   rI   rJ   rN   r0   )
get_polizar   r   r   r    r-   r.   rF   rD   rG   rH   r?   rK   rL   rM   rN   rI   rJ   r0   )rQ   rF   r   r   r   r   rR      s2   z%create_crm_router.<locals>.get_poliza)routergetdictr   r   )r	   r   r6   r:   rA   rC   rP   rR   r   r   r   create_crm_router   s4   rV   N)__doc__fastapir   r   r   
crm.clientr   r   crm.factoryr   configr   rS   rV   r   r   r   r   <module>   s    