a
    Ki"                     @   s   d dl mZmZmZ d dlmZ d dlmZ d dlZ	d dl
Z
e
eZededdZejdd	gd
edd Zejddgd
edd Zejddgd
edd Zejdd	gd
edd Zejdd	gd
edd ZdS )    )	Blueprintrequestjsonify)db)token_requiredNentrenamientosz/v1/entrenamientos)
url_prefix POST)methodsc                  C   s  t  } g d}|D ],}| |stdd| dddf  S q| d }| d }| d	 }| d
 }| d }| d}| d}	| d}
t }|stddddfS zzV| }|dt j||
||||||	f	 |	  tddddfW W |
  |
  S  tjjyn } zR|  td|  tddt| ddfW  Y d }~W |
  |
  S d }~0 0 W |
  |
  n|
  |
  0 d S )N)	idEntrenafecha	distanciatiempo	velocidaderrorCampo  es obligatoriostatusmessage  r   r   r   r   r   
valoracioncomentariosZtipoEntrena%   Error de conexión a la base de datos  zINSERT INTO Xalarrazabal025_entrenamientos 
            (usuario_id, id_local, idActividad, fechaHora, tiempo, distancia, velocidad, valoracion, comentarios) 
            VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s)successz$Entrenamiento guardado correctamente   Database error: z#Error al guardar el entrenamiento: )r   get_jsongetr   r   get_connectioncursorexecuteuser_idcommitclosemysql	connectorErrorrollbackloggerr   str)datarequired_fieldsfield
id_entrenar   r   r   r   r   r   Ztipo_entrena
connectionr"   e r3   /app/entrenamientos/routes.pycrear_entrenamiento   sx    






r5   z/<int:id_entrena>PUTc              
   C   sp  t  }|d}|d}| dkr6tddddfS t }|sTtdddd	fS zz|| }|d
||| t jf |	  |j
dkrtdddW W |  |  S tddddfW W |  |  S W np tjjyD } zR|  td|  tddt| dd	fW  Y d }~W |  |  S d }~0 0 W |  |  n|  |  0 d S )Nr   
comentarior   r      ID de entrenamiento inválidor   r   r   r   zUPDATE Xalarrazabal025_entrenamientos 
            SET valoracion = %s, comentarios = %s 
            WHERE id_local = %s 
            AND usuario_id = %sr   z Datos actualizados correctamenteu5   No se encontró el entrenamiento o no tienes permisosi  r   zError al actualizar: )r   r   r    r   r   r!   r"   r#   r$   r%   rowcountr&   r'   r(   r)   r*   r+   r   r,   )r0   r-   r   r7   r1   r"   r2   r3   r3   r4   actualizar_entrenamientoE   st    




r:   DELETEc              
   C   s  | dkrt ddddfS t }|s8t ddddfS zPz| }|  z^|d| f |d	tj| f |jdkrt	d
|
  t dddW W W |  |  S  t	y
 } zD|  t ddt| ddfW  Y d }~W W |  |  S d }~0 0 W nh tjjyv } zJtd|  t ddt| ddfW  Y d }~W |  |  S d }~0 0 W |  |  n|  |  0 d S )Nr   r   r8   r   r   r   r   z4DELETE FROM Xalarrazabal025_Ruta WHERE id_local = %szRDELETE FROM Xalarrazabal025_entrenamientos WHERE usuario_id = %s AND id_local = %su2   No se encontró el entrenamiento para este usuarior   z%Entrenamiento eliminado correctamentezError al eliminar: r   zError de base de datos: )r   r   r!   r"   start_transactionr#   r   r$   r9   	Exceptionr%   r&   r*   r,   r'   r(   r)   r+   r   )r0   r1   r"   r2   r3   r3   r4   eliminar_entrenamiento}   s~    

r>   z/no-localesc               
   C   sp  t  } | dg }t }|s2tddddfS z$z|jdd}|rdd	gt| }d
| d}t j	g| }|
|| n|
dt j	f | }|D ]&}|
d|d f | }	|	|d< qtd|dW W |  |  S  tjjyD }
 z@td|
  tddddfW  Y d }
~
W |  |  S d }
~
0 0 W |  |  n|  |  0 d S )Nids_localesr   r   r   r   T)
dictionary,z%szpSELECT * FROM Xalarrazabal025_entrenamientos 
                       WHERE usuario_id = %s AND id_local NOT IN ()zBSELECT * FROM Xalarrazabal025_entrenamientos WHERE usuario_id = %szTSELECT id, id_local, latitud, longitud FROM Xalarrazabal025_Ruta WHERE id_local = %sZid_localrutasr   )r   r-   r   zError de base de datos)r   r   r    r   r!   r   r"   joinlenr$   r#   fetchallr&   r'   r(   r)   r+   r   )r-   r?   r1   r"   placeholdersqueryparamsr   ZentrenamientorC   r2   r3   r3   r4   !obtener_entrenamientos_no_locales   sj    


rJ   z/rutac            	   
   C   sj  t  } g d}|D ],}| |stdd| dddf  S qt| d }t| d }t| d	 }t }|stdd
ddfS zzH| }|	d|||f |
  tddddfW W |  |  S  tjjy> } zR|  td|  tddt| ddfW  Y d }~W |  |  S d }~0 0 W |  |  n|  |  0 d S )N)r   latitudlongitudr   r   r   r   r   r   rK   rL   r   r   zlINSERT INTO Xalarrazabal025_Ruta 
            (id_local, latitud, longitud) 
            VALUES (%s, %s, %s)r   u!   Ubicación guardada correctamenter   r   u    Error al guardar la ubicación: )r   r   r    r   intfloatr   r!   r"   r#   r%   r&   r'   r(   r)   r*   r+   r   r,   )	r-   r.   r/   r0   rK   rL   r1   r"   r2   r3   r3   r4   agregar_ruta   sj    



rO   )flaskr   r   r   databaser   authr   mysql.connectorr'   logging	getLogger__name__r+   entrenamientos_bprouter5   r:   r>   rJ   rO   r3   r3   r3   r4   <module>   s*   
86<4