o
    n)j                     @   sr  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
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 Empresas.    )datetime)	Blueprintjsonifyrequest)login_required)or_)Empresadbempresas GET)methodsc                  C   s  t jdpd } ttt jddd}tttt jdddd}t jd}t jd	}t jd
}tj}| rWd|  d}|	t
tj|tj|tj|}|duri|dkri|	tj|dv k}|dur{|dkr{|	tj|dv k}|dv rt d}|	tjdkt
tjdtj|k}n|dv rt d}|	tjdktj|k}| }	|tj ||d |  }
td|	||dd |
D dS )zHGET /api/v1/empresas?q=...&page=1&per_page=25&mensualidad=1&regulariza=0qr   page   per_page      mensualidad
regularizapendiente_mes%N)1trueTrue%Y-%mT)0falseFalsec                 S   s   g | ]}|  qS  )to_dict).0er   r   -/var/www/html/LicenciasMIG/routes/empresas.py
<listcomp>8   s    z!list_empresas.<locals>.<listcomp>)oktotalr   r   items)r   argsgetstripmaxintminr   queryfilterr   nitlikerazonsocialnombrecomercialr   r   r   nowstrftimeperiodopagadois_countorder_byfecharegistrodesclimitoffsetallr   )r   r   r   	mens_filt	regu_filt	pend_filtqsr1   periodo_actualr&   r
   r   r   r#   list_empresas   sN   



rD   z/<int:empresa_id>c                 C   s   t j| }td| dS )NTr%   item)r   r.   
get_or_404r   r    
empresa_idr"   r   r   r#   get_empresa;   s   rJ   z/by-nit/<string:nit>c                 C   s"   t jj| d }td| dS )Nr0   TrE   )r   r.   	filter_byfirst_or_404r   r    )r0   r"   r   r   r#   get_empresa_by_nitB   s   rN   POSTc                  C   s   t jddpi } | dpd }|stddddfS tjj|d	 r,tdd
ddfS t|| d| d| d| d| dt	| ddt	| dd| dd	}t
j| t
j  td| ddfS )NTsilentr0   r   Fznit es obligatorio)r%   errori  rK   z!Ya existe una empresa con ese NITi  r2   r3   	direcciontelefonocelularr   r   tipotpv)	r0   r2   r3   rS   rT   rU   r   r   rV   rE      )r   get_jsonr)   r*   r   r   r.   rL   firstboolr	   sessionaddcommitr    )datar0   r"   r   r   r#   create_empresaI   s(   
r_   PUTc                 C   s   t j| }tjddpi }dD ]}||v rt||||  qd|v r*t|d |_d|v r5t|d |_t	
 |_tj  td| dS )NTrP   )r2   r3   rS   rT   rU   rV   r   r   rE   )r   r.   rG   r   rX   setattrrZ   r   r   r   utcnowfechaactualizacionr	   r[   r]   r   r    )rI   r"   r^   fr   r   r#   update_empresac   s   

re   z/<int:empresa_id>/mensualidadPATCHc                 C   V   t j| }tjddpi }t|d|j |_t	 |_
tj  td| dS )NTrP   r   rE   )r   r.   rG   r   rX   rZ   r)   r   r   rb   rc   r	   r[   r]   r   r    rI   r"   r^   r   r   r#   toggle_mensualidadu      

ri   z/<int:empresa_id>/activar-mesc                 C   s|   t j| }tjddpi }t d}|jpd|k}|	d| }|r'|nd|_t
 |_tj  td| ||dS )zMarca/activa el mes actual como pagado para esta empresa (boton "Activar
    mes"). Toggle: si ya esta activo el mes actual, lo revoca. ValidarLicenciaMensual
    solo entrega la clave si periodopagado == mes actual.TrP   r   r   activar)r%   rF   periodoactivo)r   r.   rG   r   rX   r   r4   r5   r6   r)   rb   rc   r	   r[   r]   r   r    )rI   r"   r^   rC   	ya_activork   r   r   r#   activar_mes   s   

ro   z/<int:empresa_id>/regularizac                 C   rg   )NTrP   r   rE   )r   r.   rG   r   rX   rZ   r)   r   r   rb   rc   r	   r[   r]   r   r    rh   r   r   r#   toggle_regulariza   rj   rp   DELETEc                 C   s,   t j| }tj| tj  tddS )NT)r%   )r   r.   rG   r	   r[   deleter]   r   rH   r   r   r#   delete_empresa   s   

rs   z/statsc                  C   s>   t j } t jjdd }t jjdd }td| ||dS )zKPIs para el dashboard.T)r   )r   )r%   r&   r   r   )r   r.   r8   rL   r   )r&   	mensuales	regularesr   r   r#   stats   s   
rv   N)__doc__r   flaskr   r   r   flask_loginr   
sqlalchemyr   modelsr   r	   __name__bprouterD   rJ   rN   r_   re   ri   ro   rp   rs   rv   r   r   r   r#   <module>   sJ    
+		