
    q,h1              *          S SK r S SKJrJrJrJrJrJrJr  S SK	J
r
  S SKJrJrJrJr  S SKJrJr  S SKJr  S SKrS SKJr  S SKJr  S S	KJr  S S
KJrJrJrJrJ r J!r!  S SK"J#r#J$r$J%r%J&r&J'r'J(r(  \" 5       r)\)RU                  S\S9\" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" \RV                  5      \" \5      4S\,S\\,   S\,S\\,   S\\,   S\\,   S\\,   S\\,   S\\-   S\S\\,   S\\   S\\,   S\\,   S\\,   S\\,   S\\,   S \,S!\R\                  S"\/4(S# jj5       r0\)Rc                  S$\S9S S%SSSSSS&\" \RV                  5      \" \5      4
S'\,S(\-S)\-S*\\,   S\\,   S+\\,   S,\\,   S-\\,   S.\\,   S!\R\                  S"\/4S/ jj5       r2\)Rc                  S0\S9\" \RV                  5      \" \5      4S1\,S!\R\                  S"\/4S2 jj5       r3\)Ri                  S0\S9\" \RV                  5      \" \5      4S1\,S3\ S!\R\                  S"\/4S4 jj5       r5\)Rm                  S0\S9\" \RV                  5      \" \5      4S1\,S!\R\                  S"\/4S5 jj5       r7\)RU                  S6\S9\" \RV                  5      \" \5      4S1\,S7\!S!\R\                  S"\/4S8 jj5       r8\)Rc                  S6\\\,\4      S9\" \RV                  5      \" \5      4S1\,S!\R\                  S"\/4S9 jj5       r9\)Rc                  S:\\,\4   S9\" \RV                  5      \" \5      4S1\,S\,S!\R\                  S"\/4S; jj5       r:\)Ri                  S:\S9\" \RV                  5      \" \5      4S1\,S\,S<\\,\4   S!\R\                  S"\/4
S= jj5       r;\)Rm                  S:\S9\" \RV                  5      \" \5      4S1\,S\,S!\R\                  S"\/4S> jj5       r<\)Rc                  S?\\\,\,4      S9\" \RV                  5      \" \5      \" S@SASB94S!\R\                  S"\/S*\,4SC jj5       r=g)D    N)	APIRouterDependsHTTPExceptionQueryFormFile
UploadFile)JSONResponse)OptionalListDictAny)datetimedate)ObjectId)Path)database)get_current_userdetails)Fleet	FleetBaseFleetCreateFleetResponseListFleetUpdateVehicleBase)create_fleet_serviceget_fleets_serviceread_fleet_serviceupdate_fleet_servicedelete_fleet_serviceget_fleet_vehicles_service/)response_model.
fleet_namedescriptionstatus
vehicle_idregistration_number
vin_numbervehicle_model_idcoloryearvehicle_imageinsurance_numberinsurance_expiry	vendor_id	dealer_id	fuel_typevehicle_typecapacityvendor_namedbcurrent_userc                 L  #    [        S5      nUR                  SSS9  S nU	(       a  U	R                  (       a  [        [        R
                  " 5       R                  5       5      nU	R                  R                  S5      S   nSU SU 3nUU-  n[        US5       nUR                  U	R                  5       I S h  vN 5        S S S 5        U(       a  SU 3OS n0 S	U _S
U_SU_SU_SU_SU_SU_SU_SU_SU_SU
_SU(       a  UR                  5       OS _SU_SU_SU_SU_SU_UUR                  SS5      UR                  SS5      S.En[        UU5      nUS   R                  S5      (       a  SUS   S    3US   S'   [        S US   S!.S"S#9$  N! , (       d  f       N= f7f)$Nzpublic/fleetsT)parentsexist_ok.zfleet-wbzpublic/fleets/r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   
account_id user_id)r4   r=   r?   
fleet_datazhttp://localhost:8000/zFleet created successfully)messagefleet   )contentstatus_code)r   mkdirfilenameintr   now	timestampsplitopenwriteread	isoformatgetr   r
   )r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   FLEET_IMG_PATHimage_filenamerJ   extfilepathfvehicle_image_pathr@   results                                LC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\routers\platform\fleets.pycreate_fleet_endpointrY   /   sD    . /*N5N//0023	$$**3/3!)AcU3!N2(D!QGG-,,../ " ?M>.)9:RVj{ 	& 	j	
 	2 	j 	, 	 	 	+ 	, 	<L,668RV 	Y 	Y 	Y  	!" 	H#$ #"&&|R8##Ir2)J. "*b1F l002HP\I]^mInHo0p|_-86,CWX E / "!s1   BF$F:F
;FCF$F
F!F$z/list/{account_id}/
   ascr=   skiplimitqcreated_date_fromcreated_date_tosort_by
sort_orderc                 r   #    U S:w  a  X
R                  SS5      :w  a
  [        SSS9e[        XX#XEXgX5
      $ 7f)Nallr=   r>     Not authorizedrE   detail)rP   r   r   )r=   r\   r]   r^   r%   r_   r`   ra   rb   r5   r6   s              rX   
get_fleetsri   w   sD      Uz-=-=lB-OO4DEEj&Udoy~~s   57z/{fleet_id}fleet_idc                    #    [        S5        [        X5      nUR                  S5      (       a#  US   UR                  SS5      :w  a
  [        SSS9eU$ 7f)N146146146146146146146r=   r>   re   rf   rg   )printr   rP   r   rj   r5   r6   rB   s       rX   
read_fleetro      sV      

!"x,Eyy5#6,:J:J<Y[:\#\4DEELs   AAr@   c                    #    [        X5      nUR                  S5      (       a#  US   UR                  SS5      :w  a
  [        SSS9e[        XR	                  SS9U5      $ 7f)Nr=   r>   re   rf   rg   T)exclude_unset)r   rP   r   r   
model_dump)rj   r@   r5   r6   existing_fleets        rX   update_fleetrt      sg      (5N,''N<,HLL\L\]ikmLn,n4DEE*?*?d*?*SUWXXs   AA c                    #    [        X5      nUR                  S5      (       a#  US   UR                  SS5      :w  a
  [        SSS9e[        X5      $ 7fNr=   r>   re   rf   rg   )r   rP   r   r   )rj   r5   r6   rs   s       rX   delete_fleetrw      sV      (5N,''N<,HLL\L\]ikmLn,n4DEE--s   AAz/{fleet_id}/vehiclesvehiclec                   ^#    [        X5      nUR                  S5      UR                  SS5      :w  a
  [        SSS9eUR                  R	                  S[        TR                  5      05      (       d
  [        SSS9e[        U4S	 jUR                  S
/ 5       5       5      (       a
  [        SSS9eTR                  5       nUR                  R                  S[        U 5      0S
U0S[        R                  " 5       0S.5      nUR                  S:X  a
  [        SSS9eUR                  R                  S[        TR                  5      0SSU 005        [        X5      $ 7f)Nr=   r>   re   rf   rg   _id  zVehicle model not foundc              3   F   >#    U  H  oS    TR                   :H  v   M     g7fr&   N)r&   ).0vrx   s     rX   	<genexpr>'add_vehicle_to_fleet.<locals>.<genexpr>   s      
T:SQ\?g000:Ss   !vehicles  z'Vehicle ID already exists in this fleetupdated_date)z$push$setr   zFailed to add vehiclez	$addToSet	fleet_ids)r   rP   r   r   find_oner   r)   anyrr   fleets
update_oner   utcnowmodified_count)rj   rx   r5   r6   rB   vehicle_datarW   s    `     rX   add_vehicle_to_fleetr      sD     x,Eyy,"2"2<"DD4DEE;;1I1I(J KLL4MNN

T%))JPR:S
TTT4]^^%%'LYY!!	"# ,/#X__%67	
F !4KLLKK	1123	{H-.
 h++s   EEc                    #    [        X5      nUR                  S5      UR                  SS5      :w  a
  [        SSS9e[        X5      $ 7frv   )r   rP   r   r    rn   s       rX   get_fleet_vehiclesr      sH      x,Eyy,"2"2<"DD4DEE%h33s   AAz!/{fleet_id}/vehicles/{vehicle_id}c                   ^#    [        X5      nUR                  S5      UR                  SS5      :w  a
  [        SSS9e[        U4S jUR                  S/ 5       5       S 5      nU(       d
  [        SS	S9eUR                  R                  S
[        US   5      05      nU(       a[  UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      S.US'   U$ 7f)Nr=   r>   re   rf   rg   c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7fr}    r~   r   r&   s     rX   r   $get_fleet_vehicle.<locals>.<genexpr>        Z8!lOz<YAA8   	r   r{   Vehicle not found in fleetrz   r)   manufacturer_namer2   r1   is_autonomousFcan_fly)r   r2   r1   r   r   model_details)r   rP   r   nextr   r   r   )rj   r&   r5   r6   rB   rx   models    `     rX   get_fleet_vehicler      s      x,Eyy,"2"2<"DD4DEEZuyyR8Z\`aG4PQQKK  %':L2M)N!OPE!&+>!C!IInb9;3"YY>yyE2$
  Ns   C?Dr   c                   ^#    [        X5      nUR                  S5      UR                  SS5      :w  a
  [        SSS9e[        U4S j[	        US   5       5       S 5      nUc
  [        SS	S9eUS   n0 Xv   EUES
T0EXv'   UR
                  R                  S[        U 5      0SU[        R                  " 5       S.05      nUR                  S:X  a
  [        SSS9e[        X5      $ 7f)Nr=   r>   re   rf   rg   c              3   B   >#    U  H  u  pUS    T:X  d  M  Uv   M     g7fr}   r   )r~   ir   r&   s      rX   r   'update_fleet_vehicle.<locals>.<genexpr>
  s#     f(D,[eHe!!(Ds   	r   r{   r   r&   rz   r   )r   r   r   r   zFailed to update vehicle)r   rP   r   r   	enumerater   r   r   r   r   r   )	rj   r&   r   r5   r6   rB   vehicle_indexupdated_vehiclesrW   s	    `       rX   update_fleet_vehicler      s
     x,Eyy,"2"2<"DD4DEEf	%
2C(DfhlmM4PQQZ('

)'
' 	j'# YY!!	"#, ( 1	
F !4NOOh++s   C!C$c                   ^#    [        X5      nUR                  S5      UR                  SS5      :w  a
  [        SSS9e[        U4S jUR                  S/ 5       5       S 5      nU(       d
  [        SS	S9eUR                  R                  S
[        U 5      0SST00S[        R                  " 5       0S.5      nUR                  S:X  a
  [        SSS9eUR                  R                  S
[        US   5      0SSU 005        [        X5      $ 7f)Nr=   r>   re   rf   rg   c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7fr}   r   r   s     rX   r   ,remove_vehicle_from_fleet.<locals>.<genexpr>/  r   r   r   r{   r   rz   r&   r   )$pullr   r   r   zFailed to remove vehicler)   r   r   )r   rP   r   r   r   r   r   r   r   r   r   )rj   r&   r5   r6   rB   rx   rW   s    `     rX   remove_vehicle_from_fleetr   $  s     x,Eyy,"2"2<"DD4DEEZuyyR8Z\`aG4PQQYY!!	"# <"<=#X__%67	
F !4NOOKK	!3456	;)*
 h++s   DDz/dropdown/vehiclesr>   zSearch query for fleet name)defaultr$   c                 ,   #    US   n[        XU5      $ 7f)Nr=   )get_fleet_dropdown_list)r5   r6   r^   r=   s       rX   get_vehicle_dropdown_listr   E  s      l+J"2155s   )>osfastapir   r   r   r   r   r   r	   fastapi.responsesr
   typingr   r   r   r   r   r   bsonr   repathlibr   app.dbr   app.v1.dependencies.authr   app.v1.models.platform.fleetsr   r   r   r   r   r   app.v1.services.platform.fleetsr   r   r   r   r   r    routerpostget_mongo_dbstrrH   MongoDBdictrY   rP   ri   ro   putrt   deleterw   r   r   r   r   r   r   r       rX   <module>r      s   	 Q Q Q * , , "  	   <   
$ S'3i!%ds) $T
)-d $T
&*4j:t* $T
&*4j'+Dz#Dz#Dz#Dz"&t*"4jCy"8#8#89 !89)EE#E E 	E
 "#E E smE C=E 3-E E smE tnE }E }E }E  3-!E" sm#E$ %E& 	'E( )E (EN !2CD  '+%)! %"8#8#89 !89
  }	
 SM  } c] c]  	  E$ M%0 #8#8#89 !89  1 M%0 #8#8#89 !89	YYY 	Y 	Y 1Y }U3 #8#8#89 !89
.
.
. 
. 4
. #E: #8#8#89 !89	!,!,!, 	!, 	!, ;!,F "4S#X3GH #8#8#89 !89	4	4	4 	4 I	4 /S#XO #8#8#89 !89	 	 	 P4 /F
 #8#8#89 !89#,#,#, sCx.#, 		#,
 #, G#,J 25I #8#8#89 !89	,,, 	, 	, J,@  d38n1EF"8#8#89 !892+HI666 6 G6r   