
    ;Rgj2                         d Z ddlZddlZ ej                  d      ZdZdZdZdZde	d	e
e	e	f   fd
Z	 dde	de	de	de	dz  d	eeee	f   f
dZ	 	 dde	de	dz  de	de	dz  de	dz  d	eeee	f   fdZy)zs
GoHighLevel (Linkia) API client.
Envio de mensagem WhatsApp de volta ao lead e movimentacao de cards no pipeline.
    N
ghl_clientz$https://services.leadconnectorhq.comz
2021-07-28EGfIBET2j8f04ZJWHrbQzoMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36tokenreturnc                 (    d|  ddt         t        dS )NzBearer zapplication/json)AuthorizationzContent-TypeAcceptVersionz
User-Agent)GHL_API_VERSION
USER_AGENT)r   s    A/opt/mia/workspace/clientes/sweet_angels/sdr_fesqua/ghl_client.py_base_headersr      s"    "5'**$"      
contact_idmessageconversation_idc                    t          d}t        |      }d| |d}|r||d<   	 t        j                  |||d      }|j                  }|s0t
        j                  d| |j                  |j                  dd	        n!t
        j                  d
| |j                         ||j                  |j                  fS # t        j                  $ r.}	t
        j                  d|	       ddt        |	      fcY d}	~	S d}	~	ww xY w)zm
    Envia mensagem WhatsApp para o contato via API do GHL/Linkia.

    Retorna (ok, status_code, body).
    z/conversations/messagesWhatsApp)type	contactIdr   conversationId   jsonheaderstimeoutz,GHL send failed contact=%s status=%s body=%sN  z GHL send ok contact=%s status=%szGHL send exception: %sFr   )GHL_API_BASEr   requestspostoklogwarningstatus_codetextinfoRequestException	exceptionstr)
r   r   r   r   urlr   payloadrr!   es
             r   send_whatsapp_messager.   #   s     N1
2CE"GG
 $3 ! MM#GWbITTKK>AMM166$3<
 HH7Q]]S1==!&&(($$  .2aQ s   BB4 4C5#C0*C50C5opportunity_idstage_idstatuspipeline_idc           	      ,   | sy|syi }|r||d<   |xs t         |d<   |r||d<   |syt         d|  }t        |      }	 t        j                  |||d	      }|j
                  }	|	s1t        j                  d
| ||j                  |j                  dd        n"t        j                  d| ||j                         |	|j                  |j                  fS # t        j                  $ r/}
t        j                  d| |
       ddt        |
      fcY d}
~
S d}
~
ww xY w)a  
    Move card de oportunidade para uma etapa e/ou atualiza status via API v2 do GHL.

    - Se `stage_id` for informado, envia `pipelineStageId` no body (a API exige
      tambem `pipelineId`; usa `pipeline_id` recebido ou o DEFAULT_PIPELINE_ID).
    - Se `status` for informado (ex.: 'lost', 'won'), envia `status` no body.
    - Se ambos forem informados, envia num unico PUT.
    - Se nenhum for informado, nao chama a API e retorna (False, 0, 'noop').

    Retorna (ok, status_code, body).
    )Fr   missing_opportunity_id)Fr   missing_tokenpipelineStageId
pipelineIdr1   )Fr   noopz/opportunities/r   r   z?GHL move opportunity failed opp=%s payload=%s status=%s body=%sNr   z3GHL move opportunity ok opp=%s payload=%s status=%sz)GHL move opportunity exception opp=%s: %sFr   )DEFAULT_PIPELINE_IDr   r   r   putr!   r"   r#   r$   r%   r&   r'   r(   r)   )r/   r0   r   r1   r2   r+   r*   r   r,   r!   r-   s              r   move_opportunity_stager;   H   s   $ 1( G%-!" + B/B"N/.)9
:CE"G LL7GRHTTKKQt
 HHE 1==!&&(($$  A>STUaQ s   BC D$$DDD)N)NN)__doc__loggingr   	getLoggerr"   r   r   r9   r   r)   dictr   tupleboolintr.   r;    r   r   <module>rD      s   
  g%5 - 9  c3h  #'	" " "  "  4Z	" 
 4c>" R "4 4 Dj4  4  $J	4 
 t4  4c>4 r   