
    !+i                     p    d dl Z d dlZd dlmZ  e j                  e      Zd dlmZ d dl	m
Z
  G d d      Zy)    N)settings)SessionLocal)SystemConfigc                   <    e Zd Zd Zd ZdefdZdefdZdefdZy)	TinyApiServicec                 2    d| _         | j                          y )Nzhttps://api.tiny.com.br/api2)base_url_load_token)selfs    C/var/www/hypershopcomercio.com.br/hyper-ai/app/services/tiny_api.py__init__zTinyApiService.__init__   s    6    c                    t         j                  | _        	 t               }|j	                  t
              j                  t
        j                  dk(        j                         }|r|j                  r|j                  | _        |j                          y # t        $ r"}t        j                  d|        Y d }~y d }~ww xY w)Ntiny_api_tokenz#Failed to load Tiny token from DB: )r   TINY_API_TOKENtokenr   queryr   filterkeyfirstvalueclose	Exceptionloggerwarning)r   dbdb_tokenes       r   r
   zTinyApiService._load_token   s    ,,
	FBxx-44\5E5EIY5YZ``bHHNN%^^
HHJ 	FNN@DEE	Fs   A<B 	B?B::B?skuc                 *   | j                   sy | j                   d}| j                   |dd}	 t        j                  ||      }|j	                          |j                         }|j                  di       j                  d      dk(  r.t        j                  d| d	|d   j                  d
              y |j                  di       j                  dg       }|r|d   d   S y # t        $ r%}t        j                  d| d|        Y d }~y d }~ww xY w)Nz/produtos.pesquisa.phpjson)r   pesquisaformatodataretornostatusErrozTiny API Error for SKU : errosprodutosr   produtozError searching product z
 in Tiny: r   r	   requestspostraise_for_statusr!   getr   r   r   error)r   r   urlparamsresponser%   r+   r   s           r   search_productzTinyApiService.search_product   s
   zz56ZZ

	}}Sv6H
 %%'==?Dxx	2&**84>!8RY@S@ST[@\?]^_xx	2.22:rBH{9-- 	LL3C5
1#FG	s   BC$ 7+C$ $	D-DDtiny_idc                    | j                   sy | j                   d}| j                   |dd}	 t        j                  ||      }|j	                          |j                         }|j                  di       j                  d      dk(  r.t        j                  d| d	|d   j                  d
              y |j                  di       j                  d      S # t        $ r%}t        j                  d| d	|        Y d }~y d }~ww xY w)Nz/produto.obter.phpr!   r   idr#   r$   r&   r'   r(   zTiny API Error for ID r)   r*   r,   zError getting details for ID r-   )r   r7   r3   r4   r5   r%   r   s          r   get_product_detailsz"TinyApiService.get_product_details;   s    zz12ZZ

	}}Sv6H%%'==?Dxx	2&**84>"8	DODWDWX_D`Ca bc88Ir*..y99 	LL8	A3GH	   BC 7 C 	D!DDc                    | j                   sy| j                   d}| j                   |dd}	 t        j                  ||      }|j	                          |j                         }|j                  di       j                  d      dk(  r.t        j                  d	| d
|d   j                  d              y|j                  di       j                  d      S # t        $ r%}t        j                  d| d
|        Y d}~yd}~ww xY w)z^
        Fetch stock for a specific SKU.
        Endpoint: /produto.obter.estoque.php
        Nz/produto.obter.estoque.phpr!   r9   r$   r&   r'   r(   zTiny Stock Error for r)   r*   r,   zError fetching stock for r-   )r   r   r3   r4   r5   r%   r   s          r   	get_stockzTinyApiService.get_stockS   s    
 zz9:ZZ
	 c7X&&(MMOTB'++H5?..#8RY@S@ST[@\?]!^_HHY+//	:: 	\\5cU"QC@A	r<   N)	__name__
__module____qualname__r   r
   strr6   r;   r>    r   r   r   r   
   s2    
F# @3 0#S #r   r   )loggingr.   app.core.configr   	getLoggerr?   r   app.core.databaser   app.models.system_configr   r   rC   r   r   <module>rI      s2      $			8	$ * 1l lr   