o
    hV                     @   s   d dl mZ d dlmZ ddlmZ d dlmZ d dlm	Z	 d dl
Z
e
eZdd	 Zd
d Zdd ZdddZdddZdddZdd ZdS )    )EmailMultiAlternatives)settings   )SystemSettings)render_to_string)
strip_tagsNc               
   C   s   zGi } t jjdd}|D ]}|j| |j< q| dttddt| dttdd| d	ttd
d| dttdd| dd	 dv dW S  t
yy } z&td|  ttddttddttd
dttddddW  Y d}~S d}~ww )zEGet email settings from SystemSettings or fallback to Django settingsemailcategoryHOST
EMAIL_HOSTzsmtp.gmail.comPORT
EMAIL_PORTiK  	HOST_USEREMAIL_HOST_USER HOST_PASSWORDEMAIL_HOST_PASSWORDUSE_TLStrue)r   1yes)hostportusernamepassworduse_tlszError getting email settings: TN)r   objectsfiltervaluekeygetgetattrr   intlower	Exceptionloggererror)settings_dictemail_settingssettinge r,   ./var/www/html/optinet_system/settings/utils.pyget_email_settings
   s*   



r.   c               
   C   s   z=i } t jjdd}|D ]
}|j| |j < q| dd| dd| dd| dd| dd	| d
d| dddW S  tyY } zt	d|  i W  Y d}~S d}~ww )z$Get SMS settings from SystemSettingssmsr	   api_keyr   api_url
partner_id
short_codemethodPOSTphone_parametermobilemessage_parametermessage)r0   r1   r2   r3   r4   r6   r8   zError getting SMS settings: N)
r   r   r   r   r    r$   r!   r%   r&   r'   )r(   sms_settingsr*   r+   r,   r,   r-   get_sms_settings$   s$   






	r;   c           
      C   s   ddl m} ddlm} ddlm} | }| dkrG|jj|d|id\}}|s5|js5|	  |jj
|d}|d|j d	}	|jd||	d
S | dkry|jj|d|id\}}|sg|jsg|	  |jj
|d}|d|j d	}	|jd||	d
S dS )z;
    Send invitation email using the new email service
    r   EmailService)CustomerInvitation)EmployeeInvitationcustomer)r@   defaults)r@   z/customers/setup-account//)	user_typeinstanceinvitation_urlemployee)rF   rA   )rF   z/hr/setup-account/)FzInvalid user type)notifications.email_servicer=   customers.modelsr>   	hr.modelsr?   r   get_or_createis_validdeletecreatebuild_absolute_uritokensend_invitation_email)
rC   rD   requestr=   r>   r?   email_service
invitationcreatedrE   r,   r,   r-   rP   :   sB   



rP   c                 C   s    ddl m} | }|| ||S )z5Send password reset email using the new email servicer   r<   )rG   r=   send_password_reset_email)user	reset_urlsent_byr=   rR   r,   r,   r-   rU   m   s   rU   generalr   c              
   C   sh   ddl m} | }	d}
|D ]"}|	j|| |||||d\}}|r$|
d7 }
qtd| d|  q|
dkS )zJ
    Send email using the new email service (backwards compatibility)
    r   r<   )recipient_emailsubjectcontent
email_typerecipient_namerX   html_contentr   zFailed to send email to z: )rG   r=   
send_emailr&   r'   )r[   r9   recipient_list
from_emailhtml_messager]   r^   rX   r=   rR   success_count	recipientsuccess	error_msgr,   r,   r-   send_configured_emailt   s"   
	
rh   c                 C   s   t | ||||S )z>Send email using configured settings (backwards compatibility))rh   )r[   r9   ra   rc   rb   r,   r,   r-   send_email_with_settings   s   ri   c                   C   s   dS )z@Get the callback base URL for M-Pesa and other external serviceszhttps://system.optinet.co.ker,   r,   r,   r,   r-   get_callback_base_url   s   rj   )N)NNrY   r   N)NN)django.core.mailr   django.confr   modelsr   django.template.loaderr   django.utils.htmlr   logging	getLogger__name__r&   r.   r;   rP   rU   rh   ri   rj   r,   r,   r,   r-   <module>   s    

3

