o
    h}-                     @   s  d dl mZ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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mZmZ d dlmZ d dlmZmZ d dlZd dlZd dlZdd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dd Z'dd  Z(d!d" Z)d#d$ Z*dS )%    )renderredirect)messages)User)login)	send_mail)render_to_string)settings)slugify)transaction)timezone)Tenant
TenantUser)Shop)SignupAttemptContactSubmissionNc                 C      dddd}t | d|S )z&Public landing page for salesshark.com+254 796374224info@salesshark.comsupport@salesshark.comcontact_phonecontact_emailsupport_emailzlanding/index.htmlr   requestcontext r   "/var/www/html/pos/landing/views.pylanding_page   
   r    c                 C   r   )z
About pager   r   r   r   zlanding/about.htmlr   r   r   r   r   about   r!   r"   c                 C   
   t | dS )zFeatures pagezlanding/features.htmlr   r   r   r   r   features'      
r%   c                 C   r#   )zPricing pagezlanding/pricing.htmlr   r$   r   r   r   pricing,   r&   r'   c           	   
   C   s   | j dkrk| jd}| jd}| jd}t| }| jdd}tjj|||||d}z"td| d	| d
| d| t	j
dgdd t| d W tdS  tyj } zt| d W Y d}~tdS d}~ww dddd}t| d|S )zContact pagePOSTnameemailmessageHTTP_USER_AGENT )r)   r*   r+   
ip_address
user_agentzContact Form Submission from zName: z
Email: z

Message:
r   F)subjectr+   
from_emailrecipient_listfail_silentlyz9Thank you for your message. We will get back to you soon!z:There was an error sending your message. Please try again.Nzlanding:contactr   r   r   zlanding/contact.html)methodr(   getget_client_ipMETAr   objectscreater   r	   DEFAULT_FROM_EMAILr   success	Exceptionerrorr   r   )	r   r)   r*   r+   r.   r/   contact_submissioner   r   r   r   contact1   sB   
	r@   c              
      s$  | j dkr| jd}| jd}| jd}| jd}| jd}| jdd}| jd	}t| }| jd
d}	| d| }
tjj||||
||	dd}t||||||gsod|_	d|_
|  t| d t| dS tjj|d rd|_	d|_
|  t| d t| dS tjj|d rd|_	d|_
|  t| d t| dS tt jdd  }tjj|d rtt jdd  }tjj|d szt t tjtj d  d fddtdD }tjj|||||d}tjj||||||d d!}t jj||d"d# t!jj|||||d$ t"|||| t#| d%| d&| d' d(|_	||_$|  t%| |d)d* t&d+W  d   W S 1 sTw   Y  W n2 t'y } z%d|_	t||_
d|_$|  t| d,t|  t| dW  Y d}~S d}~ww t| dS )-zTenant self-registrationr(   business_nameowner_first_nameowner_last_namer*   phoneaddressr-   usernamer,    pending)rA   r*   rD   
owner_namer.   r/   statusfailedzMissing required fieldsz#Please fill in all required fields.zlanding/signup.htmlrF   zUsername already existsz7Username already exists. Please choose a different one.)r*   zEmail already existsz3Email already exists. Please use a different email.N   tenant_codez!@#$%&*c                 3   s    | ]}t  V  qd S )N)secretschoice).0ialphabetr   r   	<genexpr>   s    z tenant_signup.<locals>.<genexpr>   )rF   r*   
first_name	last_namepasswordtrial)r)   rO   ownerr   r   rE   rJ   r\   )tenantuserrole)r)   rD   r*   rE   r]   zECongratulations! Your account has been created. Your Tenant Code is: z&. Login credentials have been sent to z7. You have a 14-day free trial to explore all features.r;   z)django.contrib.auth.backends.ModelBackend)backend	dashboardz/An error occurred while creating your account: )(r4   r(   r5   r6   r7   r   r8   r9   allrJ   error_messagesaver   r=   r   r   filterexistsstruuiduuid4hexupperr   r   atomicstringascii_lettersdigitsjoinrangecreate_userr   r   send_welcome_emailr;   r]   r   r   r<   )r   rA   rB   rC   r*   rD   rE   rF   r.   r/   owner_full_namesignup_attemptrO   rZ   r^   r]   r?   r   rT   r   tenant_signup\   s   



			(=

	rv   c                 C   s6   | j d}|r|dd  }|S | j d}|S )z%Get the real IP address of the clientHTTP_X_FORWARDED_FOR,r   REMOTE_ADDR)r7   r5   splitstrip)r   x_forwarded_foripr   r   r   r6      s   r6   c           	      C   s   d}| |||dddd}z)t d|}d| j d|j d	| d
| j d| d}t||d| jg|dd W dS  tyL } ztdt|  |d}~ww )z9Send welcome email with login credentials and tenant codez/Welcome to Sales Shark - Your Account is Ready!z"https://salesshark.com/auth/login/r   r   )r^   r]   rZ   rO   	login_urlr   r   z!landing/emails/welcome_email.htmlzWelcome to Sales Shark!

Hello z!

Your organization: z
Tenant Code: z
Username: z
Password: z

Login at: https://salesshark.com/auth/login/

Need help? Contact our support team:
Email: support@salesshark.com
Phone: +254 796374224

Thank you for choosing Sales Shark!zpos@optinet.co.keF)r0   r+   r1   r2   html_messager3   zEmail sending failed: N)	r   rX   r)   rF   r   r*   r<   printrg   )	r^   r]   rZ   rO   r0   r   r   plain_messager?   r   r   r   rs      sF   
rs   c                 C   r#   )zTerms of Service pagezlanding/terms.htmlr   r$   r   r   r   terms_of_service  r&   r   c                 C   r#   )zPrivacy Policy pagezlanding/privacy.htmlr   r$   r   r   r   privacy_policy  r&   r   c              	   C   s   | j dkrx| jd}| jd}| jd}t|||gs)t| d t| dS |||t 	 d| j
d< z(tjjd	d
}tjjdd}t| | |j| j
d< t| d| d tdW S  tjtjfyw   t| d t| d Y S w t| dS )z Direct demo access without loginr(   r)   r*   rD   zPlease fill in all fields.zlanding/demo_access.html)r)   r*   rD   access_time	demo_userDEMOrN   rL   rO   zWelcome to Sales Shark Demo, z! Explore all features.ra   z?Demo system is temporarily unavailable. Please try again later.)r4   r(   r5   rb   r   r=   r   r   now	isoformatsessionr   r8   r   r   rO   r;   r   DoesNotExist)r   r)   r*   rD   demo_tenantr   r   r   r   demo_access#  s0   





r   )+django.shortcutsr   r   django.contribr   django.contrib.auth.modelsr   django.contrib.authr   django.core.mailr   django.template.loaderr   django.confr	   django.utils.textr
   	django.dbr   django.utilsr   tenants.modelsr   r   settings.modelsr   analytics.modelsr   r   rh   rP   rm   r    r"   r%   r'   r@   rv   r6   rs   r   r   r   r   r   r   r   <module>   s8    

+ 
1