o
    {i                     @   sd   d dl mZ d dlmZ d dlmZmZ d dlmZ e ZG dd dej	Z
G dd deej	Zd	S )
    )
SQLAlchemy)datetime)generate_password_hashcheck_password_hash)	UserMixinc                   @   s0  e Zd ZdZejejdddZejedddZ	ejedddZ
ejedddZejejdddZejejddZejejejd	Zejejejejd
ZeedZeedZejedddZejedddZdd Zdd Zdd ZedddZdd ZejddddfZ dS )ClienteClientesTprimary_keyautoincrement   Fnullable   r   defaultr   )r   onupdated   i  c                 C   s~   | j | j| j| j| j| jrdnd| jr| jdnd | jr#| jdnd | jr-| jdnd | j	| j
| j| j|  |  dS )NACTIVO	BLOQUEADOz%Y-%m-%d%Y-%m-%d %H:%M:%S)	ClienteIDNITRazonSocialNombreComercialEstadoActivoEstadoFechaVencimientoCertificadoFechaCreacionFechaModificacionUsuarioModificacionObservaciones	TokenUserTokenPasswordDiasParaVencimientoEstadoCertificado)r   r   r   r   r   r   strftimer   r    r!   r"   r#   r$   _calcular_dias_vencimiento_estado_certificadoself r,   */var/www/html/ActivarClientesMIG/models.pyto_dict   s    zCliente.to_dictc                 C   s.   | j sdS ddlm} | }| j | j}|S )u3   Calcular días hasta el vencimiento del certificadoNr   )date)r   r   r/   todaydays)r+   r/   hoy
diferenciar,   r,   r-   r(   -   s   z"Cliente._calcular_dias_vencimientoc                 C   s0   |   }|du r
dS |dk rdS |dkrdS dS )zFDeterminar el estado del certificado basado en la fecha de vencimientoN	SIN_FECHAr   VENCIDO   
POR_VENCERVIGENTE)r(   )r+   diasr,   r,   r-   r)   7   s   zCliente._estado_certificadoNc                 C   s^   | j }|r|| j|k}|r|| jd| d}|r+|| jd| d}| S )u8   Buscar cliente por NIT, Razón Social o Nombre Comercial%)queryfilterr   r   liker   all)clsnitrazon_socialnombre_comercialr;   r,   r,   r-   buscar_por_datosD   s   zCliente.buscar_por_datosc                 C      d| j  d| j dS )Nz	<Cliente : >)r   r   r*   r,   r,   r-   __repr__R      zCliente.__repr__r   r   uq_nit_nombre_comercial)name)NNN)!__name__
__module____qualname____tablename__dbColumnIntegerr   Stringr   r   r   Booleanr   Dater   DateTimer   utcnowr   r    r!   r"   r#   r$   r.   r(   r)   classmethodrC   rG   UniqueConstraint__table_args__r,   r,   r,   r-   r   	   s,    
r   c                   @   s   e Zd ZdZejejdddZejeddddZ	ejedddZ
ejed	ddZeed
ZejejdddZejejejdZeejZejedd dZdd Zdd Zdd Zdd Zdd ZdS )UsuarioUsuariosTr	   2   F)r   unique   r   r   r   r   r   c                 C   s   t || _dS )u   Establecer contraseña con hashN)r   Passwordr+   passwordr,   r,   r-   set_passwordf   s   zUsuario.set_passwordc                 C   s   t | j|S )u   Verificar contraseña)r   r_   r`   r,   r,   r-   check_passwordj   s   zUsuario.check_passwordc                 C   s
   t | jS )zRequerido por Flask-Login)str	UsuarioIDr*   r,   r,   r-   get_idn   s   
zUsuario.get_idc              	   C   sF   | j | j| j| j| j| jr| jdnd | jr| jdnd | jdS )Nr   )re   UsernameNombreCompletoEmailActivor   UltimoAccesoRol)	re   rg   rh   ri   rj   r   r'   rk   rl   r*   r,   r,   r-   r.   r   s   zUsuario.to_dictc                 C   rD   )Nz	<Usuario rE   rF   )rg   rh   r*   r,   r,   r-   rG   ~   rH   zUsuario.__repr__N)rK   rL   rM   rN   rO   rP   rQ   re   rR   rg   r_   rh   ri   rS   rj   rU   r   rV   r   rk   rl   rb   rc   rf   r.   rG   r,   r,   r,   r-   rZ   Y   s     rZ   N)flask_sqlalchemyr   r   werkzeug.securityr   r   flask_loginr   rO   Modelr   rZ   r,   r,   r,   r-   <module>   s   P