
    !h*                      
   d dl mZmZmZ d dlZd dlZd dlmZmZ d dl	m
Z
  ej                  ej                          ej                  e      Z ee      Zej#                  ddg      d	        Zej#                  d
dg      d        Zej#                  ddg      d        Zej#                  ddg      d        Zej#                  ddg      d        Zej#                  ddg      d        Zej1                  d      d        Zej1                  d      d        Zedk(  r] ed        ed        ed        ed        ed        ed        ed         ed!        ed"       ej9                  d#d$d%&       yy)'    )FlaskrequestjsonifyN)get_unprocessed_callssend_to_rabbitmq)send_to_sarvam)levelz/healthGET)methodsc                       t        dddd      S )zHealth check endpointhealthyzRabbitMQ Sarvam API is runningz1.0.0)statusmessageversionr        ?C:\Users\pc\OneDrive\Desktop\rabbitasrvam\rabbitmqsarvam\app.pyhealth_checkr      s     3  r   z/queue-callsPOSTc                  p   	 t        j                         } | st        dddd      dfS | j                  d      }|sd}t        j                  d       t        j                  d	|xs d
        t        |      }|st        dd|xs d
 |dd      S t        |       t        ddt        |       d|xs d
 |t        |      |D cg c]  }|d   |d   d c}d      S c c}w # t        $ rE}t        j                  dt        |              t        dt        |      dd      dfcY d}~S d}~ww xY w)z
    Queue unprocessed calls for a specific business ID
    
    Expected JSON payload:
    {
        "bid": "6840"  // Business ID (optional, defaults to 7417)
    }
    FNo JSON data provided$Please provide JSON with 'bid' fieldsuccesserrorr     bidN$No bid provided, using default table$Processing request for business ID: defaultT)No unprocessed calls found for business: r   r   r   business_idqueued_countSuccessfully queued  calls for business:    callidr   r   r   r$   r%   callszError in queue_calls: Failed to queue calls  )r   get_jsonr   getloggerinfor   r   len	Exceptionr   str)datar   r,   calles        r   queue_callsr9      sr   0! 0A  	  hhuoCKK>?:3;K):LMN &c*FsGWiFXY" !	   	-c%j\9NsO_V_N`aJFKLedaa9eL
  	
 M  -c!fX67V.
  	 	s;   &C' A)C' 4C' C"C' "C' '	D50:D0*D50D5z/process-callsc                     	 t        j                         } | st        dddd      dfS | j                  d      }|sd}t        j                  d       t        j                  d	|xs d
        t        |      }t        dd||d      S # t        $ rE}t        j                  dt        |              t        dt        |      dd      dfcY d}~S d}~ww xY w)z
    Directly process calls for a specific business ID (bypasses RabbitMQ)
    
    Expected JSON payload:
    {
        "bid": "6840"  // Business ID (optional, defaults to 7417)
    }
    Fr   r   r   r   r   Nr   +Direct processing request for business ID: r!   TCalls processed successfullyr   r   r$   resultzError in process_calls: Failed to process callsr.   )
r   r/   r   r0   r1   r2   r   r4   r   r5   )r6   r   r>   r8   s       r   process_callsr@   R   s    $! 0A  	  hhuoCKK>?A#BRASTU  $5	
  	  /Ax89V0
  	 	s#   &B
 A B
 
	C:CCCz/queue-calls/<bid>c                    	 t         j                  d|         t        |       }|st        dd|  | dd      S t	        |       t        ddt        |       d|  | t        |      |D cg c]  }|d   |d   d	 c}d
      S c c}w # t        $ rE}t         j                  dt        |              t        dt        |      dd      dfcY d}~S d}~ww xY w)zg
    Queue calls for a specific business ID via URL parameter
    
    URL: POST /queue-calls/6840
    r    Tr"   r   r#   r&   r'   r(   r)   r+   zError in queue_calls_by_bid: Fr-   r   r.   N)	r1   r2   r   r   r   r3   r4   r   r5   )r   r,   r7   r8   s       r   queue_calls_by_bidrB      s   :3%@A &c*FseL" !	   	-c%j\9NseTJFKLedaa9eL
  	
 M  4SVH=>V.
  	 	s4   7B
 0B
 *B<B
 B
 
	C:CCCz/process-calls/<bid>c                    	 t         j                  d|         t        |       }t        dd| |d      S # t        $ rE}t         j                  dt        |              t        dt        |      dd      d	fcY d
}~S d
}~ww xY w)zt
    Directly process calls for a specific business ID via URL parameter
    
    URL: POST /process-calls/6840
    r;   Tr<   r=   zError in process_calls_by_bid: Fr?   r   r.   N)r1   r2   r   r   r4   r   r5   )r   r>   r8   s      r   process_calls_by_bidrD      s    A#GH  $5	
  	  6s1vh?@V0
  	 	s   25 	B:A>8B>Bz/list-businessesc                     	 ddl m}   |        }|j                         }|j                  d       |j	                         }g }|D ]2  }|d   j                  dd      }|j                  || d| dd       4 |j                          |j                          t        d|t        |      d	      S # t        $ rE}t        j                  d
t        |              t        dt        |      dd      dfcY d}~S d}~ww xY w)z,
    List all available business tables
    r   )get_db_connectionzSHOW TABLES LIKE '%_calls'_calls _sarvamresponse)r   calls_tableresponse_tableT)r   
businessescountzError in list_businesses: FzFailed to list businessesr   r.   N)	db_configrF   cursorexecutefetchallreplaceappendcloser   r3   r4   r1   r   r5   )rF   connrO   tablesrL   tabler   r8   s           r   list_businessesrX      s   
"/ " 	34"
E(""8R0C"%f~%(E"9   	

$_
  	  1#a&:;V2
  	 	s   B.B1 1	C?::C:4C?:C?  c                 $    t        dddd      dfS )NFzEndpoint not foundz"Please check the API documentationr   rY   r   r   s    r   	not_foundr\      s'    %7  		 r   r.   c                 $    t        dddd      dfS )NFzInternal server errorzSomething went wrong on our endr   r.   r   r[   s    r   internal_errorr^      s'    (4  		 r   __main__u+   🚀 Starting RabbitMQ Sarvam API Server...u   📋 Available endpoints:z   GET  /health - Health checkz.   POST /queue-calls - Queue calls (JSON body)z4   POST /queue-calls/<bid> - Queue calls (URL param)z;   POST /process-calls - Process calls directly (JSON body)zA   POST /process-calls/<bid> - Process calls directly (URL param)z.   GET  /list-businesses - List all businessesu/   🌐 Server will start on http://localhost:5000Tz0.0.0.0i  )debughostport)flaskr   r   r   jsonloggingrabbitr   r   sarvam_processorr   basicConfigINFO	getLogger__name__r1   approuter   r9   r@   rB   rD   rX   errorhandlerr\   r^   printrunr   r   r   <module>rq      s   ) )   : +   ',, '			8	$Ho9ug& ' >F8,9 -9v fX.- /-^ &2% 3%N !F84 56 w/& 0&P #  #  z	
78	
%&	
*+	
:;	
@A	
GH	
MN	
:;	
;<GG$YTG2 r   