
    h|2              ,          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      \" 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!\\,   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S0 jj5       r2\)Rc                  S1\S9\" \RV                  5      \" \5      4S2\,S"\R\                  S#\/4S3 jj5       r3\)Ri                  S1\S9\" \RV                  5      \" \5      4S2\,S4\ S"\R\                  S#\/4S5 jj5       r5\)Rm                  S1\S9\" \RV                  5      \" \5      4S2\,S"\R\                  S#\/4S6 jj5       r7\)RU                  S7\S9\" \RV                  5      \" \5      4S2\,S8\!S"\R\                  S#\/4S9 jj5       r8\)Rc                  S7\\\,\4      S9\" \RV                  5      \" \5      4S2\,S"\R\                  S#\/4S: jj5       r9\)Rc                  S;\\,\4   S9\" \RV                  5      \" \5      4S2\,S\,S"\R\                  S#\/4S< jj5       r:\)Ri                  S;\S9\" \RV                  5      \" \5      4S2\,S\,S=\\,\4   S"\R\                  S#\/4
S> jj5       r;\)Rm                  S;\S9\" \RV                  5      \" \5      4S2\,S\,S"\R\                  S#\/4S? jj5       r<\)Rc                  S@\\\,\,4      S9\" \RV                  5      \" \5      \" SASBSC9\" SASDSC94S"\R\                  S#\/S+\,SE\,4SF jj5       r=g)G    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tag_namedbcurrent_userc                 N  #    [        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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   r5   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   r7   FLEET_IMG_PATHimage_filenamerK   extfilepathfvehicle_image_pathrA   results                                 LC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\routers\platform\fleets.pycreate_fleet_endpointrZ   /   sG    0 /*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+J0 "*b1F l002HP\I]^mInHo0p|_-86,CWX G / "!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rF   detail)rQ   r   r   )r>   r]   r^   r_   r%   r`   ra   rb   rc   r6   r7   s              rY   
get_fleetsrj   y   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?   rf   rg   rh   )printr   rQ   r   rk   r6   r7   rC   s       rY   
read_fleetrp      sV      

!"x,Eyy5#6,:J:J<Y[:\#\4DEELs   AArA   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?   rf   rg   rh   T)exclude_unset)r   rQ   r   r   
model_dump)rk   rA   r6   r7   existing_fleets        rY   update_fleetru      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?   rf   rg   rh   )r   rQ   r   r   )rk   r6   r7   rt   s       rY   delete_fleetrx      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?   rf   rg   rh   _id  zVehicle model not foundc              3   F   >#    U  H  oS    TR                   :H  v   M     g7fr&   N)r&   ).0vry   s     rY   	<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   rQ   r   r   find_oner   r)   anyrs   fleets
update_oner   utcnowmodified_count)rk   ry   r6   r7   rC   vehicle_datarX   s    `     rY   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rw   )r   rQ   r   r    ro   s       rY   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?   rf   rg   rh   c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7fr~    r   r   r&   s     rY   r   $get_fleet_vehicle.<locals>.<genexpr>        Z8!lOz<YAA8   	r   r|   Vehicle not found in fleetr{   r)   manufacturer_namer2   r1   is_autonomousFcan_fly)r   r2   r1   r   r   model_details)r   rQ   r   nextr   r   r   )rk   r&   r6   r7   rC   ry   models    `     rY   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?   rf   rg   rh   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      rY   r   'update_fleet_vehicle.<locals>.<genexpr>  s#     f(D,[eHe!!(Ds   	r   r|   r   r&   r{   r   )r   r   r   r   zFailed to update vehicle)r   rQ   r   r   	enumerater   r   r   r   r   r   )	rk   r&   r   r6   r7   rC   vehicle_indexupdated_vehiclesrX   s	    `       rY   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?   rf   rg   rh   c              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7fr~   r   r   s     rY   r   ,remove_vehicle_from_fleet.<locals>.<genexpr>1  r   r   r   r|   r   r{   r&   r   )$pullr   r   r   zFailed to remove vehicler)   r   r   )r   rQ   r   r   r   r   r   r   r   r   r   )rk   r&   r6   r7   rC   ry   rX   s    `     rY   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$   z
Search allre   c                 ,   #    US   n[        XX#5      $ 7f)Nr>   )get_fleet_dropdown_list)r6   r7   r_   re   r>   s        rY   get_vehicle_dropdown_listr   G  s      l+J"2199s   )>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strrI   MongoDBdictrZ   rQ   rj   rp   putru   deleterx   r   r   r   r   r   r   r       rY   <module>r      s   	 Q Q Q * , , "  	   <   
$ S'3i!%ds) $T
)-d $T
&*4j:t* $T
&*4j'+Dz#Dz#Dz#Dz"&t*"4jCy"4j"8#8#89 !89+GG#G G 	G
 "#G G smG C=G 3-G G smG tnG }G }G }G  3-!G" sm#G$ %G& sm'G( 	)G* +G (GR !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R\:	::: : 
	: G:r   