o
    i                     @   s~  d Z ddlmZ 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mZmZmZ ede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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 )+z%CRUD de Licencias + activar/bloquear.    )datetime)	Blueprintjsonifyrequest)login_required)or_N)EmpresaLicenciaEmpresadb	licencias GET)methodsc               	   C   sD  t jdpd } t jdpd}ttt jddd}tttt jdddd}tj}| rRd	|  d	}|	t
tj|tj|tj|tj|}|d
krc|	tjdktjdk}n|dkrp|	tjdk}n|dkr||	tjdk}| }|tj ||d |  }td|||dd |D dS )zRGET /api/v1/licencias?q=...&estado=activa|bloqueada|temporal&page=...&per_page=...qr   estadopage   per_page      %activaTF	bloqueadatemporalc                 S      g | ]}|  qS  to_dict.0ir   r   ./var/www/html/LicenciasMIG/routes/licencias.py
<listcomp>/       z"list_licencias.<locals>.<listcomp>)oktotalr   r   items)r   argsgetstripmaxintminr	   queryfilterr   nitlikerazonsocialnombrecomercialresponsablelicenciaactivabloquearlicencialicenciatemporalcountorder_byfecharegistrodesclimitoffsetallr   )r   r   r   r   qsr0   r%   r&   r   r   r!   list_licencias   s<   




r?   z/<int:licencia_id>c                 C   s   t j| }td| dS )NTr$   item)r	   r-   
get_or_404r   r   licencia_idlr   r   r!   get_licencia2   s   rF   z/by-nit/<string:nit>c                 C   s4   t jj| dt j  }tddd |D dS )Nr/   Tc                 S   r   r   r   r   r   r   r!   r"   @   r#   zlist_by_nit.<locals>.<listcomp>)r$   r&   )r	   r-   	filter_byr8   r9   r:   r=   r   )r/   r&   r   r   r!   list_by_nit9   s   rI   z/<int:licencia_id>/activarPATCHc                 C   s2   t j| }d|_d|_tj  td|	 dS )NTFr@   
r	   r-   rB   r4   r5   r
   sessioncommitr   r   rC   r   r   r!   activarC   
   
rN   z/<int:licencia_id>/bloquearc                 C   s2   t j| }d|_d|_tj  td|	 dS )NFTr@   rK   rC   r   r   r!   bloquearM   rO   rP   z/by-nit/<string:nit>/activarc                 C   s0   t jj| dddd}tj  td|dS )zMActiva todas las licencias de un NIT (igual que el aceptar/rechazar antiguo).rG   TFr4   r5   r$   actualizadasr	   r-   rH   updater
   rL   rM   r   r/   nr   r   r!   activar_por_nitW   s
   
rX   z/by-nit/<string:nit>/bloquearc                 C   s0   t jj| dddd}tj  td|dS )NrG   FTrQ   rR   rT   rV   r   r   r!   bloquear_por_nita   s
   
rY   z%/<int:licencia_id>/regenerar-clavemesPOSTc                 C   sN   t j| }t d}t|j | |_	d|_
tj  td|j	dS )zGGenera la clavemes manualmente (Encrypt(nit + MM)) - util para soporte.z%mT)r$   clavemes)r	   r-   rB   r   nowstrftimecryptoencryptr/   r[   r4   r
   rL   rM   r   )rD   rE   mmr   r   r!   regenerar_clavemesj   s   
ra   DELETEc                 C   s,   t j| }tj| tj  tddS )NT)r$   )r	   r-   rB   r
   rL   deleterM   r   rC   r   r   r!   delete_licenciav   s   

rd   z/statsc                  C   sT   t j } t jjddd }t jjdd }t jjdd }td| |||dS )NTFrQ   )r5   )r6   )r$   r%   activas
bloqueadas
temporales)r	   r-   r7   rH   r   )r%   re   rf   rg   r   r   r!   stats   s   
rh   )__doc__r   flaskr   r   r   flask_loginr   
sqlalchemyr   r^   modelsr   r	   r
   __name__bprouter?   rF   rI   rN   rP   rX   rY   ra   rd   rh   r   r   r   r!   <module>   sL    
!
