
    7?hH                     V    S SK J r Jr  S SKJrJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S rg)    )datetime	timedelta)	json_utilObjectIdN)AIOKafkaConsumer)database)connected_clientsc                    #    [        SSSS9n U R                  5       I S h  vN   [        R                  " 5       n[	        U5      nUS   nUS   nUS   nUS   nUS	   n U   S h  vN n[
        R                  " UR                  R                  S
5      5      n	[        R                  " 5       U	S'   SU	S'   U	R                  S5      n
U	R                  S0 5      R                  S/ 5      nUR                  U	5        / nUR                  SU
0S/S9nU(       a  [        S5        [        U5        US   n[        R                  " 5       nX-
  nU[        SS9:  aj  U
SSU
 S3US.nUR                  U5        UR!                  U5        U
SSU
 SUR"                  S-   S3US.nUR                  U5        UR!                  U5        [%        UR'                  SU
05      5      nU GH  nUR                  S5      nUR                  S 5      nUR                  S![)        U5      05      nU(       a  U(       d  MR  S"S#KJnJn  U" U5      nU" US$   S   S"   5      nUR1                  U5      nUR                  S%5      S&:X  d  M  U(       a  M  U(       a  UR                  S![)        U5      05      OS nS'nU(       a  UR                  S(5      (       a  US(    H  nUR                  S)5      n UR                  S*5      n!UR                  S+5      n"U![2        ;  a  S,n  OMU	R                  U 5      n# [5        U"5      n$U#b  [5        U#5      OS n%U%b  [2        U!   " U%U$5      (       d  S,n  OM     U(       d  GM  U(       a  UR                  S-5      OSU
 S.3n'U
S/US0   U'U	S   S1.nUR                  U5        UR!                  U5        GM     [8        R:                  " 5        GHN  n([        S2[=        [8        5       S335         U(R?                  [
        R@                  " U	[B        RD                  S495      I S h  vN   U(R?                  [
        R@                  " S5S6S7S8S9S:S;.[B        RD                  S495      I S h  vN   [        S<[=        [8        5       S335        U H  nU(R?                  [
        R@                  " S5UR                  S=S>5      UR                  S5      UR                  S?5      UR                  S@5      UR                  S:5      S;.[B        RD                  S495      I S h  vN   M     GMQ     GM   GN GN! [6         a  n&S,n S n&A&  GM  S n&A&ff = f GN" N N7! [6         a.  n&[8        RF                  " U(5        [        SAU&5         S n&A&GM  S n&A&ff = f
 U RI                  5       I S h  vN     [	        U5        g ! [J         a     g f = f! U RI                  5       I S h  vN     [	        U5        f ! [J         a     f f = f= f7f)BNvehicle_trackingzlocalhost:9092ztracking-group)bootstrap_serversgroup_idtracking_logs
alert_logs	geofencesgeofence_rulesgeofence_rule_mappingzutf-8received_atW
alert_type	device_idlocationcoordinates)r   )sortu   🟡 Last entry found:   )minutes
inactivityzDevice z inactive for over 30 minutes.)r   typemessagetriggered_atrecoveryz is back online after <   z minutes of inactivity.assigned_entity_idgeofence_idgeofence_rule_id_idr   )PointPolygonloctrigger_eventsexitT
conditions	parameteroperatorvalueFalert_messagez exited geofence.zgeofence-exitname)r   r   geofencer   r    u   ✅ Broadcasting to z connected client(s))defaultalertzDevice dev123 exited geofence.dev123EzTidel park coimbatorer    )r   r   r   r   r2   r    u   ✅ SEND MESSAGE TO to r    r   r2   u   ❌ WebSocket error:)&r   startr   get_mongo_dbnextjsonloadsr/   decoder   utcnowget
insert_onefind_oneprintr   appendsecondslistfindr   shapely.geometryr'   r(   contains	OPERATORSfloat	Exceptionr	   copylen	send_textdumpsr   r3   removestopStopIteration))consumer	mongo_genmongor   r   r   r   geofence_mappingsmsgdatar   r   alerts
last_entry	last_timecurrent_timegapr4   online_alertmappingsmappinggeo_idrule_idr2   r'   r(   pointpolygoninsideruleconditions_passedcondparamopexpectedactualexpected_val
actual_vale	alert_msgwss)                                            MC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\consumers\kafka_consumer.pyconsume_tracking_datars      s    *!H
 ..
%%'IOE/*M|$Jk"I+,N56K! C	5#::cii..w78D"*//"3D!$D-I((:r266}bIK $$T*F '//i()* 0 J
 ./j!&}5	'0". 2.. &/ ,%,YK7U#V(4	E ))%0MM%( &/ *%,YK7Mckk]_N_M``w#x(4	$L )),7MM,/ -224H)3TUVH# ]3!++&89$--uhv6F.GH{;k*!(5/-"@"CD ))%0;;/0F:66RY>22E8G;L3MN_cD(,% 6 6$($6D$(HH[$9E!%*!5B'+xx'8H!249 1 %%)XXe_F	&/4X>D>PU6]VZ
#-#5Yr]:Wc=d=d8=$5$) >e %7* )(AEDHH_$=WU^T__pKq	)2$3(0(8'0,0,?! #--e4e,c $j (,,.,S1B-C,DDXYZ5,,tzz$	@Q@Q'RSSS,,tzz$+'G)1*-(?,:3 $-#4#4(6 7 7 7 3C8I4J3KK_`a!' ll4::$+',yyB'?).;)?*/))F*;(-		*(=,1IIn,E7 $-#4#4,6 7 7 7 "( /i C	5l $- &49 1 %&* T77 ! 5%,,R00!445C "L mmo	O 		 mmo	O 		sL  W;T&=W; W "V
&T)'V
*HW ;W BW #5T,W (BW 15U&U'A U'U(B-UU
UW &W;)V
,
U	6U 	8W  U	W UUU
V"V;W VW W;V!W;%V1 0W;1
V>;W;=V>>W;W8WW8W('W8(
W52W84W55W88W;)r   r   bsonr   r   r;   aiokafkar   app.dbr   app.utils.connectionsr	   rs        rr   <module>rz      s    ( $  %  3\ry   