a
    0i!,                     @   s   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
mZmZmZmZmZmZmZmZ d dlZd dlZd dlZd dlmZ dd ZdS )	    )logger)jsonifyrequestrender_template)Message)
get_AccessDistributorsget_SellerforDistributorsget_distributorSelectedinfocheck_existing_emailget_request_type_infoinsert_new_userinsert_user_profileupdate_user_request_statusinsert_user_roleupdate_user_request_rejectedN)send_activation_emailc                    s    j ddgddd } j ddgddd } j d	dgdd
d } j ddgd fdd} j ddgdfdd}d fdd	dS )uS   
    Agrupamos todas las funciones que importamos app en la aplicación Flask.
    z0/Ventas_Module/VentasEUA/AccessDistributors/listGET)methodsc               
   S   sR   zt  } t| dfW S  tyL } z tdt|idfW  Y d}~S d}~0 0 dS )z7Retorna la lista de Proveedores pendites de aceptacion.   error  N)r   r   	Exceptionstr)AccessDistributorse r   C/var/www/html/src/App/Ventas_Module/VentasEUA/AccessDistributors.pylist_AccessDistributors   s
    z;funcion_AccessDistributors.<locals>.list_AccessDistributorsz7/Ventas_Module/VentasEUA/AccessDistributors/get_sellersc               
   S   sR   zt  } t| dfW S  tyL } z tdt|idfW  Y d }~S d }~0 0 d S Nr   r   r   )r   r   r   r   )Zsellersr   r   r   r   get_sellers"   s
    z/funcion_AccessDistributors.<locals>.get_sellerszI/Ventas_Module/VentasEUA/AccessDistributors/get_comments/<distributor_id>c              
   S   sT   zt | }t|dfW S  tyN } z tdt|idfW  Y d }~S d }~0 0 d S r   )r	   r   r   r   )distributor_idcommentsr   r   r   r   get_distributor_comments*   s
    z<funcion_AccessDistributors.<locals>.get_distributor_commentsz9/Ventas_Module/VentasEUA/AccessDistributors/assign_sellerPOSTc                     s  zjt  } | d}| d}| d}td| d| d|  |rT|rT|d u rftddid	fW S ztt|d
}W n$ ty   tddid	f Y W S 0 t|}|rd|v rtddidfW S t	|d }|rtddid	fW S t
d}tj|d}t||}d|v r$t|dfW S t|d |d }	d|	v rNt|	dfW S t|d }
d|
v rrt|
dfW S t|	d |d |d |d |d |d |d |d |d |d |||d |d |
d |
d |
d d }d|v rt|dfW S t|	d }d|v rt|dfW S t |	d }t|tr\|\}}| }td!|dd"d#|fW S td$d%id&fW S  ty } z.td'|  tdt|idfW  Y d }~S d }~0 0 d S )(NdistributorIdZsellerIddiscountzAprobando distribuidor z y asignando vendedor z con descuento r   zDatos incompletos     u   Formato de descuento inválido3   No se pudo obtener la información del distribuidorr   ContactEmailu8   El correo electrónico ya está registrado en el sistemaAmerica/Mexico_City%Y-%m-%d %H:%M:%SRequestTypeIDUserID	RequestIDBusinessNameZLegalRepresentativePrimaryContactFiscalAddressZ
PostalCodeStateZCityContactPhone	CompanyID
DivisionIDDepartamentID)user_id
request_idrequest_type_idZbusiness_nameZlegal_representativeZprimary_contactZfiscal_addressZpostal_codestatecityr%   seller_user_idemailZcontact_phone
company_iddivision_iddepartament_idub   Hubo un error al enviar el correo de activación contacte a soporte carlos.velazquezm@igsa.com.mx zError desconocido)messager   rA   z7Distribuidor aprobado y vendedor asignado correctamenter   z[Error en assign_seller] )r   get_jsongetprintr   roundfloat
ValueErrorr	   r
   pytztimezonedatetimenowstrftimer   r   r   r   r   r   
isinstancetupler   r   )datar    Z	seller_idr%   distributor_infoZemail_existsrI   current_dateupdate_resultZuser_result	type_infoZprofile_resultZrole_resulttoken_resultjson_responsestatus_code
error_datar   appmailr   r   assign_seller2   s    











z1funcion_AccessDistributors.<locals>.assign_sellerz2/Ventas_Module/VentasEUA/AccessDistributors/rejectc            	   
      s   zt  } | d}| d}|s4tddidfW S t|}|rHd|v rZtddidfW S td}tj|	d	}t
|||}d|v rt|dfW S  ||}d|v rtd
|d ddfW S tddidfW S  ty } z.td|  tdt|idfW  Y d }~S d }~0 0 d S )Nr$   
comentarior   zID de distribuidor requeridor&   r(   r   r*   r+   uK   Solicitud rechazada, pero hubo un problema al enviar el correo electrónico)rA   
error_mailr   rA   u9   Solicitud rechazada correctamente y notificación enviadaz[Error en reject_distributor] )r   rB   rC   r   r	   rH   rI   rJ   rK   rL   r   r   rD   r   )	rO   r    r\   rP   rI   rQ   rR   email_resultr   )enviar_correo_rechazor   r   reject_distributor   s4    



z6funcion_AccessDistributors.<locals>.reject_distributorNc           
   
      s   z| d }|sddiW S d}t d}tj|}| d | d tj j|d}td	|d
}t| jd |gd}||_ 	  
| W d   n1 s0    Y  ddiW S  t y }	 z&td|	  dt|	iW  Y d}	~	S d}	~	0 0 dS )uO   
        Envía un correo de notificación de rechazo al distribuidor.
        r)   r   u*   No se encontró el correo del distribuidorz(Respuesta a su solicitud de distribuidorr*   r0   r/   )r0   r/   Year
Comentarioz3Ventas/VentasEUA/Mail/AccessDistributorsReject.html)rO   MAIL_USERNAME)sender
recipientsNsuccesszCorreo enviado correctamentez#Error al enviar correo de rechazo: )rH   rI   rJ   rK   yearr   r   confightmlapp_contextsendr   rD   r   )
rP   r\   destinatarioasuntorI   rQ   rO   cuerpo_htmlmsgr   rX   r   r   r_      s2    



(
z9funcion_AccessDistributors.<locals>.enviar_correo_rechazo)N)route)rY   rZ   r   r   r"   r[   r`   r   )rY   r_   rZ   r   funcion_AccessDistributors   s    
	

f%rq   )venvr   flaskr   r   r   
flask_mailr   Z4Consultas_SQL.Ventas.VentasEUA.AccessDistributorsSQLr   r   r	   r
   r   r   r   r   r   r   rJ   rH   os App.Security_Module.UserPasswordr   rq   r   r   r   r   <module>   s   0