o
    i                     @   sP  d dl mZmZmZmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZ d dlmZ 	 edd	gd
Ze	ddZeejjd< d'dededefddZdedeeeef  fddZeejjd< eddefddZededfdedefddZ edded efd!d"Z!ed#ded efd$d%Z"d&S )(    )	APIRouterRequestFormDepends)RedirectResponseJSONResponse)Jinja2Templates)
DictCursor)ListTuple)register_session_logicdecrypt_datato_sao_paulo_time)get_db_connection/panelzAPI Web Panel)prefixtags	templates)	directoryr   successrequestmessagecategoryc                 C   s,   d| j vr
g | j d< | j d ||f d S NZ	_messages)sessionappend)r   r   r    r   /app/routers/panel.pyflash   s   

r   returnc                 C   s   d| j v r| j dS g S r   )r   pop)r   r   r   r   get_flashed_messages   s   r!    c                    sp   t  }z%|jtd}|d | }W d    n1 sw   Y  W |  n|  w td| |dS )NZcursor_factoryz1SELECT * FROM companies ORDER BY created_at DESC;zdashboard.html)r   sessions)r   cursorr	   executeZfetchallcloser   ZTemplateResponse)r   conncurr$   r   r   r   get_panel_dashboard.   s   

r*   z	/register.cookie_stringc              
      sv   zt | t| dd W n' ty4 } zt|dr|jnt|}t| d| d W Y d }~nd }~ww tdddS )	Nu*   Sessão registrada/atualizada com sucesso!r   detailzErro ao registrar: dangerr   /  urlstatus_code)r   r   	Exceptionhasattrr,   strr   )r   r+   er,   r   r   r   handle_panel_registerJ   s   r6   z/delete/{cnpj}cnpjc              
      s   t  }z]z;| -}|d|f |  |jdkr&t| d| dd n
t| d| dd W d    n1 s:w   Y  W n ty[ } zt| d	| d
 W Y d }~nd }~ww W |  n|  w tdddS )Nz&DELETE FROM companies WHERE cnpj = %s;r   u   Sessão do CNPJ z removida com sucesso.r   u'   Nenhuma sessão encontrada para o CNPJ .warningu   Erro ao remover sessão: r-   r   r.   r/   )	r   r%   r&   commitZrowcountr   r2   r'   r   )r   r7   r(   r)   r5   r   r   r   handle_panel_deleteT   s&   

r;   z/get-decrypted-cookie/{cnpj}c              
      s   t  }zozJ|jtd}|d|f | }W d   n1 s"w   Y  |s:tddiddW W |r9|  S S t|d }td	|id
W W |rO|  S S  tys } ztdt	|iddW  Y d}~W |rn|  S S d}~ww |r{|  w w )zn
    Endpoint interno para o painel. Busca um cookie pelo CNPJ,
    descriptografa-o e retorna como JSON.
    r#   z-SELECT cookie FROM companies WHERE cnpj = %s;Nerroru   CNPJ não encontradoi  )contentr1   cookiedecrypted_cookie)r=   i  )
r   r%   r	   r&   Zfetchoner   r'   r   r2   r4   )r   r7   r(   r)   Zsession_datar?   r5   r   r   r   get_decrypted_cookiee   s6   


 

r@   N)r   )#fastapir   r   r   r   fastapi.responsesr   r   Zfastapi.templatingr   Zpsycopg2.extrasr	   typingr
   r   Z	bootstrapr   r   r   utilsr   routerr   envfiltersr4   r   r!   globalsgetr*   postr6   r;   r@   r   r   r   r   <module>   s2    
	