U
    i!,                     @   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   sT   zt  } t| dfW S  tk
rN } ztdt|idf W Y S d}~X Y nX dS )z7Retorna la lista de Proveedores pendites de aceptacion.   error  N)r   r   	Exceptionstr)AccessDistributorse r   mC:\Users\victor.barrera\Documents\proyectos\elepV3\Elep\src\App\Ventas_Module\VentasEUA\AccessDistributors.pylist_AccessDistributors   s
    z;funcion_AccessDistributors.<locals>.list_AccessDistributorsz7/Ventas_Module/VentasEUA/AccessDistributors/get_sellersc               
   S   sT   zt  } t| dfW S  tk
rN } ztdt|idf W Y S d }~X Y nX 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   sV   zt | }t|dfW S  tk
rP } ztdt|idf W Y S d }~X Y nX 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  zlt  } | d}| d}| d}td| d| d|  |rT|rT|d krftddid	fW S ztt|d
}W n& tk
r   tddid	f Y W S X t|}|rd|k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|kr&t|dfW S t|d |d }	d|	krPt|	dfW S t|d }
d|
krtt|
dfW S t|	d |d |d |d |d |d |d |d |d |d |||d |d |
d |
d |
d d }d|krt|dfW S t|	d }d|k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k
r } z*td'|  tdt|idf W Y S d }~X Y nX 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_resultZ	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|krZtddidfW S td}tj|	d	}t
|||}d|krt|dfW S  ||}d|krtd
|d ddfW S tddidfW S  tk
r } z*td|  tdt|idf W Y S d }~X Y nX 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 5 Q R X ddiW S  tk
r }	 z"td|	  dt|	i W Y S d}	~	X Y nX 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
recipientssuccesszCorreo enviado correctamentez#Error al enviar correo de rechazo: N)rH   rI   rJ   rK   yearr   r   confightmlapp_contextsendr   rD   r   )
rP   r[   destinatarioasuntorI   rQ   rO   cuerpo_htmlmsgr   rW   r   r   r^      s2    




z9funcion_AccessDistributors.<locals>.enviar_correo_rechazo)N)route)rX   rY   r   r   r"   rZ   r_   r   )rX   r^   rY   r   funcion_AccessDistributors   s    
	

f%rp   )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   rp   r   r   r   r   <module>   s   0