HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //home/arjun/projects/buyercall/buyercall/blueprints/form_leads/__pycache__/views.cpython-310.pyc
o

�we/��@sTddlZddlZddlmZddlmZddlZddlm	Z	ddl
mZddlZddlm
Z
ddlmZddlmZddlZddlZdd	lmZmZmZmZmZmZmZmZmZmZmZ dd
l!m"Z"m#Z#ddl$m%Z&ddl'm(Z(m)Z)m*Z*m+Z+dd
l,m-Z-m.Z.m/Z/ddl0m1Z1m2Z2ddl3m4Z4m5Z5ddl6m7Z7ddl8m9Z9m:Z:ddl;m<Z<ddl=m>Z>ddl?m@Z@ddlAmBZBddlCmDZEmFZGmHZImJZKmLZLmMZMddlNmOZOmPZPmQZQddlRmSZSddlTmUZUddlVmWZWmXZXmYZYddlZZZddl[m\Z\ddl]Z]ddl^Z^ddl_m`Z`maZaddl8mbZbed ecd!d"�Zdd#Zed$d%�Zfd&d'�Zgd(d)�Zhd*d+�Zid,d-�Zjd.d/�Zkedjld0d1gd2�e"eBd3d4d5d6�d7d8����Zmedjld9d1gd2�e"eBd3d4d5d6�d:d;����Znedjld<d1gd2�e"eBd3d4d5d6�d=d>����Zoedjld?d1gd2�e"eBd3d4d5d6�d@dA����Zped�ldB�e:jqe"dCdD����Zredjld?dEgd2�e"eBd3d4d5d6�dFdG����ZsedjldHd1gd2�e"eBd3d4d5d6�dIdJ����ZtedjldKd1gd2�e"eBd3d4d5d6�dLdM����ZuedjldNdEgd2�e:jqe"eBd3d4d5d6�dOdP�����ZvedjldQd1gd2�e"eBd3d4d5d6�dRdS����ZwedjldTdEgd2�e:jqe�dUdV����ZxedjldWdEgd2�e:jqe�dXdY����ZydZd[�Zzedjld\d1gd2�e"eBd3d4d5d6�d]d^����Z{edjld\dEgd2�e"eBd3d4d5d6�d_d`����Z|edjldad1gd2�e"eBd3d4d5d6�dbdc����Z}edjldadEgd2�e"eBd3d4d5d6�ddde����Z~edjldfdEgd2�e"eBd3d4d5d6�dgdh����Zed�ldi�e"eBd3d4d5d6�djdk����Z�edjldldEgd2�e"eBd4d5�dmdn����Z�d�dodp�Z�	q	d�dsdt�Z�edjldudEgd2�e"eBd3d4d5d6�dvdw����Z�edjldxdEgd2�e"eBd3d4d5d6�dydz����Z�edjld{dEgd2�e"eBd4d5d3�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�ed�ld��e"eBd6�d�d�����Z�dS)��N)�closing)�StringIO)�Document)�WD_PARAGRAPH_ALIGNMENT)�date)�cross_origin)�_try_renderer_template)�	Blueprint�jsonify�json�
make_response�render_template�request�redirect�flash�url_for�	send_file�current_app)�login_required�current_user)�gettext)�
AmsLeadXml�
ams_client�
neo_client�NeoLead)�or_�and_�desc)�	load_only�
joinedload)�func�case)�text)�db�csrf)�subaccount_client)�	bw_client)�
AESCipherDome)�
role_required�)�ExternalForm�FormLead�
FormLeadField�ExternalFormField�FormLog�ExternalFormFieldDefinition)�ActivityType�ActivityName�ActivityLogs�)�Widget)�Agent)�add_widget_lead�Routing�BandwidthRouting)�sha1)�isfloat�isint)�	es_client�
form_leads�	templates)�template_folder�cCs|dS)N�position�)�erBrB�G/home/arjun/projects/buyercall/buyercall/blueprints/form_leads/views.py�sortByPosition>srEcCs*z
tj�||�WdStyYdSw�NTF)�datetime�strptime�
ValueError)�	date_text�formatrBrBrD�
valid_dateBs�rLcCs$zt|�WdStyYdSwrF)�intrI)�srBrBrD�represents_intJs�rOcCs(t|�dkr|d|}|S||}|S)Nr� )�len)�current_message�
error_messagerBrBrD�append_errorRs
�rTcC�Vtjd}t|�}|dur)z|�|�WSty|YSty(|YSw|S�N�CRYPTO_SECRET_KEY)�app�configr'�encrypt�	TypeErrorrI�r"�
crypto_key�cipherrBrBrD�
encrypt_value[�
�r_cCrUrV)rXrYr'�decryptr[rIr\rBrBrD�
decrypt_valuelr`rbz/forms�GET)�methods�agent�admin�partner�sysadmincCsdtj}tj}|rtj}tjr%tj��}tj�tj|k��	�}t
d||d�Sttd�d�t
td��S)Nzforms.jinja2)�forms�
account_forms�&You do not have permission to do that.�danger�leads.call_leads)r�partnership_account_id�is_viewing_partnership�'get_user_viewing_partnership_account_id�forms_access�Form�query�all�filter�firstr
r�_rr)rn�!partnership_account_group_viewingrirjrBrBrD�
forms_list}s
��ryz/forms/<int:form_id>/leadsc	CsZtj}tj}|rtj}ddlm}|j�|j|k��	�}tj
r�tj�tj|ktj|k��	�}|s?tt
d��|��ttd��S|j}tj�tj|ktjdk��d���}ddlm}|�tj|�}	d}
dd	lm}|r�|jr�|j}|r�dd
lm}
|
j�|
j|k��	�}|r�|jr�|j}
n|j dkr�d}
t!d
|j|
||||	d�Stt
d�d�ttd��S)Nr3��PartnershipAccountzForm with ID {} does not exist.�form_leads.forms_listTrA��UserExternalApiAutoPostTier��current_supervisor_user��Partnership�
limitsysadmin�
automotivezleads.jinja2)�
business_type�supervisor_user_business_type�fields�form_id�formname�listrkrlrm)"rrnrorp�partnership.modelsr{rsru�idrvrqrrrrwrKrr�display_name�	FormFieldr��
show_in_table�order_byrt�user.modelsr~�get_allowed_service_providers� buyercall.lib.supervisor_managerr��is_authenticated�partnership_idr�r��roler
)r�rnrxr{�partnership_account�formr�r�r~�service_provider_listr�r��
partner_idr��supervisor_user_partnershiprBrBrD�
leads_list�sh�����

�
�r�z&/forms/<int:id_>/notification_criteriacCsTtj}tj}|rtj}tj�tj|ktj|k���}|r$t	|j
|jd�St	ddd�S)N)�
conditions�is_conditional_notification�F)rrnrorprrrsrur��oner
�conditional_criteriar�)�id_rnrxr�rBrBrD�form_notification_criteria�s&����r�z/forms/<int:id_>c.Cs�tj}tj}d}|r
tj}tj�tj|ktj|k���}t	j�t	j|kt	j
dk���}tj�tj
|k��tj���}ddlm}m}|�|d�}	|	sP|�|d�}	ddlm}
m}|
j�|
jtjk���}t�dd|j���d	}
|�|�}|dur|dur|}|jr�|j}nd
}|jr�|j}nd�d�}t d
|d�}ddl!m"}|j�|j|k��|j#dk���}|r�d}nd}g}|D]}|j$}|j%}|j}d�||�}||g}|�&|�q�i}|D]
}|d||d<q�t'�(|�|j)r�|j)}nt d�}|j*r�|j*}nd}ddl+m,}ddl-m.} d}!d}"|�/tj|d�}#|#�r |#j0�r d}!| �1|j|d�}$|$�r1|$j2�r1d}"d}%d}&|�/tj|d�}'|'�rF|'j0�rFd}%| �1|j|d�}(|(�rW|(j2�rWd}&d})d}*|�/tj|d�}+|+�rl|+j0�rld})| �1|j|d�},|,�r}|,j2�r}d}*tj�tj
|k��tj���}g}-t3	d.id|�d|�d|�d|
�d |�d!|�d"|�d#|�d$|�d%|�d&|�d'|	�d(|%�d)|&�d*|!�d+|"�d,|)�d-|*��S)/Nzexternal service providerTr3)�PartnershipAccountCreditTie�PartnershipCreditTie�
prequalify)r{�0ExternalApiServiceProvidersPartnershipAccountTie�
[^A-Za-z0-9]+r��@buyercall.com�)#COMPANY# - Thank you for your submission�,

Thank you for your submission
---
{0}
---
�qWe are in the process of reviewing your submission for the #FORM#. Once we will be in contact as soon as possible��Hi #NAME#,%(body)s Thanks,
#COMPANY# support team

 Please note this is an automated email notification. Do not reply to this email.��body��Phone�0Fz{} - {}r)rzb#COMPANY#: Hi #NAME#, thanks for your form submission. We will review it and get back to you asap.r}��ExternalApiFormAutoPostTie�
AMS Evolution�AMS 2000�
NEO Verify�form_edit.jinja2r��routingsr��account_name�subjectr��
phone_options�
auto_sms_body�selected_phone_number�active_numbers�external_service_provider_name�prequalify_credentials�
ams_2000_show�ams_2000_auto_send�ams_evo_show�ams_evo_auto_send�neo_verify_show�neo_verify_auto_send)r�)4rrnrorprrrsrur�r�r4�enabledrtr�r�r�rAr�r�r��)partner_account_seven_hundred_credit_info�#partner_account_finserv_credit_infor{r�rv�re�sub�name�lower�service_provider_name�send_auto_email_subject�send_auto_email_msgrKrw�phonenumbers.modelsr��is_deactivated�phonenumber�
friendly_name�append�log�info�send_auto_sms_msg�send_auto_sms_inbound_idr�r~�form_leads.modelsr��!get_service_provider_access_state�
is_allowed�get_service_provider_send_state�is_automatically_sentr
).r�rnrx�external_provider_namer�r�r�r�r�r�r{r��accountr��check_service_provider�auto_email_subject�auto_email_body�body_stringr��
phone_numbersr��numbers�no�numberr��
inbound_idr��
phone_info�
phone_dictr��selected_inbound_idr~r��ams_evo_allowed�ams_evo_is_auto_send�ams_evo_tie_exists�ams_evo_auto_send_tie�ams_2000_allowed�ams_2000_is_auto_send�ams_2000_tie_exists�ams_2000_auto_send_tie�neo_verify_allowed�neo_verify_is_auto_send�neo_verify_tie_exists�neo_verify_auto_send_tie�selection_fieldsrBrBrD�	form_edit�s$������������
����������	�
���
�������r�z/forms/<int:id_>/form_logs/datac	Cs.ttj�dd��}tj�dd�}ttj�dd��}ttj�dd��}tj}dd	lm}tj	�
tjtj
tj|jtjtjtj��t��|��ttj|ktj|k��}tjtj
tjd
tjtjg}|j|�}	|tt|��vr{||}
|dkrvt|
�}
|	�|
�}	|	�|��|�}	dd
�|	� �D�}t!|�"�|�"�|d�S)N�order[0][column]�-1�
order[0][dir]�asc�startr�length�c)�ExternalApiServiceProvidersz#external_api_service_providers.namerc�&g|]��fdd�tt���D��qS)c�i|]}|�|�qSrBrB��.0�i��rowrBrD�
<dictcomp>��z#data.<locals>.<listcomp>.<dictcomp>��rangerQ�rrBr	rD�
<listcomp>�s��zdata.<locals>.<listcomp>)�recordsFiltered�recordsTotal�data)#rMr�args�getrrn�'buyercall.blueprints.partnership.modelsrr#�sessionrsr.r��	posted_on�descriptionr��status�form_lead_id� external_api_service_provider_id�join�Lead�	outerjoinrurr��
with_entitiesrrQrr��offset�limitrtr
�count)r��order�	directionr!r"rnr�all_logs�columns�sorted_logs�
order_predrrBrBrDr�sP
���

��r�POSTc 	Cs�tj}tj}|rtj}tj�tj|ktj|k���}t	j�
td���t	j|kt	jtj
�d�p/dk���}tj
�dd�}tj
�dd�}tj
�dd�}ddlm}dd	lm}	d
}
|�tj|d�}|rs|jrs|dkrjd
}
|	�|j|d|
�d
}|�tj|d�}
|
r�|
jr�|dkr�d
}|	�|j|d|�d
}|�tj|d�}|r�|jr�|dkr�d
}|	�|j|d|�tj
�dd�}|dkr�d
}nd
}tj
�dd�}|dkr�d
}nd
}tj
�dd�}|dkr�d
}nd
}tj
�dd�}|dkr�d
}nd
}tj
�dd�}|dkr�d
}nd
}tj
�dd�}tj
�dd�}tj
�dd�|_||_dtj
�dd�i|_dtj
�dd�i|_tj
�dd�|_||_||_||_||_||_ |dv�rO|�rOd
|_!nd
|_!t"�#|�|_$|j%dk�rd|�rdd|_%|j&dk�r{|�r{d�'d�}t(d |d!�}||_&|j)du�r�|�r�dd"l*m+}|j�|jtjk��|j,d#k���}|j|_)|j-dk�r�|�r�t(d$�|_-t.j�t.j/|k��0t.j1��2�}|D]}tj
�d%�'|j3��}|�r�||_�q�|D]%}zt4tj
�d&�'|j3�d'��}|d'k�r�||_1W�q�t5�y�Y�q�wzt6j7�8�t9�:tjt;j<t=j>t|�t?t(d(�d)�t@tAd*��WSt5�y7tB�CtD�E��t6j7�F�t?t(d+�d,�Ynwt	j�t	j|kt	jGd
k��2�}tH|d-d.�d/�}tId0|||d1�S)2Nr��routingr�r�r�r�r3r}r�Fr��onTr�r��partial_data_email�full_submit_email�send_auto_email�
send_auto_sms�auto_prequalify_credit�is_conditional�condition_criteriar��emails�recipient_emails�form_adf_emails�
email_subject)�true�Truer�r�r�r�r�r�r�zaHi #NAME#, thanks for your form submission. We will review it and get back to you asap. #COMPANY#zfield-{}zfield-pos-{}���z'The form has been updated successfully.�successr|�Error saving form information.rlcSs|jS�N)rA)�frBrBrD�<lambda>xszform_update.<locals>.<lambda>)�keyr�)r�r�r�)Jrrnrorprrrsrur�r�r4�optionsrrr�rrvr�r~r�r�r�r��!set_service_provider_access_stater�r+�email_addresses�adf_email_addressesr7r-r.r/r0r1r�r�loadsr�r�r�rKrwr�r�r�r�r�r�r�r�rArt�field_idrM�	Exceptionr#r�commitr2�add_logr0�PAGEr1�EDITrrrr��error�	traceback�
format_exc�rollbackr��sortedr
) r�rnrxr�r+�ams_2000_auto_send_post�ams_evo_auto_send_post�neo_verify_auto_send_postr~r�r�r�r�r�r�r��
partial_email�
full_email�auto_email_respond�auto_sms_respond�auto_prequalify_lead�conditional_notificationr�r�r�r��phone_numberr��field�new_name�posr�rBrBrD�form_update�s0�����
��
��
����
���
��

����r^z
/api/formscCs�tj�dd�}ttj�dd��}tj�dd�}ttj�dd��}ttj�d	d
��}tj}tj}|r4tj}gd�}tj	�
tj|k�}tj	�
tj|k��tj
t�d��d
���tj
���}	|}
|rod�|�}|�
ttj�|���}
|
�|	tj|	jj
kf��tjtjt|	jj�d�dfg|	jjd��d
�tjtj�}
|
}|tt |��vr�d�|||�}
|�!t"|
��}|�#|��$|�}dd�|�%�D�}t&tjd|
�'�|�'�|d�S)�Return server side data.�
search[value]r�r�r�r�r�rrrr�r�r��
lead_count�
created_on�
updated_onr)rb�%{}%N��else_�{} {}cr)crrBrBrr	rBrDr�rz)forms_json.<locals>.<listcomp>.<dictcomp>r
rrBr	rDr�s�zforms_json.<locals>.<listcomp>�draw�rirrr)(rrrrMrrnrorprrrsrurr r�r �sum�label�group_by�subqueryrKrr��ilikerr��cr!rb�is_rcrdrrQr�r"r!r"rtr
r#)�searchr$r%r!r"rnrxr'�total�leads�filtered�pattern�sorted_r)rrBrBrD�
forms_jsonsr����

�����
��rxz
/forms/csvc	Cstj�dd�}ttj�dd��}tj�dd�}gd�}tj}tj}|r&tj}tj	�
tj|k�}tj	�
tj|k��tj
t�d��d	���tj
���}|}|r]d
�|�}	|�
ttj�|	���}|�|tj|jj
kf��tjtjt|jj�d�dfg|jjd
��d	�tjtj�}|}
|tt |��vr�d�|||�}|
�!t"|��}
d}gd�}
t#t$���Y}t%�&|�}|�'|
�|
�(�D]}dd�|D�}|d7}||d<|�'|�q�d�t)�*��+d��}t,|�-��}d|j.d<d�|�|j.d<t/�0tjt1j2t3j4tdd�|Wd�S1�swYdS)r_r`r�r�r�r�r�rar)rbreNrrfrh)�Noz
Friendly Namez
Lead Count�
Created On�
Updated OncS�g|]}|�qSrBrB�r�xrBrBrDr�zforms_csv.<locals>.<listcomp>zForms-{}.csv�%Y-%m-%d�text/csv�Content-Type�attachment; filename={}�Content-Disposition�csv)5rrrrMrrnrorprrrsrurr r�r rkrlrmrnrKrr�rorr�rpr!rbrqrcrdrrQr�r"rrr��writer�writerowrtr�today�strftimer�getvalue�headersr2rIr0�DATAr1�DOWNLOAD)rrr$r%r'rnrxrsrtrurvrwr)�row_no�header�outr�r
�csv_row�filename�resprBrBrD�	forms_csv�s�����

�����

�

�&�r�z/api/forms/<int:form_id>/leadsc!Cs�tj�dd�}ttj�dd��}tj�dd�}ttj�dd��}ttj�d	d
��}tj}tj}tjd}t	|�}	|r=tj
}tj�
tj|ktj|k���}
|
sPdStj�
tj|ktjd
k��tj���}dg}|�dd�|D��|�gd��tj�
tj|ktj|k�}
|
}|r�d�|�}|�
tj�ttj��|���}|}|tt |��vr�||}|dvr�|�t!d||f��}n=tj�
tj"|k��#tj$ttj�%d����&�}|�'t(tj���)|tj|j*j$kf�}|dkr�|�|j*j+�,��}n|�|j*j+�}|�-|��.|���}ddl/m0}dd�|D�}|�1|||�}g}|D]�}i}i}g}|jD]}t|j�||j"<�q$t2|�D]\}}|�|j"d�|t3|d�<�q4t |�}ddl4m5}|j�
t6|j7|j7k|j|k|j8�9d
����|j:�,����}|du�r�tjd}t	|�}	|	�;|j<�} nd} |j|v�r�||j}|�=d|jt3|d�|
j>t3|d�|j:t3|d�|j?t3|d �| d!|j7d"|i�|�@|��qtAtjd#|�#tj��Btj��C�|
�#tj��C�|d$�S)%r_r`r�r�r�r�r�rrrrrW��Form not found�Tr�cS�g|]}|j�qSrB�rF�rr[rBrBrDr3�zleads_json.<locals>.<listcomp>)�	form_namercrd�credit_scorere)rcrdz%s %s�
sort_fieldrr3��ExternalApiFormLeadPostTiecSr�rB�r�)rr
rBrBrDrZr�r)��
CreditReportsN�Unknownr����
contact_id�external_api_lead_idrirj)Drr�rrMrrnrorXrYr'rprrrsrur�rvr�r�r�r�rArt�extendrrKr��anyrb�	LeadField�field_valuerorrQr"rFr �lead_idrlrnrArrrpr�rr!r"r�r��existing_posts_for_leads�	enumerate�str�contacts.modelsr�rr��
is_successfulrqrcrar��updater�rdr�r
rmr#)!r�rrr$r%r!r"rnrx�encrypt_keyr^r�r�r'rsrurvrw�order_field�field_queryr��
sorted_ids�
lead_postsr�leadr
�lead_fields�service_provider_postsr[r�nr��
credit_reportr�rBrBrD�
leads_jsons�
�����
�����

��


�	�r�z/forms/<int:form_id>/leads/csvcsBtjdkstjdk�r�ttj�d��}ttj�d��}tj}tj}tj�	|d��
�}tj�	|d��
�}tt�
t
j�|kt�
t
j�|k�}|rItj}ddlm}|j�|j|k���}	tj�tj|ktj|k���}
|
smdStj�tj|k��tj���}d	g}|�d
d�|D��|�dd
g�t
j�t
j|kt
j|k��|��tt
j��}
|
���d���}ddl m!}|
�"|��#|j|j$���}i}|D]
}|d||d<q�d}dg}|�dd�|D��|	j%dkr�|�gd��n|�gd��t&t'����}t(�)|�}|�*|�i�|D]Y}|d7}d}|j+D]}t,|j-��|j.<�q|g}|�fdd�|D�7}|	j%dk�rL||j/�r@t,||j/�}||
j0||j1|jg7}n
||
j0|j1|jg7}|�*dd�|D���qd�2t
�3��4d��}t5|�6��}d|j7d<d�2|�|j7d<t8�9tjt:j;t<j=t|�|Wd�S1�s�wYdSd S)!r_rfrh�df�dtz%m%d%Yr3rzr�r�cSr�rBr�r�rBrBrDr�r�zleads_csv.<locals>.<listcomp>rcrdi�	��Contactr)rrycSr�rB)r�r�rBrBrDr�r�r�)�	Form NamezCredit Scorerzr{)r�rzr{Ncsg|]	}��|jd��qS)r�)rrFr}�r�rBrDr�scSr|rBrBr}rBrBrDr�rzForm Leads-{}.csvr�r�r�r�r�)z
Access Deniedi�)>rr�r�rrrrnrorGrHrrr rrdrpr�r{rsrur�rvrrr�r�r�rArtr�r�	from_selfr"r�r�rr r�r�rrr�r�r�r�rbr�rFr�r�rcrKr�r�rr�r�r2rIr0r�r1r�)r��	date_from�date_tornrx�converted_date_from�converted_date_to�filter_by_dater{r�r�r�r'ru�lead_resultsr��contact_results�contact_listr
r�r�r�r�r�r[r�r�r�rBr�rD�	leads_csv�s�"�����
���



�

�&�%r�z/form_leadsc<Cs�	d}dd�}tj�d�}|st�d�|�Stj�tj|k��	�}|s.t�d�
|��|�Stj�tj|j
k���}dd�|D�}tj�d�rYtj�tj
ttj�d��k��	�}n
t�}||_|j|_tj��D]8\}}|d	vr�t||�}	d
}
|	jdur�t|	j�}
|
|	_|j
r�|j
|	_tj�|	�}	|j�|	�||vr�|�|�qh|D]}t|d
�}	|j
r�|j
|	_tj�|	�}	|j�|	�q�tj�|�tj��zPddlm }dd
l!m"}m#}
|
j�|
j
|jk��	�}|j�|j
|j$k��	�}g}|j%D]}|�|j&�q�t'd�t'd|�d|t(|j&�t(|j&�d�}||�}Wnt)�y3}z
t'dt(|��WYd}~nd}~wwddl*m+}|j
}d
}dtjv�rMtj�dd
�}n
dtjv�rZtj�dd
�}d
}dtjv�rjtj�dd
�}n
dtjv�rwtj�dd
�}d
}dtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}d
}d tjv�r�tj�d d
�}nd!tjv�r�tj�d!d
�}n
d"tjv�rtj�d"d
�}d
}d#tjv�rtj�d#d
�}n
d$tjv�r%tj�d$d
�}d
}d%tjv�r5tj�d%d
�}n
d&tjv�rBtj�d&d
�}d
} d'tjv�rRtj�d'd
�} n
d(tjv�r_tj�d(d
�} d
}!d)tjv�rotj�d)d
�}!n
d*tjv�r|tj�d*d
�}!d
}"d+tjv�r�tj�d+d
�}"nd,tjv�r�tj�d,d
�}"n
d-tjv�r�tj�d-d
�}"|j}#|j,}$|||||||||||| |!|#|$|"�tj-�d.�d/k�r�|j.d0u�r�|j/�r�dd1l0m1}%|%�2|j
�d2|_.t�3d3�tj��t4|j
d4�S|j.d0u�r|j5�rdd1l0m1}%|%�2|j
�d2|_.t�3d5�tj��|j6�rVd6d7l7m#}
|
j�|
j
|jk��	�}&|&j8}'t9�:d8d
|&j8��;�d9}(dd:l*m<})|)�2|||j=|'|(|j>|j?�t�@d;�
|j
��|jA�r�d6d7l7m#}
|
j�|
j
|jk��	�}&|&j8}'dd<l*mB}*|*�2|||j=|'|jC|jD�t�@d=�
|j
��d6d>l7mE}+|+�F|#d?�},d@}-|,�s�|+�G|#d?�},dA}-|,�s�d6dBl7m#}
mH}.|
j�|
j
|#k��	�}/z	|.�I|/j$d?�},Wnt�dC�
|j
tJ�K���YdA}-z7|jL�r|,�r|,jM�r�dD}0n|,jN�r�dE}0n	|,jO�r�dF}0nd
}0ddGl0mP}1|1�2|0d?|jQ|#|||||||-|"�Wnt)�y#t�dH�
|j
tJ�K���Ynwzc|jR�r�tS|jR||||dI�}2d6d7l7m#}
|
j�|
j
|jk��	�}&|jRjTjUdJk�ratV|&j$�}3t�@dK�tW|3��X|jR|2�n%t�@dL�|&jY}|&jZ}4|4�sr|jZ}4|4j[}5t\|5|&j$�}3t]|3�}6|6�X|jR|2�Wnt)�y�t�dM�
tJ�K���Ynwd6dNl7m^}7d6dOl_m`}8tj�|8ja��|7jb|7ja|8jak|7j|#k��|8j|j
k|8jc���}9|9�r�|9D]}:ddPl0md};|;�2|j
|j|:ja��q�|�S)QNcS�$tj�d�}tdd�}||jd<|S�z* Redirect to the thankyou page after POST rr�i/�Location�rr�rrr���new_path�responserBrBrD�
redirect_back�

z add_leads.<locals>.redirect_back�form-id�4Cannot save lead: missing form-id field on HTML page�3Cannot save lead: cannot find form '{}' in databasecSr�rBr�r}rBrBrDrr�zadd_leads.<locals>.<listcomp>�
lead-id-field�r�rr�r)�create_task�r�r{zWe are herezall_agents_sids : �WEB_FORM_SUBMISSION_FOLLOW_UP)�type�users�
partnershipId�partnershipAccountIdzException : r)��add_form_contact�firstnamefield�	firstname�
lastnamefield�lastname�
emailfield�email�
phonefieldr��streetfield�	address_1�	address_2�
citytfield�	cityfield�city�
statefield�state�zipfield�zip�countryfield�country�repfield�representative�
datepicker�birthday�dobfield�partial-submit�yesF��form_lead_email_notificationsT�6A partial form submit email notification has been sent�r��3A full form submit email notification has been sentr3rzr�r���send_email_auto_responds�:An auto email responds message has been sent to lead id {}��send_sms_auto_responds�8An auto sms responds message has been sent to lead id {}�r�r��	700Credit�Finserv�r{r��;Unable to set partnership id for lead {} and got error : {}�experian�
transunion�equifax��form_prequalify_credit_check�6Cannot check credit on form lead {} and got error : {}��	firstName�lastName�emailAddress�phoneNumber�tracking�Calling Bandwidth number...�Calling Twilio number...�Cannot add or call lead: {}�r�r���form_external_api_request)err�rr�rLrrrsru�	public_idrvrKr�r�r�rtrrMrn�itemsr�r�r_r�r#r�merger�r��remove�addrH�#buyercall.blueprints.chat.endpointsr�rr�r{r��agents�sid�printr�rG�
form_tasksr�rdr��
email_sentr-�*buyercall.blueprints.form_leads.form_tasksr�delay�debugr
r.r/r�r�r�r�r�rr�r�r�r�r0r	r�r�r�r�r�r��partner_finserv_credit_inforMrNr1�experian_enabled�transunion_enabled�equifax_enabledrr�r+r6�inboundr�r&r8�	call_lead�partnership�subscription�twilio_subaccount_sidr%r7r�r�r�r�activer�r!)<�
post_stater�r�r�r��	field_idsr�r@�valr[�encodedr�r�r{r�r6�all_agents_sidsre�task_payload�	task_resprCr�r�
first_name�	last_name�
email_addressrZr�r�r�r�r�r��repr�rnrdrr�r��account_email_addressrr	r��credit_credentials�service_providerr��partner_account�bureaur�widget_lead�clientr7�subaccount_sid�rr�r��service_providers�providerr!rBrBrD�	add_leads�s
�$



�



����




��
�
������
�����
��


��
��rPz/form_leads_newc`Csndd�}tj�d�}|st�d�|�Stj�tj|k��	�}|s,t�d�
|��|�Stj�tj|j
k���}dd�|D�}tj�d�rWtj�tj
ttj�d��k��	�}n
t�}||_|j|_tj��D]8\}}|d	vr�t||�}d
}	|jdurt|j�}	|	|_|j
r�|j
|_tj�|�}|j�|�||vr�|�|�qf|D]}t|d
�}|j
r�|j
|_tj�|�}|j�|�q�tj�|�tj��ddlm }
|j
}d
}d
tjvr�tj�d
d
�}ndtjvr�tj�dd
�}d
}
dtjvr�tj�dd
�}
n
dtjv�rtj�dd
�}
d
}dtjv�rtj�dd
�}n
dtjv�r$tj�dd
�}d
}dtjv�r4tj�dd
�}n
dtjv�rAtj�dd
�}d
}dtjv�rQtj�dd
�}n
dtjv�r^tj�dd
�}d
}dtjv�rmtj�dd
�}d
}dtjv�r}tj�dd
�}ndtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}n
dtjv�r�tj�dd
�}d
}dtjv�r�tj�dd
�}n
d tjv�r�tj�d d
�}d
}d!tjv�r�tj�d!d
�}n
d"tjv�rtj�d"d
�}d
}d#tjv�rtj�d#d
�}nd$tjv�r*tj�d$d
�}n
d%tjv�r7tj�d%d
�}d}d&tjv�rGtj�d&d
�}n
d'tjv�rTtj�d'd
�}d}d(tjv�rdtj�d(d�}n
d)tjv�rqtj�d)d�}|d*v�rxd}d
}d+tjv�r�tj�d+d
�}n
d,tjv�r�tj�d,d
�}d
}d-tjv�r�tj�d-d
�}n
d.tjv�r�tj�d.d
�}d
}d/tjv�r�tj�d/d
�}n
d0tjv�r�tj�d0d
�}d
}d1tjv�r�tj�d1d
�}n
d2tjv�r�tj�d2d
�}d
}d3tjv�r�tj�d3d
�}n
d4tjv�r	tj�d4d
�}d}d5tjv�rtj�d5d�}n
d6tjv�r&tj�d6d�}|d*v�r-d}d} d7tjv�r=tj�d7d�} n
d8tjv�rJtj�d8d�} | d*v�rQd} d
}!d9tjv�ratj�d9d
�}!n
d:tjv�rntj�d:d
�}!d
}"d;tjv�r~tj�d;d
�}"n
d<tjv�r�tj�d<d
�}"d}#d=tjv�r�tj�d=d�}#n
d>tjv�r�tj�d>d�}#|#d*v�r�d}#d
}$d?tjv�r�tj�d?d
�}$n
d@tjv�r�tj�d@d
�}$d
}%dAtjv�r�tj�dAd
�}%n
dBtjv�r�tj�dBd
�}%d
}&dCtjv�r�tj�dCd
�}&n
dDtjv�rtj�dDd
�}&d}'dEtjv�rtj�dEd�}'n
dFtjv�r#tj�dFd�}'|'d*v�r*d}'d}(dGtjv�r:tj�dGd�}(n
dHtjv�rGtj�dHd�}(|(d*v�rNd}(d})dItjv�r^tj�dId�})n
dJtjv�rktj�dJd�})|j}*|j!}+|
g|�|�|
�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�|�| �|!�|"�|#�|$�|%�|&�|'�|(�|)�|*�|+�|�Rd&|i�|j"�r�t�#dK�dL}dMt$|j
�dN},dMt$|j
�dO}-dMt$|j
�dP}.t%j&dQ}/tj}0d}1d}2i}3dR}4t'j(t%j&dSt%j&dTdUdV�}5|/�r|/dW}6nt)dW}6tj*�dX�dYk�r&dZd[l+m,}7|7j-|j
|j
|j.g|6d\�nd]}d^}4|0D]}8|0|8}9|9�r9|9|3|8<�q,|5�|-�}1|1�rHt/�0|1�}2|2�r^|2D]}:|2|:}9|9�r\|:}|9|3|<�qM|5�1|-|6dWt/�2|3��|5�1|,|6dW|�|5�1|.|6dW|4�|};|dLk�r�t3|j
d_�St4|j
|j
|j.�n2tj*�dX�dYk�r�|j5d`u�r�|j6�r�dZdal+m7}<|<�8|j
�dU|_5t�#db�tj��t3|j
d_�S|j"�r�|;d]k�r�|j5d`u�r�|j9�r�dZdal+m7}<|<�8|j
�dU|_5t�#dc�tj��|j:�rVdddel;m<}=m=}>|>j�|>j
|jk��	�}?|?j>}@df}A|=j�|=j
|?j?k��	�}B|Bdu�r+|Bj@�r+|Bj@�Adg�d}AtB�Cdhd
|?j>��D�dg|A}CddilmE}D|D�8|||jF|@|C|jG|jH�t�Idj�
|j
��|jJ�r�dddkl;m=}>|>j�|>j
|jk��	�}?|?j>}@ddllmK}E|E�8|||jF|@|jL|jM�t�Idm�
|j
��dddnl;mN}F|F�O|*do�}Gdp}H|G�s�|F�P|*do�}Gdq}H|G�s�dddrl;m=}>mQ}I|>j�|>j
|*k��	�}Jz	|I�R|Jj?do�}GWnt�ds�
|j
tS�T���Ydq}Hz7|jU�r|G�r|GjV�r�dt}Kn|GjW�r�du}Kn	|GjX�r�dv}Knd
}KdZdwl+mY}L|L�8|Kdo|jZ|*||
|||||H|�Wnt[�y#t�dx�
|j
tS�T���Ynwzd|j\�r�t]|j\||
||dy�}Mdddkl;m=}>|>j�|>j
|jk��	�}?|j\j^j_dzk�rbt`|?j?d{�}Nt�Id|�ta|N��b|j\|M�n%t�Id}�|?jc}O|?jd}P|P�ss|Ojd}P|Pje}Qtf|Q|?j?�}Ntg|N�}R|R�b|j\|M�Wnt[�y�t�d~�
tS�T���Ynwdddl;mh}Sddd�limj}Ttj�|Tjk��|Sjl|Sjk|Tjkk|Sj|*k��|Tj|j
k|Tjm���}U|U�r�|UD]}VdZd�l+mn}W|W�8|j
|j|Vjk��q�dZd�lomp}XdZd�lqmr}YdZd�lsmt}Zdddel;m<}=m=}>|>j�|>j
|*k��	�}?|=j�|=j
|?j?k��	�}Od�}[|X|[|�d�|
���}\|Y|O|?|\d�|[�}]d�}^|Z|]tu|^�}_t�Id��|�S)�NcSr�r�r�r�rBrBrDr�Nr�z$add_leads_new.<locals>.redirect_backr�r�r�cSr�rBr�r}rBrBrDrcr�z!add_leads_new.<locals>.<listcomp>r�r�r�r)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��campaign�
campaignfield�vehicle_year�vehicleyearfield)�NaN�	undefined�vehicle_make�vehiclemakefield�
vehicle_model�vehiclemodelfield�vin�vinfield�vehicle_trim�vehicletrimfield�stock_number�
stockfield�vehicle_purchase_price�vehiclepurchasepricefield�vehicle_mileage�vehiclemileagefield�vehicle_condition�vehicleconditionfield�listing_url�listingurlfield�trade_in_vehicle_year�tradeinvehicleyearfield�trade_in_vehicle_make�tradeinvehiclemakefield�trade_in_vehicle_model�tradeinvehiclemodelfield�trade_in_vehicle_vin�tradeinvehiclevinfield�trade_in_vehicle_value�tradeinvehiclevaluefield�trade_in_vehicle_mileage�tradeinvehiclemileagefield�trade_in_vehicle_condition�tradeinvehicleconditionfieldz"Conditional notification detected.�partial�lead-�-form-state�
-form-postz-form-processed�(CONDITIONAL_NOTIFICATION_PROCESSOR_DELAY�
incomplete�REDIS_CONFIG_URL�REDIS_CONFIG_PORTT��host�port�decode_responses�<r�r�r)�check_conditional_notification)r�	countdown�full�completerFrrrr3r�z
buyercall.com�@r�rrrzrr
rr�rr
rrrrrrrrr�voicerrrrr�r )�create_notification_message)�create_notification_data)�put_to_elasticsearch�FORM_SUBMISSIONrP�messagezbuyercall-notification-logzNotification Added)vrr�rr�rLrrrsrur"rvrKr�r�r�rtrrMrnr#r�r�r_r�r#rr$r�r�r%r&rHr+r�rdr�r/r�rXrY�redis�StrictRedis�&CONDITIONAL_NOTIFICATION_DELAY_DEFAULTr�r-r��apply_asyncr�rrE�setex�dumpsr
� process_conditional_notificationr,r-rr.r.r/r�r�r{r�r��email_sender�splitr�r�r�rr�r�r�r�r0r	r�r�r�r�r�r�r0rMrNr1r1r2r3rr�rGr+r6r4r�r&r8r5r6r7r8r%r7r�r�r�rr9r�r!�+buyercall.blueprints.notification.utilitiesr��.buyercall.integrations.elasticsearch.utilitiesr��buyercall.blueprints.user.tasksr�r<)`r�r�r�r�r;r�r@r<r[r=r�rrArBrCrZr�r�r�r�r�r�rDr�rQ�in_veh_year�in_veh_make�in_veh_model�
in_veh_vin�in_veh_trim�in_veh_stock�in_veh_price�in_veh_mileage�in_veh_condition�
in_veh_url�ti_veh_year�ti_veh_make�ti_veh_model�
ti_veh_vin�ti_veh_value�ti_veh_mileage�ti_veh_conditionrnrd�	state_key�post_key�
processed_key�conditional_notification_delay�posted_request�stored_posted_values�
posted_values�
stored_values�processed_state�redis_dbr.r�rF�value�posted_valuer:rr�r{r�r��
sender_domainrgrErr	r�rFrGr�rHrIrrJrKr6r7rLrMr�r�rNrOr!r�r�r��notify_typer�r�
index_name�es_responserBrBrD�
add_leads_newIs�
�$



�










��������	�
���
������������������� �#

�
�

�





��
��

�
������
�����
��

��
��
r�c!	Cs��zQt�d�t�d�t�d�tjtjdtjddd�}dt|�d}dt|�d	}t|�|��}|�|�}g}d
}	d}
g}i}d}
d
}t�dt|�dt|��|r_t�	|�}
|
rr|
D]}|
|}|rq|}|||<qct�d
�t�t|��|�r?|�r?t�d�t�t|��d}d|vr�|d}d}d|vr�|d}d}d|vr�|d}d}d|vr�|d}d}d|vr�|d}d}d|vr�|d}g}d|vr�|d}|�r+|s�|s�|s�|�r+|D]�}d}d|vr�|d}d}d|vr�|d}d}d|v�r|d}d}d|v�r|d}d}d|v�r|d}d
}|dk�rL||v�rL|�|d�}t�dt|�dt|��||k�rCd}t�dt|��|dk�r�t�d t|�d!t|��|d"k�rhd}n|d#k�ru|d#k�rud}n|d$k�r�|d$k�r�d}t�dt|��|d%v�r�d}	|d
k�r�d
}
|d&k�r�|�
|�q�|	�r�|
�s�|�r�d|v�r�d}n
|�r�d|v�r�d}|�r�t�d't|��t�d(t|�d)t|��|�s�|�r�d*d+lm} | �
|d
dd|||�WdSWdSt�d,t|��t�d-t|�d)t|��|�s|�r(d*d+lm} | �
|d
dd|||�WdSWdSt�d.t|�d/t|�d0�WdSt�d1t|�d/t|�d0�WdSt�ydt�t���YdSw)2Nz-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-xz,Processing Conditional Notification Detectedr}r~TrrxryrzFz	lead_id: z
 | state: zPosted fields and values: zConditions: �
okSubjectLine�nokSubjectLine�okEmailRecipients�nokEmailRecipients�okAdfEmailRecipients�nokAdfEmailRecipients�criteriar]r��
form_field�	operationr�r�z/Processing form_field condition. Posted value: z, condition_form_field: zCondition match: �submitz/Processing submit condition. Submit condition: z, Actual submissions: rtrwr�)�and�initial�orzThen - subject line: zThen - emails: z - adf emails: r)�*form_lead_email_notifications_with_optionszElse - subject line: zElse - emails: z/No notification condition emails set for form: z. For lead: z . No notifications will be sent.z1No notification condition criteria set for form: )r�rLr�r�rXrYr�rrrEr�r-r�r.rGrMrN)!r�r�r�r�r�r��
lead_stater��condition_criteria_list�condition_criteria_and_present�condition_criteria_and�condition_criteria_or�retrieved_posted_valuesr��send_ok_emailsr�r�r@�then_subject_line�else_subject_line�then_emails�else_emails�then_adf_emails�else_adf_emailsr3�	condition�
condition_pos�condition_option�condition_form_field�condition_operation�condition_value�condition_validr�rBrBrDr�_s


�

�






��

��




��
��
�������r�z0/form_leads/add/<int:contact_id_>/<int:form_id_>cCs �zgg}tj}tj}|rtj}ddlm}|j�|j|k��	�}|j
dkr3ttd�d�t
td��WSddlm}|j�|j|k|j|k��	�}|durZttd	�d�t
td��WStj�tj|k���}	|	durwttd
�d�t
td��WSt|	�dkr�ttd�d�t
td��WStj���d���}
tj�tj|ktj�d
���d�}g}|D]}
|
jd|
j}|�|
�q�|
D]�}d}|	D]�}|�|j|j|j��rU|}d}|jdkr�|j}nj|jdkr�|j}na|jdkr�|j }nX|jdkr�|j!}nO|jdk�r|j"}nE|jdk�r|j#}n;|jdk�r|j$}n1|jdk�r|j%}n'|jdk�r)|j&}n|jdk�r3|j'}n|jdk�r=|j(}n	|jdk�rF|j)}|j||j*d�}|�|�nq�|�r^|	�+|�q�t,d||||d�WSt-�y�t.�/t0�1��t.�2d�3tj!��ttd �d�t
td��YSw)!Nr3rzr��1You do not have permission to perform this actionrl�contacts.contact_listrr��Lead does not exist�Form does not existzForm fields do not existrAFr�rPr�r�r�r�r�r�r�r�r�r�r�r�)rFr�r�zform_leads_new.jinja2)r�r��form_field_listr(�6The current user: {}, does not have access to the form��You do not have access to this form lead, it is associated with a different account. Please login with a different account or contact support.)4rrnrorpr�r{rsrur�rvr�rrwrr�$buyercall.blueprints.contacts.modelsr�r�r�rtrQr/r�r5r�rqr�r�r��check_field_id_matchrF�old_field_id�
phonenumber_1r�r�r�r�r�r�r�r��agent_assignedr�r%r
rGr�rLrMrNr�rK)�contact_id_�form_id_�lead_field_listrnrxr{r�r��contact�form_fields�field_definitions�agents_listr(�a�a_name�field_definition�found_fieldr[�current_field_value�new_lead_fieldrBrBrD�form_leads_new�s�
��
�����������

���



�
�%
�����r�c	Cs8�z�d}g}tj}tj}|rtj}ddlm}|j�|j|k��	�}|j
dkr5ttd�d�t
td��WSddlm}|j�|j|k��	�}	|	durXttd�d�t
td��WStj�tj|k���}
|
dusmt|
�d	kr{ttd
�d�t
td��WStj���d���}|D�]E}d}
|
D�]5}|�|j|j|j��r�|}
|j}tj�d|jd
�}|�r�||_|jdks�|jdks�|jdkr�|j|	_n�|jdks�|jdkr�|j|	_n�|jdks�|jdks�|jdks�|jdks�|jdk�rt|j�dk�r|j� dd
�� dd
�� dd
�}n�|jdk�s|jdk�r|j|	_!n�|jdk�s#|jdk�r(|j|	_"n�|jd k�s4|jd!k�r9|j|	_#nw|jd"k�sE|jd#k�rJ|j|	_$nf|jd$k�rU|j|	_%n[|jd%k�sg|jd&k�sg|jd'k�rl|j|	_&nD|jd(k�sx|jd)k�r}|j|	_'n3|jd*k�s�|jd+k�r�|� dd
�}t|�d,k�r�|dd,�}||	_(n|jd-k�s�|jd.k�r�|j|	_)t*|�}nd
}t+||d/�}|�,|�nq�|
�r�|
�-|�q�t.|d0|||d1�}t/j0�1|�t/j0�2�|j}Wn&t3�yt4�5t6�7��t/j0�8�ttd2�d�t
td3||d4��YSwttd5�d6�t
td7|d8��S)9Nr3rzr�r�rlr�r�r�rr�rA�field-r�r�r�r�r�r��ssn�ssnfield�
cumemberfield�co_applicant_ssn�cosignerssnfield�	�-rP�#r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��r�r�)rFr�F)r�r,r�rnr�r<zform_leads.form_leads_new)r�r�z*The form lead has been successfully saved.r;�form_leads.form_leads_edit�r�)9rrnrorpr�r{rsrur�rvr�rrwrrr�r�r�r�rtrQr/r�r�rFr�rr�rr�r�r��replacer�r�r�r�r�r�r�r�r�r_r�r�r%rr#rr&rHrGr�rLrMrNrO)r�r��new_lead_id�new_lead_fieldsrnrxr{r�r�r�r�r�r�r�r[�new_field_id�new_field_valuer��new_leadrBrBrD�form_leads_new_postos��
����������

�

�




$



�2
��


�rz/form_leads/<int:id_>c&Cs�zetj}tj}|r
tj}ddlm}|j�|j|k��	�}t
j���d���}t
j�t
j|kt
j|k���}|j}tj�|jtjk���}tj�tj|jk��|tj|jjkf��d��|jjtjtj���}	d}
tjd}t|�}g}
g}g}g}g}g}g}g}|D�]}|	D]�}|�|j|j|j��r�|j}d}|j}|j}|jdks�|jdkr�t j�t j|kt j!�"d���d	�}g}
|D]}|j#d
|j$}||jkr�|
�%|�q�|j�r$z|�&|j�}WnCt'�yt(�)d|jd|jd
t*|j��|j}Yn#t+�y#t(�)d|jd|jd
t*|j��|j}Ynwd}||||j,|d�}|j,dk�r:|
�%|�|j,dk�rF|�%|�n;|j,dk�rR|�%|�n/|j,dk�r^|�%|�n#|j,dk�rj|�%|�n|j,dk�rv|�%|�n|j,dk�r�|�%|�|	�-|�nq�q�t.|	�dk�r�|	D]j}|j}d}|j}d}|j�r�z|�&|j�}WnCt'�y�t(�)d|jd|jd
t*|j��|j}Yn#t+�y�t(�)d|jd|jd
t*|j��|j}Ynwd}|||d|d�}|�%|��q�ddl/m0}|�1tj||j�} d}!ddl2m3}"|"�rF|"j4�rF|"j5}#|#�r>ddlm6}$|$j�|$j|#k��	�}%|%�r=|%j7�r=|%j7}!n|"j8dk�rFd}!t9�:tjt;j<t=j>t?|�t@d||!|j7||
||||||||
| d�WStA�y�t(�)tB�C��t(�Dd�EtjF��tGtHd �d!�tItJd"��YSw)#Nr3rzrAr�rWr�r�Fr�rPz!Error decrypting field value for z.. Possibly an older form lead. Defaulting to: z. Lead id: )rFr�r��categoryrA�personal�application�address�	financial�vehicle�family�
employmentr�
miscellaneousr}rr�r�r�zform_leads_edit.jinja2)r�r�r�r��personal_fields�application_fields�address_fields�financial_fields�vehicle_fields�
family_fields�employment_fields�miscellaneous_fieldsr(r�r�r�rlr�)Krrnrorpr�r{rsrur�rvr/r�rtrr�r�r�rnr�r�rrFrpr r�r�rXrYr'r�r�rAr5r�rqr�r�r�rar[r�rLr�rIrr%rQr�r~�1get_allowed_service_providers_with_form_log_countr�r�r�r�r�r�r�r2rIr0rJr1�VIEWrr
rGrMrNr�rKr�rrwrr)&r�rnrxr{r�r�r�r�r�r�r(r�r^�personal_field_list�application_field_list�address_field_list�financial_field_list�vehicle_field_list�family_field_list�employment_field_list�miscellaneous_field_listr�r[rFr��field_display_name�field_positionr�r�r��
updated_fieldr~r�r�r�r�r�r�rBrBrD�form_leads_edit�sl���
��
����



��

�(
(
��


��5��
��
���������r*c
Cs|tj}tj}|rtj}tj�tj|ktj|k���}|j	}t
j�|j	t
j	k���}tj�tj
|k��|tj|jjkf��d���}tjd}t|�}ddlm}	|	j�|	j|jk���}
|D�]}tj�d|jd�}|�r]||_|jdks�|jdks�|jd	kr�|j|
_n�|jd
ks�|jdkr�|j|
_n�|jdks�|jd
ks�|jdks�|jdks�|jdkr�t |j�dkr�|j�!dd��!dd��!dd�|_n�|jdks�|jdkr�|j|
_"n�|jdks�|jdkr�|j|
_#ns|jdks�|jdkr�|j|
_$nd|jdks�|jdk�r|j|
_%nT|jdk�r
|j|
_&nI|jdk�s|jdk�s|jd k�r$|j|
_'n2|jd!k�s0|jd"k�r5|j|
_(n!|jd#k�sA|jd$k�rF|j|
_)n|jd%k�sR|jd&k�rV|j|
_*t+|j�|_q^d|_q^t,j,�-�j!t.j/d'�|_0t,j,�-�j!t.j/d'�|
_0z!t1j2�3�t4�5tjt6j7t8j9t|�t:t;d(�d)�t<t=d*|d+��WSt>�y�t?�@tA�B��t1j2�C�t:t;d,�d-�Ynwt<t=d.|d/��S)0NrArWr3r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrPrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�)�tzinfoz,The form lead has been updated successfully.r;zform_leads.leads_list)r�r<rlrr)Drrnrorprrsrur�r�r�r�rnr�r�rrFrpr�rtrXrYr'r�r�r�rvrr�rr�r�r�rQrr�r�r�r�r�r�r�r�r�r_rG�utcnow�pytz�UTCrdr#rrHr2rIr0rJr1rKrrwrrrGr�rLrMrNrO)
r�rnrxr�r�r�r�r�r^r�r�r[r\rBrBrD�form_leads_update�	s���
����
�



 �




$




�r/z#/form_leads/<int:lead_id>/leads/docc	Cs\tj}tj}|rtj}	tj�tj|ktj|k���}|sdSt	j�|j
t	j
k���}tj�tj
|k��|tj|jjkf��d��|jjtjtj���}tjd}tj��}|�d�}tjd}	tjd}
t�}|j|dd�|��}d	|�d
�_ |�|�t!j"|_#|jddd�|��t$j%d
}
t&|
�}|D]c}|jdkr�|jdkr�|��}|jr�d	|�d�'|j��_ nd	|�t(|j�d�_ z|jdur�|�)|j�|_Wn%t*y�t+�,dt(|j��Ynt-y�t+�,dt(|j��Ynw|�|j�q�|jddd�|��|�|	�|��|��}d	|�|
�_ t.�}|�/|�|�0d�t1|d	dd�S)N�r�r�rA�heading�	%b, %d %Y�notes�footerr))�levelTzdate: zForm Lead Information:r3rWr�zlead-idz{}: z: zDError decrypting field value. Possibly an older form lead. Lead id: zAdditional Notes:rzform_lead.docx)�
as_attachment�attachment_filename)2rrnrorprrsrur�rvr�r�rnr�r�rrFrpr�r r�r�rtrr�rGrr�r�r�add_heading�
add_paragraph�add_run�boldr�RIGHT�	alignmentrXrYr'rKr�rar[r�rLrIr�save�seekr)r�rnrxr�r�r�r1r��	today_strr3r4�document�
document_dater�r^r[�document_fields�footer_textr>rBrBrD�	leads_doc
s���
����
��
	






���


rEz#/form_leads/<int:lead_id>/leads/pdfc$Cs�tj}tj}tjj}d}d}d}|rtj}tj�	tj|ktj
|k���}|s(dSddlm
}m}	|j�	|j
|jk|j|jk���}
|
rO|	j�	|	j|jk���}tj�	tj
|jk���}tj�	|jtjk���}tj�	tj|k��|tj|jjkf��d��|jjtjtj���}
d}d}d}d}g}|
D�]}t|jt|j��}|
�r<|
jr�|jdks�|jdkr�|
j|_n�|
j r�|jd	ks�|jd
kr�|
j |_nu|
j!r�|jdks�|jdkr�|
j!|_nc|
j"r�|jd
ks�|jdks�|jdkr�|
j"|_nL|
j#�r|jdks�|jdk�r|
j#|_n8|
j$�r|jdk�s|jdk�r|
j$|_n#|
j%�r.|jdk�s)|jdk�r.|
j%|_n|
j&�r<|jdk�r<|
j&|_|�'|�|jdk�sS|jdk�sS|jdk�r`|j}t(|�dk�r_d}q�|jdk�sr|jdk�sr|jdk�r|j}t(|�dk�r~d}q�|jdk�s�|jd k�r�|j}t(|�dk�r�d}q�|jd!k�s�|jd"k�r�|j}t(|�dk�r�d}q�tj�	t)tj|ktj�*gd#������}tj�	t)tj|ktj�*d$d%g�����}tj�	t)tj|kt+tj�*d&d'g�tj�*d(d)g�tj�*d*d+g�tj�*d,d-g�tj�*d.d/g�tj�*d0d1g�tj�*d2d3g�tj�*d4d5g������}tj�	t)tj|kt+tj�*d6d7g�tj�*d8d9g������}|�rCd:}nd}|�rKd:}nd}|�rSd:}n|�rYd:}nd}|�rad:}nd}dd;l,m-}|j�	|j
|jk���}t.j/�0�}|�1d<�}d=d>l2m3} | j�	t)| j|jk| j|k| j4�5d:����| j6�7����}!|!�r�t|!j8�}"nd?}"d@dAl9m:}#t;�<tj
t=j>t?j@t|�|#||jA|j||||||||||||"||j|�S)BNFr0r3)r��ContactVehiclerAr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r���unavailabler�r�r�r�r��cosignerdateofbirthfield�co_applicant_birthday)�cosignerbankruptcyfield�#co_applicant_bankruptcy_declaration�cosignerrepossessionfield�%co_applicant_repossession_declaration�cosigneramountowedfield�$co_applicant_load_amount_outstanding�cosignerbanknamefield�co_applicant_bank_name�cosignercheckingbalancefield�7co_applicant_checking_balancecosignersavingbalancefield�co_applicant_saving_balance�cosignerchildcarepaymentfield�co_applicant_child_care_payment�cosignerutilitiespaymentfield�co_applicant_utilities_payment�cosignerdownpaymentfield� co_applicant_down_payment_amount�cosignermaintenancepaymentfield� co_applicant_maintenance_payment�firstreferencenamefield�first_reference_namerdrcrbrarXrWr\r[�tradeinvehicletrimfield�trade_in_vehicle_trimrlrkrhrgrpro�sellerbusinessnamefield�seller_business_name�sellercontactnamefield�seller_contact_nameTrzr2rr�r�r))�generate_pdf)Brrnror�
user_agent�browserrprrsrur�rvr�r�rFr�rrr�r�rnr�r�rrFrpr�r r�r�rtrbr�r�r�r�r�r�r�r�r�rQr�in_rr�r{rGrr�r�r�r�r�rqrcrr�r+rfr2rIr0r�r1�PDFr�)$r�rnrx�browser_used�vehicle_info�contact_vehicle_info�contact_vehicler�r�rFr�r�r�r��	ss_number�dob_date�co_ssn�co_dob�decrypted_fieldsr[�decrypted_field�finance_fields�reference_fieldsr�vehicle_seller_fields�fin_info�reference_info�vehicle_seller_infor{r�r�r@r�r�r�rfrBrBrD�	leads_pdfb
s>��
��
������




$

 
 

$�$����
�
��������


���r{z!/api/form_leads/<int:id_>/autopaycCs tj}tj}|rtj}t||�Sr=)rrnrorp�form_leads_autopay_request)r�rnrxrBrBrD�!form_leads_autopay_request_actions

r}csLgd��tj�|jtjk���}tj�tj|jk��|tj	|j
j	kf��|j
jtj	tj
���}tdd�|D���i�|D]}|j
�|j	<q<t��fdd��D��}t|�}|s�g}t|�D]\�}|�sv|�t��fdd�|D�d�j�q]dd�|�d	fSt��d
��s�dtdd�|D�d�jd	fSt��d
��s�dtdd�|D�d�jd	fSt��d��s�dtdd�|D�d�jd	fStjd}	t|	�}
��d�rۈ�dd�}|
�|�}��d�r��dd�}
|
�|
�}i}tjd|d<�d�dd��dd�|d<�d�d�d��dd ���d!k�rd"nd#|�d$d%�t�d&d|�d'�d(ig�d)�d*d"d+�gt��d
���rCt��d
��ndd,��d-d���d.�d"d/�g��d0d�dk�r]d1n��d0�t��d2���rpt��d2��ndd,d3�d4��d5d���d6d�d7�d8�|d9<��d:d�}��d;���d<d ���d=k�r�d"nd#t|��r�t|�ndt��d>���r�t��d>��nd��d?���d@�t��d
���r�t �d
�ndt��d���r�t �d�nddA�|dB<��dCd���dDk�rF��dEd���dFd��dG��dd ���d!k�rd"nd#��dHd��d$d%�t�d&d��dId��d'�dJigdt��dK���r2t��dK��ndd,��dLd���dM�d"d/�gdN�	|dO<tjdP}tjdQ}|d}tdRd�|D�d�j
}t!�"|dS�#||�t$�}|�%�}tjdT�#||�}dUdVi}t&j'|t(�)|�|dW�}|j*dXk�r�t(�+|j,�-��}|dY|_.t/j0�1�|j,�-�|j*fS)ZN)�
loantypefieldr�r�r��privacypolicyfieldr�r�r��incomefieldrT�mileagefieldcss�|]}|jVqdSr=r�)rr�rBrBrD�	<genexpr>?s�z-form_leads_autopay_request.<locals>.<genexpr>c3s$�|]
}|�vo
�|dkVqdS)r�NrBr�)�form_fields_list�
mapped_fieldsrBrDr�Fs�"c3s"�|]}|j��kr|VqdSr=r�r})�idx�requiredFieldsrBrDr�Ls� r�zMissing required field(s): �, �r�z!Can not parse required field(s): cs��|]
}|jdkr|VqdS)r�Nr�r}rBrBrDr�P��rTcsr�)rTNr�r}rBrBrDr�Sr�r�csr�)r�Nr�r}rBrBrDr�Vr�rWr�r��AUTOPAY_APPSOURCE�applicationSourcer~zRefinance Auto�	RefinancezLease Purchase�Purchase�loanTyper�r�r�rryr�TF�/rz[-\s.]rr�r�r�)�street1r��current�Monthly�
employerfield�
titlefield)�salaryAmount�payFrequency�companyName�jobTitler��additionalincomesourcefield�None�additionalincomefield)�incomeSource�incomeAmountr�zDriver License�driverlicensetatefield�driverlicensefield)r�r�r�)rrr�	agreeHard�dobr��phones�	addresses�employments�otherIncome�identification�	applicant�grossAmtr\�vehicletypefield�new�payofffieldrXrZ)r[r�r��	payoffAmt�makeName�	modelName�vehicleYear�mileager�applicationtypefield�joint�cosignerfirstnamefield�cosignerlastnamefield�cosigneremailfieldrIr��cosignerphonefield�cosignermonthlyincomefield�cosigneremployerfield�cosignerpositionfield)	rrrr�r�r�r�r�r��coApplicant�AUTOPAY_SOURCE_KEY�AUTOPAY_SECRET_KEYcsr�)r�Nr�r}rBrBrDr��r�s{}{}�AUTOPAY_API_URL�content-typezapplication/json�rr����
autopayNumber)2r�rsrur�rnr�r�r�rrFrpr r�r�rtr�r�r��nextrr:rr;rXrYr'rarr�r�r��floatrM�hmacr�rKr9�	hexdigest�requests�postrr��status_coderE�content�decoder�r#rrH)r��lead_partnership_idr�r��u�has_all_fields_vals�has_all_fields�missing_fieldsr<r�r^rp�decrypt_dob�ss_no�
decrypt_ssrr��
source_key�
secret_keyr�r�hashed�	signature�urlr�r��resultrB)r�r�r�r�rDr|&s�	
��
����
"�





 
� �

�
� 
�

�
�
�



r|Fr�c.Csddlm}ddlm}m}	|	j�|	j|jk��	�}
|j�|j|
j
k��	�}tj�tj|jk��	�}t
j�t
j|jk���}
|
D�]}d}d}|jdksQ|jdkrVt|j�}|jdks`|jdkret|j�}|jdkst|jd	kst|jd
kryt|j�}|jdks�|jdkr�t|j�}|jd
ks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdkr�t|j�}|jdks�|jdk�rt|j�}|jdk�s
|jdk�rt|j�}|jdk�s|jd k�r#t|j�}|jd!k�s/|jd"k�r4t|j�}|jd#k�s@|jd$k�rEt|j�}q@t|�}z|�rS||d<n	d%|d<t�d&�Wnt�ylt�d'�Ynwz|�rv||d<nd(|d<Wnt�y�t�d)�Ynwz|�r�||d
<nd(|d
<Wnt�y�t�d*�Ynwz|�r�||d<nd(|d<Wnt�y�t�d+�Ynw|j|d,<t�d-�} |j�| ��d.�|d/<|j�| ��d.�|d0<|j|d1<|j|d2<|j �r|j d3t!|j�|d4<|j d5t!|j"�|d6<nt#d7|jd8d9�|d4<t#d:|j"d8d;�|d6<t#d<|jd8d9�d=|d><|�r4d?}!n|�rC|}!|!|d,<|!�sBd@}!n|j$d(k�rM|j$}!ndA}!|�r\g}"|"�%||��ndB|j&v�rog}"|"�%||j&dB��nd(}"|"�r�z4|�r�|du�s~ndC}||dD<dE}#ndF}#t'|#fdGdHi|��}$dIdJl(m)}%|%|"|j|jdK|!|$dL�Wnt�y�t�*t+�,��Yn
wt�dM�-|j��|
j|dN<|j|dO<|�r�|j|dP<n|!|dP<z|�r�||dQ<nd(|dQ<Wnt�y�t�dR�Ynwz|�r||d<nd(|d<Wnt�yt�dS�Ynwzqd(}&|�r(|d(k�r(dT||dU<n|�r=|�r=dT|dVdWdV||dU<nd(|dU<|du�r�|j"du�r�|j �r[|j dXt!|j"�}&nt#dY|j"d8d;�}&dZ|&}&|dUdu�r�t.|dU�d[k�r�|dUd\|&|dU<n|&|dU<Wnt�y�t�d]�Ynwz|�r�||d<nd(|d<Wnt�y�t�d^�Ynwz|�r�||d<nd(|d<Wnt�y�t�d_�Ynwz|�r�||d<nd(|d<Wnt�y�t�d`�Ynwz|�r�||d<nd(|d<Wnt�yt�da�Ynwz|�r||db<nd(|db<Wnt�y,t�dc�Ynwz|�r6||dd<nd(|dd<Wnt�yJt�de�Ynwz|�rT||df<nd(|df<Wnt�yht�dg�Ynwz|�rr||d<nd(|d<Wnt�y�t�dh�Ynwz|�r�||d!<nd(|d!<Wnt�y�t�di�Ynwz|�r�||dj<nd(|dj<Wnt�y�t�dk�Ynw|�s�g}'|�r�|'�%||��ndB|j/v�r�|'�%||j/dB��nd(}'|'du�r~t.|'�dIk�r~zyt0|jdKdl�}(|�r|�r	|jdK|}(|(�s|jdKd@}(d(|dm<dn|do<dIdpl1m2})m3}*|)j�|)j|j"k|)j|jk��	�}+|+�rS|+j4�rS|*j�|*j|+j4k��	�},|,�rSd8|do<|,j|dm<t'dti|��}-dIdJl(m)}%|%|'|j|(|-dr�WdSt�y}t�*t+�,��YdSwt�ds�-|j��dSdS)uNr3)�split_emailsr�r�r�r�r��phoner�r�r�r��vehicle_of_interest�vehiclefield�location�
locationfieldrSrTrWrXrYrZr]r^r[r\r_r`r�r�r�r�r�r�r�r�z(Verify through the link below)z,The firstname field is empty or non existingz The firstname field was not usedr�zThe lastname field was not usedzThe phone field was not usedzThe email field was not usedr�z
US/Easternz%crcrd�partner_logo�companyz/form_leads/�lead_urlz/contacts/contact/�lead_contact_urlrT)r��	_externalzcontacts.contact_lead_page)r�r��form_leads.form_editz	?tab=logs�lead_log_urlz%BuyerCall Automated Lead Export ErrorzLead Notificationz$New BuyerCall Form Lead Notificationr4zthe external service provider�external_providerzmail/failed_form_lead_postzmail/new_form_lead�ext�htmlr)�send_ses_emailz - )�
recipients�p_idr�r�z5No email addresses have been set for this form id: {}�vendor_namer�	form_type�full_vehiclezThe vehicle field was not usedzThe location field was not usedzThe lead is interested in: �
lead_commentsrPzat location:z/contacts/edit/zcontacts.contact_editzAccess lead in BuyerCall: r)z. zUThe lead comments field was not used due to no full or location or both field missingz#The vehicle year field was not usedz$The vehicle model field was not usedz#The vehicle make field was not usedz#The vehicle trim field was not used�vehicle_vinz"The vehicle vin field was not used�
vehicle_stockz$The vehicle stock field was not usedrzThe street field was not usedzThe city field was not usedzThe state field was not used�postal_codez"The postal code field was not usedz
ADF Form Lead�
campaign_nameF�campaign_exists)r��	Campaigns�mail/adf_form_lead)r�r�r�r"z9No ADF email addresses have been set for this form id: {})r�)5�widgets.modelsr�r�r�r{rsrur�rnrvr�rrr�r�r�rtrFrbr��varsr�r�rGr�r-�timezonerc�
astimezoner�rd�logor��partner_urlr�r�rr7r�rCr�buyercall.lib.util_ses_emailr�rLrMrNrKrQrDrwr�r�r��campaign_id).r��error_occurredr�r2�conditional_subject_line�conditional_emails�conditional_adf_emailsr�r�r{rHrg�lead_notificationsr��
lead_fieldr�r�r�r�r�r�rSrWrYr]r�r��streetr�r�r��ctx�eastern�subject_textr4�email_template�html_email_templater�r��
adf_emails�adf_subjectr�r�r�rQ�adf_email_templaterBrBrD�send_notifications�sF

















�

��
��
��
��



�
��


��
�� ��
��
��
��
��
��
��
��
��
��
��

��
��
���rz(/forms/auto_email_response/<int:form_id>cCsztj�t��tj|k���}tj�	d�}tj�	d�}t
�d�|��||_
||_tj��ttd�d�ttd|jd��S)Nr�r�zThe subject is: {}z7The auto respond email template was saved successfully.r;r�r)r#rrsrrrur�rvrr�rr�r�rKr�r�rHrrwrr)r�r�r�r�rBrBrD�auto_email_response
s
�
rz&/forms/auto_sms_response/<int:form_id>cCsjtj�t��tj|k���}tj�	d�}tj�	d�}||_
||_tj��t
td�d�ttd|jd��S)N�phoneOptionsr�z<The auto text message reply template was saved successfully.r;r�r)r#rrsrrrur�rvrr�rr�r�rHrrwrr)r�r�r��message_bodyrBrBrD�auto_sms_response4
s
�
rzJ/api/form_leads/<int:id_>/external_api_provider/<int:service_provider_id_>cCs"tj}tj}|rtj}t|||�Sr=)rrnrorp�determine_external_api_request)r��service_provider_id_rnrxrBrBrD�'form_leads_external_provider_api_actionI
s
rcCs�ddlm}m}|j�|j|k|j|k|jdk���}|�r�d}|j�|j	|jk���}|�r�|j
}|�r�t|�dk�r�|��}d}	t
j�t
j|kt
j	|k���}
|
durct�||d||j	|j
�dS|dkr�t�d	|d
t|�dt|��t|
|�\}}t�|||||j	|j
�|dkr�t|
d|j
�t|d
�|fS|��dk�rt�d	|d
t|�dt|��t|
||�\}}}	|dkr�t|
d|j
�n"ddlm}
|
�|
j|
j	|j	|	�|	dur�|	dkr�d|	d}nd}t�|||||j	|j
�t|d
�|fS|��dk�rjt�d	|d
t|�dt|��t|
||�\}}}	|dk�r3t|
d|j
�n$ddlm}
|
�|
j|
j	|j	|	�|	du�rU|	dk�rUd|	d}nd}t�|||||j	|j
�t|d
�|fS|��dk�r�t�d	|d
t|�dt|��t|
||�\}}}	|dk�r�t|
d|j
�n$ddlm}
|
�|
j|
j	|j	|	�|	du�r�|	dk�r�d|	d}nd}t�|||||j	|j
�t|d
�|fSt�d|dt|�d�dSt�dt|��dSdSdS)Nr3)r�rTr�rr�)zLead does not exist.r��autopayz"External API request for provider z& detected, for partnership account ID z
 for lead ID r�)r�zams 2000r�z8The submission was successful and returned customer id; �.zThe submission was successful.z
ams evolutionz
neo verify��z4External API enabled but no provider name match for z, partnership account ID: zGExternal API enabled but no provider detected, partnership account ID: )r�r�rrsrurnrr9rvr�r�rQr�r�one_or_noner.�creater�r/r�r|rr
�form_leads_ams_2000_requestr�r��set_external_api_form_lead_postr�� form_leads_ams_evolution_request�form_leads_neo_verify_requestrL)r�rn�service_provider_idr�r�partnership_provider_tie�formatted_messager��
provider_name�external_lead_idr�r��coder�rBrBrDrW
s`�����������������
��������
�
�������
�
��
��
����rcCstjd}d}|jdusC|jdksC|jdusC|jdksC|jdusC|jdksC|jdusC|jdksC|jdusC|jdksC|jdusC|jdkrPt�	dt
|�d�dSt|�}|�|j�}|�|j�}|�|j�}t
||||�\}	}
}|
dkr�|dur�|dkr�t|||�\}
}	}|
|	|fS)NrWr�zGExternal API enabled but no API details found, partnership account ID: r)r�zAPI details incomplete.Nr�)rXrYr��	client_id�secret�username�password�	token_urlr�rLr�r'ra�!form_leads_ams_2000_token_request� form_leads_ams_2000_data_request)r�rn�external_provider_tier�r$r^�api_username�api_password�
api_secretr�r%�
token_datarBrBrDr�
s&

rcCs�d}d}|j|dd||d�}ddi}tj|j||d�}|jdkr7t�|j���}	|	dur6d	|	vr6|	d	}d
}nt�|j���}
d|
vrH|
d}nd|
vrP|
d}||j|fS)
Nr�zError retrieving token.�!application/x-www-form-urlencodedr))r&�
client_secret�contentType�
grant_typer)r(r�r�r��access_tokenzToken successfully retrieved.�
viewErrorsr�)	r&r�r�r*r�rrEr�r�)r�r.r/r0�result_tokenr��	handshake�
token_headers�token_responser��
error_textrBrBrDr+s4�	�
�
r+cCs"d}dddd�}tj�tj|jk���}ddlm}m}|�rtj��}�z�|D]�}t�	|j
|�}|r�|D]�}	|	|vr�||	}
t|j�}|
|vr�||
}|dur�|dur�|�
�}|dkr_|}nV|dkr}|
d	ksk|
d
kr||dur||dkr|t�|
d|�n8t|�r�t|�}
|dur�d}n)|dur�|
dks�|
d
kr�|dur�|dkr�t�|
d|�t|�|
kr�|d|
�}|||
<n|||
<nq5q(d|vr�|ddks�d|vr�t|d�}d|vr�|ddks�d|vr�t|d�}d|vr�|ddks�d|v�rd|v�r|ddk�r
|d|d<nt|d�}nt|d�}d
|v�r'|d
dk�r't�d�n�d
|v�s6d|v�s6d|v�r�d
|v�rG|d
dk�rGt|d�}d|v�rW|ddk�rWd|d<d|v�rg|ddk�rgd|d<d|v�rz|ddk�s|ddu�sd|v�r�d|v�r�|ddk�r�|d|d<n|ddk�r�|d|d<nt|d�}nt|d�}d|v�r�|ddk�s�|ddu�s�d|v�r�d|v�r�|ddk�r�|d|d<n|ddk�r�|d|d<nt|d�}nt|d�}Wnt�yt|t���}Ynwt�d�t|d�}||d�S) Nr��	000000000rH)�CustomerSSN�CustomerFirstName�CustomerLastNamer))�automaster_fields�automaster_field_details�decimalrG�CoApplicantDateOfBirth�CustomerDateOfBirthz - Decrypted value r>�CoApplicantSSNrzApplicant SSN not provided.�LotzLot ID not provided.�CustomerDLState�CustomerAddressStatez,Customer drivers license state not provided.zHNo co-applicant SSN found. No co-applicant validation will be performed.�CoApplicantFirstName�CoApplicantLastNamezCo-applicant SSN not provided.�CoApplicantDLState�CoApplicantStatez0Co-applicant drivers license state not provided.z Co-applicant state not provided.zNo lead form leads found.z
No lead found)r�rL)r�rsrur�r�rtrArBr/�get_all_related_fieldsrFrbr�r�r�rLrOrMrQrTr�rGrMrN)r�rS�	data_bodyr�rArB�field_definition_listr[�
field_list�check_field�new_key�	new_value�
value_details�
string_lengthrBrBrD�generate_ams_2000_request_body8s���

 � 
��%








�




��

�rWc
Csnd}t|�}d}d}|durt|d�dkr|d}|dur�dd|d�}tj|j||d	�}|jd
krcd|_|j�dd�}|durY|durYt	�
d
t|��t|�|_t
j��nHt	�
dt|��n>z#t�|j���}	t	�d�|	��d|	vr}|	d}nd|	vr�|	d}Wnty�}
zt	�d�|
��WYd}
~
nd}
~
ww|j||fSt	�
d|d�d|d|fS)NzError posting form data.r�rLrr�r2zBearer )r��
Authorizationr�r�zutf-8�"zresult id: z!No DealerAppsID found. Response: zThe AMS error is:{}r7r�zThe error is {}z/Error building automaster request body. Error: r�)rWrQr�r�r�r��encodingr"rr�rLr�r�r#rrHrrEr�r�r�rKrG)�token_resultr�r�rO�data_generatedr�r$�data_headersr�r<rCrBrBrDr,�sJ��


���r,c	Cs�d}d}d}tj�tj|jk���}gd�}|�rgtj��}t�}|D�]}t�|j	|�}	t
|j�}
d|	vrAt|
�dkrA|�
|
�d|	vrPt|
�dkrP|�|
�d|	vr�t|
�dkr�z&d}|
�d	d
�}
t|
|�rk|
}n
tj�|
d��d�}|�|�|�d�Wnt|d
t|
�d�}Yd|	vr�t|
�dkr�|�|
�d|	vr�t|
�dkr�|�|
�d|	vr�t|
�dkr�|�|
�d|	vr�t|
�dkr�|�|
�|�d�d|	vr�t|
�dkr�|�|
�|�d�d|	vr�t|
�dkr�|�|
�|�d�d|	v�rt|
�dk�r|�|
�|�d�d|	v�r t|
�dk�r |�|
�d|	v�r6t|
�dk�r6|� |
�|�d�d|	v�rGt|
�dk�rG|�!|
�d|	v�r]t|
�dk�r]|�"|
�|�d�d |	v�r|t|
�dk�r||
�d
d��d!d��d	d�}
|�#|
�d"|	v�r�t|
�dk�r�|�$|
�d#|	v�r�t|
�dk�r�|�%|
�d$|	v�r�t|
�dk�r�z|
�d	d
�}
tj�|
d��d�}|�&|�Wnt|d%t|
�d�}Yd&|	v�r�t|
�dk�r�|�'|
�d'|	v�r�t|
�dk�r�|�(|
�d(|	v�rt|
�dk�r|�)|
�d)|	v�rt|
�dk�r|�*|
�d*|	v�r(t|
�dk�r(|�+|
�d+}d,|	v�r9t|
�dk�r9|�,|
�d-|	v�rLt|
�dk�rL|�-|
�d+}d.|	v�r]t|
�dk�r]|�.|
�d/|	v�rnt|
�dk�rn|�/|
�d0|	v�rt|
�dk�r|�0|
�d1|	v�r�t|
�dk�r�|�1|
�d2|	v�r�t|
�dk�r�|
�d
d��d!d��d	d�}
|�2|
�d3|	v�r�t|
�dk�r�|�3|
�d4|	v�r�t|
�dk�r�|�4|
�d5|	v�r�t|
�dk�r�|�5|
�d6|	v�r�t|
�dk�r�|�6|
�d7|	v�rt|
�dk�r|�7|
�d8|	v�rt|
�dk�r|�8|
�d+}d9|	v�r(t|
�dk�r(|�9|
�q#|�s1|�8d:�t|�dk�rbd}t|�}d;}|D]}||7}|d<7}||k�rW|d=7}�qB|d>7}�qBt||�}||d?�SdS)@Nr�F)�Birthday�Email�	Firstname�Lastname�State�Zip�
Home Phoner�rr�r�r�r�rz%m-%d-%Yr^zInvalid Application Birthday z, must be in YYYY-mm-dd format.�mobile_phoner��driver_licenser�r_r�r`r�rdr�ra�
middlenamer�rb�
work_phoner�rcr�rP�co_applicant_address_1�co_applicant_address_2rJzInvalid Co-Applicant Birthday �co_applicant_mobilephone�co_applicant_city�co_applicant_driver_license�co_applicant_email�co_applicant_firstnameT�co_applicant_phonenumber�co_applicant_lastname�co_applicant_middlename�co_applicant_state�co_applicant_work_phone�co_applicant_zipr�rWrYrSr[r_�down_payment_amountr�z0.000zRequired fields are missing: r)rr�)�xmlrL):r�rsrur�r�rtr/rrNrFrbr�rQr�r�rrLrGrHr�r�r%rTr�rer��drivers_licenser�r�r�r�rgr�rhr�r�rirjrJ�co_applicant_mobile_phonerlrmrnrorprqrrrsrtrur�rWrYrSr[r_rvr�)r�rS�co_applicant_present�down_payment_presentr��required_applicant_fieldsrP�xml_lead_docr[rQr��required_format�final_field_value�
formatted_ssn�	cur_countr#r�rBrBrD�#generate_ams_evolution_request_body�sT�




























































	












�


���r�cCs�zt|d�}Wnt�dt���YdSt|�}t|d�dks)|ddur0d|ddfSz6|d}|�t|j��|�	t|j	��|�
t|j
��d	}d
}|�|�|��}|�|�\}	}
}|	|
|fWSt�dt���YdS)
Nr��Error initiating client: �r�zError initiating client.r�rLrrwr�r�z<Payload><![CDATA[z
]]></Payload>�Error posting form lead. �r�r�r�)rr�rLrMrNr�rQr(rbr)r&r�)r�rnr-rKr\r}�	cdata_pre�
cdata_post�post_requestr%r�r$rBrBrDr�s*rcCs�d}tj�tj|jk���}d}d}d}|r0tj��}t||�}|��\}}|dur0|�	�\}}|rA|durA|durA|�
�|d�S|dd�S)Nr�FT)�objrLzError processing lead.)r�rsrur�r�rtr/r�process_lead�build_lead_object�get_lead_object)r�rSr�r
�	processed�builtrPrBrBrD� generate_neo_verify_request_body�s,�

��r�cCs�zt|d�}Wnt�dt���YdSt|�}t|d�dks)|ddur0d|ddfSz|�|d�\}}}|||fWSt�d	t���Yd
S)Nr�r�r�rLrr�r�r�r�r�)rr�rLrMrNr�rQr�)r�rnr-rKr\r%r�r$rBrBrDr�srz*/form_leads/<int:pa_id>/generate_leads/pdfcs�d�ddlm}|j�|j|k���}|stddd�Sdd�tj�t	j��t	j
|k���D���rb��fd	d�tt
���d
��D�}|D]}d
dlm}|�|j|j|�qGt|jt
��d�St|jdd�S)N�r3rzr�r)r��form_lead_countcSr�rBr�)r�flrBrBrDr#r�z&generate_lead_pdfs.<locals>.<listcomp>cs$g|]}�|�|d���qS)r)rBr�r=�
list_max_sizerBrDr's$r))�+generate_partnership_account_form_lead_pdfs)r�r{rsrur�rvr
r#rrrnrtrrQr+r�r.r�)�pa_idr{r��form_lead_lists�form_list_partr�rBr�rD�generate_lead_pdfss4��((��r�r=)Fr�FNNN)��loggingr�rM�
contextlibr�iorr��docxr�docx.enum.textrrGr�
flask_corsr�buyercall.lib.flask_mailplusrr-r��flaskr	r
rrr
rrrrrrrX�flask_loginrr�flask_babelrrw�buyercall.lib.util_dmsrrrr�
sqlalchemyrrr�sqlalchemy.ormrr�sqlalchemy.sql.expressionr r!�sqlalchemy.sqlr"�buyercall.extensionsr#r$�buyercall.lib.util_twilior%�buyercall.lib.util_bandwidthr&�buyercall.lib.util_cryptor'�$buyercall.blueprints.user.decoratorsr(�modelsr*rrr+rr,r�r-r�r.r/�$buyercall.blueprints.activity.modelsr0r1r2r�r4�
agents.modelsr5�widgets.routingr6r7r8r��hashlibr9r�r��filtersr:r;r<�__name__r=r�rErLrOrTr_rb�routeryr�r�r��exemptrr^rxr�r�r�rPr�r�r�rr*r/rEr{r}r|rrrrrrr+rWr,r�rr�rr�rBrBrBrD�<module>sV4
 	<!18CJyjLFSM4

�d
$"/X