
    4Yj              
           d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZ ddlmZ  edd	d
dd       edd	d       eddd       eddd       edd       edd       edd      gZd Zd ZdefdZy) zULogica de sincronizacao com o Geotab: cria/atualiza trucks e cache de odometro/horas.    )datetimetimezone)parser   )SessionLocal)TruckMaintenanceItemSyncLog)get_geotab_clientu   Troca de óleo do motori N  i  i  d   )nameinterval_milesinterval_hourswarning_mileswarning_hoursu   Filtro de combustível)r   r   r   u   Lubrificação (graxa)i  i  u   Inspeção DOTim  I   )r   interval_dayswarning_daysu   Ajuste de válvulasN)r   r   u   Inspeção dos freiosu$   Óleo de transmissão e diferenciaisc                     | j                  t              j                         dkD  ry t        D ]  }| j	                  t        di |        | j                          y )Nr    )queryr	   countDEFAULT_MAINTENANCE_ITEMSaddcommit)db	item_datas     FD:\Nextcloud\SISTEMAS WINDOWS\frota-trucks-cliente\app\sync_service.pyseed_default_maintenance_itemsr      sF    	xx &&(1,.	
++, /IIK    c                 V    | y t        | t              r| S t        j                  |       S )N)
isinstancer   date_parserisoparse)values    r   	_parse_dtr&      s*    }%"&&r    returnc            	         t               } t        t        j                  t        j
                              }| j                  |       | j                          | j                  |       	 t               }|j                         }|D ch c]  }|d   	 }}|j                  |      }d}|D ]  }| j                  t              j                  |d         j                         }	|	5t        |d   |j!                  d|d               }	| j                  |	       n!|j!                  d|	j"                        |	_        |j!                  d      xs |	j$                  |	_        |j!                  d	      xs |	j&                  |	_        |j!                  d
      xs |	j(                  |	_        |j!                  |d         }
|
rD|
d   |
d   |	_        t-        |
d         |	_        |
d   |
d   |	_        t-        |
d         |	_        t        j                  t        j
                        |	_        |dz  } t7        |        | j                          t        j                  t        j
                        |_        d|_        ||_        | d|_        | j                          d|d| jA                          S c c}w # tB        $ r}| jE                          t        j                  t        j
                        |_        d|_        tG        |      |_        | j                          dtG        |      dcY d}~| jA                          S d}~ww xY w# | jA                          w xY w)z@Executa uma sincronizacao completa. Retorna resumo do resultado.)
started_atidr   )geotab_device_idNr   )r+   r   vehicleIdentificationNumberserialNumberlicensePlateodometer_milesodometer_dateengine_hoursengine_hours_dater   Tz truck(s) sincronizado(s).)successtrucks_updatedF)r3   error)$r   r
   r   nowr   utcr   r   refreshr   get_devices#get_odometer_miles_and_engine_hoursr   r   	filter_byone_or_nonegetr   vinserial_numberlicense_plater/   r&   r0   r1   r2   last_synced_atr   finished_atr3   r4   messageclose	Exceptionrollbackstr)r   logclientdevicesd
device_idsstatus_dataupdateddevicetruckinfoexcs               r   run_syncrS   &   s   	B
X\\(,,7
8CFF3KIIKJJsO/"$$$&'./w!agw
/@@LFHHUO--vd|-LXXZE}vd|&**VU[\`UaBbcu#ZZ

;


#@ANUYYEI"(**^"<"S@S@SE"(**^"<"S@S@SE??6$<0D()5+/0@+AE(*3D4I*JE''3)-n)=E&.7=P8Q.RE+#+<<#=E qLG) , 	'r*
		",,x||4$ 	!;<
		7; 	
Y 0H  5
",,x||4#h
		 3s844

5 	
sD   +J9 	J4HJ9 4J9 9	M	A,M.M	/M M		M M)__doc__r   r   dateutilr   r#   databaser   modelsr   r	   r
   geotab_clientr   dictr   r   r&   rS   r   r    r   <module>rZ      s    [ ' * " 3 3 , 	'caeuxy&uDQ&t4PcC#D9%d;4TJ	 '7$ 7r    