
    1h#                        d dl Z d dlmZmZmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZ  e       s ed
        ed       d dlmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD d dlEmFZFmGZGmHZH d dlImJZJ d dlKmLZL d dlmZmZmZ d dlMmNZNmOZOmPZPmQZQmRZRmSZS d dlTmUZU d dlVmWZW  e       ZXddgZYeXj                  eLj                         eXj                  e	eYddgdg       eXj                  e        e       Z\e\j                  e	ddgdg       eXj                  e       eXj                  d ed      d       eXj                  e5j                  dd g!       eXj                  e;j                  d"d#g!       eXj                  e9j                  d$d%g!       eXj                  e:j                  d&d'g!       eXj                  e>j                  d(d)g!       eXj                  eAj                  d*d)g!       eXj                  e?j                  d+d,g!       eXj                  e@j                  d-d.g!       eXj                  e=j                  d/d0g!       eXj                  e<j                  d1d2g!       eXj                  e6j                  d3d4g!       eXj                  e6j                  d5d6g!       eXj                  eBj                  d7d8g!       eXj                  e7j                  d9d:g!       eXj                  e8j                  d;d<g!       eXj                  eFj                  d=d>g!       eXj                  eCj                  d?d@g!       eXj                  eDj                  dAdBg!       eXj                  eJj                  dCdDg!       eXj                  eHj                  dEdFg!       eXj                  ej                  dGdHg!       eXj                  ej                  dIdJg!       eXj                  ej                  dKdLg!       eXj                  ej                  dMdNg!       eXj                  ej                  dOdPg!       eXj                  e j                  dQdRg!       eXj                  e!j                  dSdTg!       eXj                  e"j                  dUdVg!       eXj                  ej                  dWdXg!       eXj                  e#j                  dYdZg!       eXj                  e$j                  d[d\g!       eXj                  e%j                  d]d^g!       eXj                  ej                  d_d`g!       eXj                  e'j                  dadbg!       eXj                  e+j                  dcddg!       eXj                  e&j                  dedfg!       eXj                  e(j                  dgdhg!       eXj                  e)j                  didjg!       eXj                  e*j                  dkdlg!       eXj                  e0j                  dmdng!       eXj                  e1j                  dodpg!       eXj                  e2j                  dqdrg!       eXj                  e3j                  dsdtg!       eXj                  e,j                  dudvg!       eXj                  e-j                  dwdxg!       eXj                  e.j                  dydzg!       eXj                  e/j                  d{d|g!       eXj                  d}      d~efd       ZbeXj                  d      d~efd       ZceXj                  d      d~efd       ZdeXj                  d      d~efd       ZeeXj                  d      d        ZgeXj                  d      d        ZhdgZieXj                  d      defd       Zky)    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   K   t        |        d {    y 7 wN)r@   rp   s    2C:\Suresh\moveshuttle\MDcreated\moveengine\main.pytracking_data_socketru      s     
!)
,,,   z/ws/realtimec                 6   K   t        |        d {    y 7 wrr   )rA   rs   s    rt   realtime_updates_socketrx           
$Y
///rv   z/ws/historical_routec                 6   K   t        |        d {    y 7 wrr   )rD   rs   s    rt   historical_route_socketr{      ry   rv   z/ws/workforceschedule-updatesc                 6   K   t        |        d {    y 7 wrr   )rE   rs   s    rt   realtime_updatesr}      s     
'	
222rv   startupc                     K   	 t                d {    t        j                  t                      y 7 "# t        $ r} t        d|        Y d } ~ y d } ~ ww xY ww)Nz-Kafka not available, skipping producer start:)rB   asynciocreate_taskrF   rG   print)es    rt   startup_eventr      sN     B"$$$134 	% B=qAABs6   A6 4!6 A6 	AAAAAshutdownc                  4   K   t                d {    y 7 wrr   )rC        rt   shutdown_eventr      s     

s   z	127.0.0.1httprequestc                   K   | j                   j                  }| j                  j                  j	                  d      s%| j                  j                  j	                  d      r|t
        vrt        dd       ||        d {   }|S 7 w)Nz/docsz/redoci  	Forbidden)status_codedetail)clienthosturlpath
startswithallowed_ipsr   )r   	call_next	client_ipresponses       rt   restrict_accessr      sp     ##I{{""7+w{{/?/?/J/J8/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   