
    1h#                        S SK r S SKJrJrJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  \" 5       (       d  \" S
5        \" S5        S SKJrJrJrJrJrJrJrJrJrJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'J(r(J)r)J*r*J+r+J,r,J-r-J.r.J/r/J0r0J1r1J2r2J3r3  S SK4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<J=r=J>r>J?r?J@r@JArAJBrBJCrCJDrD  S SKEJFrFJGrGJHrH  S SKIJJrJ  S SKKJLrL  S SKJrJrJr  S SKMJNrNJOrOJPrPJQrQJRrRJSrS  S SKTJUrU  S SKVJWrW  \" 5       rXSS/rY\XR                  \LR                  5        \XR                  \	\YSS/S/S9  \XR                  \5        \" 5       r\\\R                  \	SS/S/S9  \XR                  \5        \XR                  S\" SS9SS9  \XR                  \5R                  SS /S!9  \XR                  \;R                  S"S#/S!9  \XR                  \9R                  S$S%/S!9  \XR                  \:R                  S&S'/S!9  \XR                  \>R                  S(S)/S!9  \XR                  \AR                  S*S)/S!9  \XR                  \?R                  S+S,/S!9  \XR                  \@R                  S-S./S!9  \XR                  \=R                  S/S0/S!9  \XR                  \<R                  S1S2/S!9  \XR                  \6R                  S3S4/S!9  \XR                  \6R                  S5S6/S!9  \XR                  \BR                  S7S8/S!9  \XR                  \7R                  S9S:/S!9  \XR                  \8R                  S;S</S!9  \XR                  \FR                  S=S>/S!9  \XR                  \CR                  S?S@/S!9  \XR                  \DR                  SASB/S!9  \XR                  \JR                  SCSD/S!9  \XR                  \HR                  SESF/S!9  \XR                  \R                  SGSH/S!9  \XR                  \R                  SISJ/S!9  \XR                  \R                  SKSL/S!9  \XR                  \R                  SMSN/S!9  \XR                  \R                  SOSP/S!9  \XR                  \ R                  SQSR/S!9  \XR                  \!R                  SSST/S!9  \XR                  \"R                  SUSV/S!9  \XR                  \R                  SWSX/S!9  \XR                  \#R                  SYSZ/S!9  \XR                  \$R                  S[S\/S!9  \XR                  \%R                  S]S^/S!9  \XR                  \R                  S_S`/S!9  \XR                  \'R                  SaSb/S!9  \XR                  \+R                  ScSd/S!9  \XR                  \&R                  SeSf/S!9  \XR                  \(R                  SgSh/S!9  \XR                  \)R                  SiSj/S!9  \XR                  \*R                  SkSl/S!9  \XR                  \0R                  SmSn/S!9  \XR                  \1R                  SoSp/S!9  \XR                  \2R                  SqSr/S!9  \XR                  \3R                  SsSt/S!9  \XR                  \,R                  SuSv/S!9  \XR                  \-R                  SwSx/S!9  \XR                  \.R                  SySz/S!9  \XR                  \/R                  S{S|/S!9  \XR                  S}5      S~\4S j5       rb\XR                  S5      S~\4S j5       rc\XR                  S5      S~\4S j5       rd\XR                  S5      S~\4S j5       re\XR                  S5      S 5       rg\XR                  S5      S 5       rhS/ri\XR                  S5      S\4S j5       rkg)    N)FastAPIRequestHTTPException	WebSocket)RedirectResponse)CORSMiddleware)load_dotenv)InputSanitizationMiddleware)StaticFiles)BaseHTTPMiddleware)r   zSCould not load .env file or it is empty. Please check if it exists and is readable.   )booking	customersmarketplaceservices	workforceworkforcecategorypricingrulesvehiclesfleetsvendorsworkforcevehicleworkforcetimesheetcustomer_accountstasks	schedulespaymentavailabilityapplinksui
monitoringcommunication
iotdevices	geofencesgeofencerulesgeofence_rule_mappingintegrationslanguage_regionalaccount_settingssubscription)accountssubscriptionssupportsupportcustomerusersroleslogin	dashboardauditrbacappflowpartnerscommoninvoicesactivitycommunication_email)crmcommticket)crud)auth)r   r   r   )websocket_tracking_datawebsocket_realtime_updatesstart_kafka_producerstop_kafka_producerwebsocket_historical_routewebsocket_workforce_schedules)consume_tracking_data)KafkaConnectionErrorzhttp://localhost:3000zhttps://www.movex.aiT*)allow_originsallow_credentialsallow_methodsallow_headers)rJ   rK   rL   z/publicpublic)	directory)namez/v1/accountsAccounts)prefixtagsz/v1/authLoginz	/v1/usersUsersz	/v1/rolesRolesz/v1/rbacRBACz
/v1/commonz/v1/appflowAppsz/v1/partnersPartnersz	/v1/auditAuditz/v1/dashboard	Dashboardz/v1/saaszsubscription-typesz/v1/subscriptionsSubscriptionsz/v1/invoiceszSaaS Invoicesz/v1/supportSupportz/v1/supportcustomerzCustomer Supportz
/v1/cx/crmCRMz/v1/activityActivityz
/v1/emailszCommunication Emailz/v1/crudr>   z
/v1/ticketTicketz/v1/servicesServicesz/v1/workforce	Workforcez/v1/workforcecategoryzWorkforce Categoryz/v1/vehicle-modelsVehiclesz
/v1/fleetsFleetsz/v1/vendorsVendorsz/v1/workforcevehiclezWorkforce Vehiclez/v1/workforcetimesheetzWorkforce Timesheetz/v1/customers	Customersz/v1/customer_accountszCustomer Accountsz	/v1/tasksTasksz/v1/schedules	Schedulesz/v1/pricingruleszPricing Rulesz/v1/availabilityAvailabilityz/v1/communicationCommunicationz/v1/paymentPaymentz/v1/applinksz	App Linksz/v1/uiUIz/v1/monitoring
Monitoringz/v1/integrationsIntegrationsz/v1/language_regionalzLanguage & Regionalz/v1/account_settingszAccount Settingsz/v1/subscriptionSubscriptionz/v1/iotdeviceszIoT Devicesz/v1/geofences	Geofencesz/v1/geofenceruleszGeofence Rulesz/v1/geofence_rule_mappingzGeofence Rule Mappingz/ws/tracking_data	websocketc                 6   #    [        U 5      I S h  vN   g  N7fN)r@   rp   s    2C:\Suresh\moveshuttle\MDcreated\moveengine\main.pytracking_data_socketru      s     
!)
,,,   z/ws/realtimec                 6   #    [        U 5      I S h  vN   g  N7frr   )rA   rs   s    rt   realtime_updates_socketrx           
$Y
///rv   z/ws/historical_routec                 6   #    [        U 5      I S h  vN   g  N7frr   )rD   rs   s    rt   historical_route_socketr{      ry   rv   z/ws/workforceschedule-updatesc                 6   #    [        U 5      I S h  vN   g  N7frr   )rE   rs   s    rt   realtime_updatesr}      s     
'	
222rv   startupc                     #     [        5       I S h  vN   [        R                  " [        5       5        g  N#! [         a  n [        SU 5         S n A g S n A ff = f7f)Nz-Kafka not available, skipping producer start:)rB   asynciocreate_taskrF   rG   print)es    rt   startup_eventr      sM     B"$$$134 	% B=qAABs7   A7 5"7 A7 
AAAAAshutdownc                  4   #    [        5       I S h  vN   g  N7frr   )rC        rt   shutdown_eventr      s     

s   z	127.0.0.1httprequestc                 .  #    U R                   R                  nU R                  R                  R	                  S5      (       d*  U R                  R                  R	                  S5      (       a  U[
        ;  a
  [        SSS9eU" U 5      I S h  vN nU$  N7f)Nz/docsz/redoci  	Forbidden)status_codedetail)clienthosturlpath
startswithallowed_ipsr   )r   	call_next	client_ipresponses       rt   restrict_accessr      su     ##I{{""7++w{{/?/?/J/J8/T/TK'CDDw''HO (s   B
BBB)lr   fastapir   r   r   r   fastapi.responsesr   fastapi.middleware.corsr   dotenvr	   app.middlewarer
   fastapi.staticfilesr   starlette.middleware.baser   starlette.exceptionsStarletteHTTPExceptionr   exitapp.v1.routers.platformr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   app.v1.routers.saasr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   app.v1.routers.cxr;   r<   r=   app.v1.routersr>   app.v1.dependenciesr?   app.v1.sockets.tracking_datar@   rA   rB   rC   rD   rE   app.v1.consumers.kafka_consumerrF   aiokafka.errorsrG   apporiginsadd_middlewareAuthMiddlewareopen_cors_routerexception_handlermountinclude_routerrouterrp   ru   rx   r{   r}   on_eventr   r   r   
middlewarer   r   r   rt   <module>r      s    > > . 2  6 + 8 H }}	
_`G            0 /  
  B 0i 
   4&& '   %%     . / 9    %%	      , - 		)[848	 D   8??>  M   5<<
'  C   5<<7)  D   5<<7)  D   4;;z  A   6==VH  E   7>>-vh  G   8??>  M   5<<7)  D   9##O;-  P   =''
BVAW  X   =''0C?J[  \   8??>@Q  R   7>>-yk  J   ?))2GOaNb  c   3::l%  A   8??>  M   &--lJ_I`  a   4;;z  A   6==XJ  G   8??>  M   9##O;-  P   $++4KSgRh  i   8??+?zl  S   6==XJ  G   7>>-yk  J   #**3IQdPe  f   %,,5MUjTk  l   9##O;-  P   $++4KSfRg  h   5<<7)  D   9##O;-  P   <&&/AHY  Z   <&&/AHX  Y   =''0C?J[  \   7>>-yk  J   8??>  N   299XTF  ;   :$$-=\N  S   <&&/AHX  Y   $++4KShRi  j   #**3IQcPd  e   <&&/AHX  Y   :$$-=]O  T   9##O;-  P   =''0CK[J\  ]   (//8S[rZs  t "#-) - $- ~0Y 0 0 %&0Y 0 '0 ./3i 3 03 iB B j    m 7  r   