
    l,h#                     P   S SK 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  S S	KJrJr  S S
KJrJr  Sr " S S\ R*                  5      rS\S\4S jrS\S\S\S\\   S\\   S\\   S\\   S\\   S\\   S\4S jrS\S\4S jrS\S\S\4S jrS\S\4S jrg)    N)datetime)ObjectId)	InvalidId)DuplicateKeyError)HTTPException)Optional)get_next_sequence_value_int)VehicleBaseVehicleUpdate)	ASCENDING
DESCENDINGvehiclesc                   (   ^  \ rS rSrU 4S jrSrU =r$ )CustomJSONEncoder   c                    > [        U[        5      (       a  UR                  5       $ [        U[        5      (       a  [	        U5      $ [
        TU ]  U5      $ )N)
isinstancer   	isoformatr   strsuperdefault)selfobj	__class__s     OC:\Suresh\moveshuttle\MDcreated\moveengine\app\v1\services\platform\vehicles.pyr   CustomJSONEncoder.default   sA    c8$$==?"c8$$s8Ows##     )__name__
__module____qualname____firstlineno__r   __static_attributes____classcell__)r   s   @r   r   r      s    $ $r   r   vehicle_datareturnc                    U[            n SU ;   a  U S   c  SU S'   SU ;   a  U S   c  SU S'   [        SU5      U S'   UR                  U 5      n[        UR                  5      U S'   [        UR                  5      U S'   S H7  nX@;   d  M
  [        X   [        5      (       d  M#  X   R                  5       X'   M9     SU 0$ ! [         a    [        S	S
S9e[         a  n[        SS[        U5       3S9eS nAff = f)N	max_speedr   engine_capacitymodel_id_id
vehicle_idcreated_dateupdated_dater%     zVehicle creation failedstatus_codedetaili  zServer error: )COLLECTION_NAMEr	   
insert_oner   inserted_idr   r   r   r   r   	Exception)r%   dbvehicles_collectionresultfieldes         r   create_vehicle_servicer=      s   _-O,&<+D+L()L%,>O1P1X./L*+#>z2#NZ  %//= "&"4"45U%(););%<\" 6E$L4G)R)R&2&9&C&C&E# 6 -- O4MNN OnSVH4MNNOs$   A:B> 	B> "B> >C6C11C6
account_idskiplimitstatuscreated_date_fromcreated_date_toqsort_by
sort_orderc
           
         U	[            n
0 nU S:w  a  XS'   U(       a  X;S'   U(       d  U(       aH  0 nU(       a  [        R                  " US5      US'   U(       a  [        R                  " US5      US'   XS'   U(       a  USS	.nS
U0SU0SU0/US'   SS
SSSSSSSS.	nUR                  US5      nUS:X  a  [        O[
        nU
R                  U5      R                  UU5      R                  U5      R                  U5      n[        U5      n/ nU H  n[        US   5      US'   [        US   5      US'   UR                  SS5        UR                  SS5        S H;  nUU;   d  M  [        UU   [        5      (       d  M%  UU   R                  5       UU'   M=     UR                  U5        M     U
R!                  U5      nUUS.$ )Nallr>   rA   z%Y-%m-%dz$gtez$lter.   i)z$regexz$optionsmanufacturer_namevehicle_type	fuel_typez$oris_autonomouscan_flycapacity_jobsnumber_of_wheelsr(   )	rK   rJ   rL   rM   rN   rO   rP   r(   r.   ascr+   r,    user_idr-   )total_countr   )r4   r   strptimegetr   r   findsortr?   r@   listr   
setdefaultr   r   appendcount_documents)r>   r?   r@   rA   rB   rC   rD   rE   rF   r8   r9   query
date_queryregex_querysort_fields
sort_fieldsort_directioncursorr   formatted_vehiclesvehicler;   rT   s                          r   get_vehicles_servicerf   9   s   _-EU(l h O
!)!2!23Dj!QJv!)!2!2?J!OJv *n!"4 +.[)+&
e '0 ((. &
K .9J","5Y:N %%e,11*nMRRSWX^^_deFF|H  #GEN 3WU^,<,9b)5EJwu~x$H$H!(!9!9!; 6 	!!'*  &55e<K&4FGGr   r,   c                     [        U 5      nU[           R	                  SU05      nU(       d
  [        SSS9e[        US   5      US'   [        US   5      US'   UR                  SS	5        UR                  S
S	5        S H7  nXC;   d  M
  [        X4   [        5      (       d  M#  X4   R                  5       X4'   M9     U$ ! [         a    [        SSS9ef = fNr0   Invalid vehicle IDr1   r+     Vehicle not foundr,   r>   rR   rS   r-   )
r   r   r   r4   find_oner   rZ   r   r   r   )r,   r8   vehicle_object_idre   r;   s        r   read_vehicle_servicern   w   s    J$Z0 !**E3D+EFG4GHH/GL(GEN|R(y"% 2
7>8 D D$^557GN 2 N#  J4HIIJs   B= =Cc                    U[            n [        U 5      nUR	                  SU05      nU(       d
  [        SSS9eUR                  5       R                  5        VVs0 s H  u  pgUc  M
  Xg_M     nnn[        R                  " 5       US'   UR                  SU0SU05      n	U	R                  S	:X  a
  [        SSS9eUR	                  SU05      n
[        U
S   5      U
S
'   [        U
S   5      U
S'   U
R                  SS5        U
R                  SS5        S H7  nX;   d  M
  [        X   [        5      (       d  M#  X   R                  5       X'   M9     U
$ ! [         a    [        SSS9ef = fs  snnf )Nr0   ri   r1   r+   rj   rk   r/   z$setr   r,   r>   rR   rS   r-   )r4   r   r   r   rl   
model_dumpitemsr   utcnow
update_onematched_countr   rZ   r   r   )r,   r%   r8   r9   rm   existing_vehiclekvupdate_datar:   updated_vehicler;   s               r   update_vehicle_servicerz      s   _-J$Z0 +33U<M4NO4GHH$0$;$;$=$C$C$EW$EDA414$EKW"*//"3K ++	!"	F
 q 4GHH)22E;L3MNO$'(>$?OL! !78OE|R0y"- 2#
?3I8(T(T%4%;%E%E%GO" 2 ;  J4HIIJ Xs   E 	E)(E)E&c                    U[            n [        U 5      nUR	                  SU05      nU(       d
  [        SSS9eUR                  SU05        [        US   5      US'   [        US   5      US'   UR                  SS	5        UR                  S
S	5        S H7  nXT;   d  M
  [        XE   [        5      (       d  M#  XE   R                  5       XE'   M9     U$ ! [         a    [        SSS9ef = frh   )r4   r   r   r   rl   
delete_oner   rZ   r   r   r   )r,   r8   r9   rm   re   r;   s         r   delete_vehicle_servicer}      s    _-J$Z0 "**E3D+EFG4GHH""E+<#=>/GL(GEN|R(y"% 2
7>8 D D$^557GN 2 N%  J4HIIJs   C C')jsonr   bsonr   bson.errorsr   pymongo.errorsr   fastapir   typingr   app.v1.services.sequencer	   $app.v1.models.platform.vehiclesmodelr
   r   pymongor   r   r4   JSONEncoderr   dictr=   r   intrf   rn   rz   r}   r   r   r   <module>r      s      ! , !  @ *$(( $O Od O<<HS <H <HC <HRU <Hkstwkx <Hc]<H'/}<H?G}<HZbcfZg<Hpt<H|S  ,"s "- "PT "Hs 4 r   