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/reports/__pycache__/views.cpython-310.pyc
o

�we���@s�ddlZddlZddlmZmZmZmZmZm	Z	m
Z
mZmZddl
mZmZddlmZddlmZddlmZmZmZddlmZddlmZdd	lmZddlZdd
l m!Z!ddl"m#Z#ddl$m%Z%m&Z&dd
l'm(Z(ede)dd�Z*dd�Z+e*j,ddgd�edd���Z-e*j,ddgd�ee+dd�dd����Z.e*j,dddgd�dd ��Z/d!d"�Z0e*j,d#dgd�ee+d$d�d%d&����Z1e*j,d'dgd�d(d)��Z2e*j,d*ddgd�d+d,��Z3dS)-�N)	�	Blueprint�flash�
make_response�render_template�request�redirect�url_for�current_app�jsonify)�login_required�current_user��wraps��gettext)�text�func�and_)�db)�closing)�StringIO)�date)�format_date_to_excel)�Report�
ReportUserTie)�_try_renderer_template�reports�	templates)�template_foldercs�fdd�}|S)Ncst����fdd��}|S)NcsLtdur
ttdtjd��S�fdd�tjD�}t|�dkrdS�|i|��S)N�login)�nextcsg|]
}|jj�kr|�qS���report�name��.0�link��report_namer!�D/home/arjun/projects/buyercall/buyercall/blueprints/reports/views.py�
<listcomp>szRaccess_required.<locals>.decorator.<locals>.decorated_function.<locals>.<listcomp>r)zNo access to reporti�)rrrr�urlr�len)�args�kwargs�links)�fr)r!r*�decorated_functionsz>access_required.<locals>.decorator.<locals>.decorated_functionr
)r1r2r()r1r*�	decoratorsz"access_required.<locals>.decoratorr!)r)r3r!r(r*�access_requireds
r4z/reports�GET)�methodsc
Cs
tdd�tjD��}t|�dkrttd�d�ttd��Sz
tj	�
tjdk���}Wn#t
yM}zt�d�t����ttd	�d�WYd}~nd}~wwztj	�
tjtjk|jtjk���}Wnt
y}}zt�d�t����WYd}~nd}~wwtd
||d�S)Ncss�|]}|jjVqdS)Nr"r%r!r!r*�	<genexpr>*s�zall_reports.<locals>.<genexpr>rz-No report were found. Please contact support.�dangerz
user.settings�Daily Leads ReportzThe report does not exist {}�The report does not exist.zall_reports.jinja2)�reports_list�form)�listrrr-r�_rrr�query�filterr$�first�	Exception�log�error�format�	traceback�
format_excr�user_id�id�	report_idr)r;�daily_report�er<r!r!r*�all_reports's(��� ��rMz/reports/listofinterest/csvzList of Interestr(cCs:gd�}dtji}td�}tj��}|�||�}d}tt���t}t	�
|�}|�|�|D]@}|d7}||j|j
|j|j|j|j|j|jt|j�t|j�t|j�|j|j|j|j|j|d|d|d|d	g}	|�|	�q,d
�t��� d��}
t!|�"��}d|j#d
<d�|
�|j#d<|Wd�S1s�wYdS)N)�#rI�	firstname�lastname�email�customer_phonenumber�cu_phone�questionzduration (sec)�	starttime�endtime�
created_on�	call_type�status�progress_status�
recording_url�notes�agent_firstname�agent_lastname�widget_friendly_name�inbound_friendly_name�partnership_account_ida�SELECT result.id
        ,result.firstname
        ,result.lastname
        ,result.phonenumber
        ,result.email
        ,result.my_phone
        ,result.question
        ,result.duration
        ,result.starttime
        ,result.endtime
        ,result.created_on
        ,result.call_type
        ,result.STATUS
        ,result.progress_status
        ,result.recording_url
        ,result.notes
        ,"agents.firstname"
        ,"agents.lastname"
        ,"widgets.name"
        ,"phonenumbers.friendly_name"
    FROM (
        SELECT leads.id
            ,leads.firstname
            ,leads.lastname
            ,leads.phonenumber
            ,leads.email
            ,leads.my_phone
            ,leads.question
            ,leads.duration
            ,leads.starttime
            ,leads.endtime
            ,leads.created_on
            ,leads.call_type
            ,leads.STATUS
            ,leads.progress_status
            ,leads.recording_url
            ,leads.notes
            ,agents.firstname as "agents.firstname"
            ,agents.lastname as "agents.lastname"
            ,widgets.NAME as "widgets.name"
            ,phonenumbers.friendly_name as "phonenumbers.friendly_name"
            ,ROW_NUMBER() OVER (
                PARTITION BY leads.phonenumber ORDER BY leads.id ASC
                ) AS rk
        FROM leads
        LEFT OUTER JOIN agents ON (leads.agent_id = agents.id)
        LEFT OUTER JOIN widgets ON (leads.widget_guid = widgets.guid)
        LEFT OUTER JOIN phonenumbers ON (leads.inbound_id = phonenumbers.id)
        WHERE leads.partnership_account_id = :partnership_account_id
            AND leads.phonenumber NOT IN (
                SELECT leads.phonenumber
                FROM leads
                INNER JOIN widgets ON leads.widget_guid = widgets.guid
                WHERE widgets.NAME LIKE '%Application%'
                )
        ) result
        WHERE rk = 1;r�zagents.firstnamezagents.lastnamezwidgets.namezphonenumbers.friendly_namez,Buyercall Report - List of Interest - {}.csvz%Y-%m-%dztext/csvzContent-Typezattachment; filename="{}"zContent-Disposition)$rrarr�engine�connect�executerr�csv�writer�writerowrIrOrPrQ�phonenumber�my_phonerT�durationrrUrVrWrXrYrZr[r\rEr�today�strftimer�getvalue�headers)�header�paramsr?�
connection�leads�row_no�outrg�lead�csv_row�filename�respr!r!r*�list_of_interest_csv@s<

:

�
�
�$�rzz/reports/daily_report�POSTc
Csz
tj�tjdk���}Wn#ty0}zt�d�t	�
���ttd�d�WYd}~nd}~wwt
j�t
jtjk|jt
jk���}dtj�dd�i|_ztj��ttd�d	�ttd
��WSty�}zt�t	�
��tj��ttd�d�WYd}~td�Sd}~ww)
Nr9zCannot add or call lead: {}r:r8�emails�recipient_emails�z2The email address(es) has been added successfully.�success�reports.all_reportszError saving form information.z_daily_report_modal.jinja2)rr?r@r$rArBrCrDrErFrGrr>rrHrrIrJrr<�getr|r�session�commitrr�rollbackr)rKrLr<r!r!r*rK�s,���

��rKc�Cs$ddlm}ddlm}ddlm}m}ddlm}ddl	m
}ddlm}	m
}
m}ddlm}dd	lm}
dd
lm}ddlm}ddl}tpJ|�}|t_d
d�}|����0|j�|j|k���}|j�|j|j k���}|�!��"�}|�#�j$dd��"�}|�!�j%}|�!�j%d}|�!�j&}|�!�j&d}|�!�j'}|�!�j'd}|�!�j$dd��"�}|j�t(|j)|k|j*|k���+�}d}d} d}!d}"d}#d}$d}%d}&d}'d}(d})d}*d}+d},d}-d}.d}/d}0d}1d}2d}3d}4d}5d}6d}7|
j�|
j)|k��+�}8t,�}9d}:|8D]a};d}<d}=|;j-D]}>|>j*�.d�}?|�/|?��"�}@|@|k�r%|<d}<d}:�q|;j0D]!}A|Aj*�.d�}B|�/|B��"�}C|C|k�rJ|Aj1dk�rJ|=d}=d}:�q*gd�}D|;j2|<|=g}Et3t4|D|E��}F|9�5|F��q|j�t(|j)|k|j6�7d����+�}Gt,�}Hd}I|GD]�}Jd}Kd}Ld}Md}N|Jj8D]4}O|Oj*�.d�}P|�/|P��"�}Q|Q|k�r�|Oj1dk�r�|Kd}Kd}I�q�|Q|k�r�|Oj1dk�r�|Ld}Ld}I�q�|Jj9D]4}R|Rj*�.d�}S|�/|S��"�}T|T|k�r�|Rj:dk�r�|Md}Md}I�q�|T|k�r�|Rj:dk�r�|Nd}Nd}I�q�gd�}U|Jj;|K|L|M|Ng}Vt3t4|U|V��}W|H�5|W��q}|j�|j)|k��+�}Xt,�}Yd}Z|XD]9}[d}\|[j8D]}]|]j*�.d�}^|�/|^��"�}_|_|k�rD|\d}\d}Z�q*ddg}`|[j<|\g}at3t4|`|a��}b|Y�5|b��q#	t,�}ct,�}d|D�]�}e|ej*�.d�}f|�/|f��"�}g|�/|g�j%}h|�/|g�j&}i|�/|g�j'}j|g|k�rG|j|k�rG|d}|j�|j=|ejk��>|j*�?����}k|	j�|	j=|ejk��>|	j*�?����}l|j�|j=|ejk��>|j*�?����}m|k�r|m�r|l�r|kj*|mj*k�r�|kj*|lj*k�r�|&d}&n�|mj*|kj*k�r�|mj*|lj*k�r�|*d}*n�|lj*|kj*k�r
|lj*|mj*k�r
|(d}(nq|k�r,|m�r,|kj*|mj*k�r |&d}&n_|mj*|kj*k�r+|*d}*nS|k�rJ|l�rJ|kj*|lj*k�r>|&d}&nA|lj*|kj*k�rI|(d}(n5|m�rh|l�rh|mj*|lj*k�r\|*d}*n#|lj*|mj*k�rg|(d}(n|k�rp|&d}&n|m�rx|*d}*n|l�r|(d}(|j�t(|j=|ejk|j@dk���tA�B|j*�|k���}n|j�|j=|ejk��tA�B|j*�|k��+�}o|n�r�|,d},d}pn@|o�r�d}q|oD]}r|rj@dk�r�|qd}qtC|r�|rj@d k�r�|qd}qtC|r��q�|qdk�r�|,d},d}pn
|-d}-d!}pn|-d}-d!}p|ejDd"v�r|.d}.n|/d}/	d}s|ej@|cv�rG|j�t(|j@|ej@k|j)|k���tA�B|j*�|k��E�}s|c�5|ej@�d#d$g}t|ej@|sg}ut3t4|t|u��}v|d�5|v�|g|k�r,|j|k�r,| d} |j�|j=|ejk���}k|	j�|	j=|ejk���}l|j�|j=|ejk���}m|k�r�|m�r�|l�r�|kj*|mj*k�r�|kj*|lj*k�r�|'d}'n�|mj*|kj*k�r�|mj*|lj*k�r�|+d}+n�|lj*|kj*k�r�|lj*|mj*k�r�|)d})nq|k�r�|m�r�|kj*|mj*k�r�|'d}'n_|mj*|kj*k�r�|+d}+nS|k�r�|l�r�|kj*|lj*k�r�|'d}'nA|lj*|kj*k�r�|)d})n5|m�r|l�r|mj*|lj*k�r	|+d}+n#|lj*|mj*k�r|)d})n|k�r|'d}'n|m�r%|+d}+n|l�r,|)d})|h|k�r:|j|k�r:|!d}!|h|k�rH|j|k�rH|"d}"|i|k�rV|j|k�rV|#d}#|i|k�rd|j|k�rd|$d}$|id%k�rr|j|k�rr|%d}%|j�|j=|ejk��tA�B|j*�|k��+�}w|wD]4}A|Aj@dk�s�|Aj@d&k�r�|0d}0n
|Aj@d'k�s�|1d}1|Aj1dk�r�|2d}2�q�|Aj1dk�r�|3d}3�q�|j�|j=|ejk��tA�B|j*�|k��+�}x|xD]}r|rj@dk�r�|4d}4�q�|rj@d k�r�|5d}5�q�|	j�|	j=|ejk��tA�B|	j*�|k��+�}y|yD](}[|
j�t(|
jF|[jk|
jGd)k����}z|z�r)|zjHd*k�r)|7d}7�q|6d}6�q�qf| dk�rHtItJ|�tJ| �tJ| �d+d�}{nd}{|"dk�ratItJ|!�tJ|"�tJ|"�d+d�}|nd}||%dk�rztItJ|#�tJ|%�tJ|%�d+d�}}nd}}|$dk�r�tItJ|#�tJ|$�tJ|$�d+d�}~nd}~|'dk�r�tItJ|&�tJ|'�tJ|'�d+d�}nd}|+dk�r�tItJ|*�tJ|+�tJ|+�d+d�}�nd}�|)dk�r�tItJ|(�tJ|)�tJ|)�d+d�}�nd}�||{�}�|||�}�||~�}�||�}�||��}�||��}�|{dk�rd,tK|{�}{||dk�rd,tK||�}||~dk�rd,tK|~�}~|dk�r$d,tK|�}|�dk�r/d,tK|��}�|�dk�r:d,tK|��}�d-|i}�|9|�d.<|:|�d/<|d|�d#<|H|�d0<|I|�d1<|Y|�d2<|Z|�d3<||�d4<||�d5<||�d6<|!|�d7<|#|�d8<|&|�d9<|*|�d:<|(|�d;<|,|�d<<|-|�d=<|.|�d><|/|�d?<|0|�d@<|1|�dA<|2|�dB<|3|�dC<|4|�dD<|5|�dE<|6|�dF<|7|�dG<| |�dH<|"|�dI<|$|�dJ<|%|�dK<|'|�dL<|+|�dM<|)|�dN<|{|�dO<|||�dP<|~|�dQ<|}|�dR<||�dS<|�|�dT<|�|�dU<|�|�dV<|�|�dW<|�|�dX<|�|�dY<|�|�dZ<|�|�d[<|jL|�d\<|jM|�d]<|jM|�d^<dd_lNmO}�|�j�t(|�jP|k|�jQ|k|�jR|k����}�d`|�jSv�r~||�jSd`�}�tT�Uda�V|���t,�}�|��W||�jSd`��db}�tX|�fdcddi|���}�zddelYmZ}�|�|�|jdf|�dg�Wnt[�y}}�z
tT�\t]�^��WYd}�~�nd}�~�ww	Wd�dS1�s�wYdS)hzk
            Return total daily reports .

            :return: Result of updating the records
            rr)�split_emails)�Partnership�PartnershipAccount)�Lead)�Contact)�FormLead�
FormLeadField�ExternalForm)�Message)�Agent)�Phone)�
create_appNcSs(|dkrd}|S|dkrd}|Sd}|S)Nrz#FF0000z#000z#008000r!)�value�colorr!r!r*�color_indicator�s��z*send_daily_report.<locals>.color_indicator�)�daysrb�F�Noz%Y-%m-%dT%H:%M:%SZ�Yes�outbound)�agent�
lead_count�outbound_callsF�inbound)�phone_number�in_calls�	out_calls�in_msgs�out_msgsr<�form_lead_count�	completed�yes�received�sent�no)�Noner��select�null�NULLznot selectedr~rYr��zin-progress�missed�ringing�privacypolicyfieldr~�d�+rs�agents�agent_leads_exist�phonenumbers�pn_leads_exist�forms�form_leads_exist�current_date�
current_month�	day_leads�
week_leads�month_leads�day_call_leads�day_message_leads�day_form_leads�day_completed_leads�day_missed_leads�day_not_assigned_leads�day_assigned_leads�day_completed_calls�day_missed_calls�day_inbound_calls�day_outbound_calls�day_inbound_msg�day_outbound_msg�day_partial_form�
day_full_form�day_before_leads�week_before_leads�month_before_leads�last_year_month_before_leads�day_before_call_leads�day_before_message_leads�day_before_form_leads�day_leads_diff�week_leads_diff�month_leads_diff�last_year_month_leads_diff�day_calls_diff�day_messages_diff�day_forms_diff�day_diff_style�week_diff_style�month_diff_style�day_calls_diff_style�day_messages_diff_style�day_forms_diff_style�partner_logo�company�account_name)rr|zThe split emails are: {}zmail/daily_leads�ext�html)�send_ses_emailzDaily Lead Report)�
recipients�p_id�subjectr�)_�flask_babelr�#buyercall.blueprints.widgets.modelsr��'buyercall.blueprints.partnership.modelsr�r��!buyercall.blueprints.leads.modelsr��$buyercall.blueprints.contacts.modelsr��&buyercall.blueprints.form_leads.modelsr�r�r��buyercall.blueprints.sms.modelsr��"buyercall.blueprints.agents.modelsr��(buyercall.blueprints.phonenumbers.modelsr��
buyercall.appr��pendulumr	r�app�app_contextr?r@rIrA�partnership_id�	yesterday�to_date_stringrl�subtract�week_of_year�month�yearrrarW�allr=�
contact_leadsrm�parser�rX�	full_name�dict�zip�append�is_deactivated�is_rs�messages�	direction�
friendly_name�display_name�
contact_id�order_by�ascrYr�DATE�print�agent_assigned�count�lead_id�field_id�field_value�round�float�str�logor$�#buyercall.blueprints.reports.modelsr�partnership_accounts_idrJrHr|rC�inforE�extendr�buyercall.lib.util_ses_emailr�rBrDrFrG)��pa_idrJrHr>r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��partner_account�partnerr��day_before_yesterday�current_week�
previous_weekr��previous_month�current_year�	last_year�limit_lead_count_datersr�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��
agent_listr��ar��out_call_count�l�contact_lead_date_transform�contact_lead_date�c�out_call_lead_date_transform�out_call_lead_date�a_keys�a_values�
agent_dictr��pn_listr��pr�r�r�r��pc�call_date_transform�	call_date�pm�msg_date_transform�msg_date�p_keys�p_values�pn_dictr��	form_listr�r1r��fl�form_lead_date_transform�form_lead_date�f_keys�f_values�	form_dict�statuses�status_listrv�lead_date_transform�	lead_date�	lead_week�
lead_month�	lead_year�callr<�message�completed_callr�same_day�complete_msg_chat�m�status_lead_count�s_keys�s_values�status_dict�
day_all_calls�day_all_messages�
day_all_forms�
form_fieldr�r�r�r�r�r�r�r�r�r�r�r�r��ctxrr#�
splited_emr|�templater�r�rLr!r!r*�send_daily_report�s�
	��


��

�
�
��
�
��

�

$��

�
�
�
�

���

��



�
�
�
�

�
��������

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


��
�������&�r^z9/reports/credit_service_provider_report/pdf/<int:user_id>zPartner Channel Account ReportcCs>|rddlm}|�|�}d|jiSttd�d�ttd��S)Nrb)�+generate_credit_service_provider_report_pdf�	result_idz:Unable to detect the your account. Please contact support.r8r�)�tasksr_�delayrIrr>rr)rHr_�resultr!r!r*�'credit_service_provider_accounts_reports

rdz8/reports/credit_service_provider_report/pdf/result/<_id>cCsXddlm}|t�}|�|�}|��r|jndf}||j|��|��|d�}t|�dfS)Nr)�create_celery_app)�task_id�task_status�ready�
successfulr���)	r�rer	�AsyncResultrhrcrYrir
)�_idre�celery�task_result�task_result_value�task_result_outputr!r!r*�3credit_service_provider_accounts_report_task_result
s
�rqz/reports/open_pdf/result/cCs0tjptjptj}ddlm}m}|||d��S)Nr)�HTML�
render_pdf)�string)rr.�json�data�flask_weasyprintrrrs)r.rrrsr!r!r*�'open_credit_service_provider_report_pdfsrx)4�loggingrCrF�flaskrrrrrrrr	r
�flask_loginrr�	functoolsrr�rr>�
sqlalchemyrrr�buyercall.extensionsr�
contextlibr�iorrf�datetimer�buyercall.lib.util_datetimerrrr�buyercall.lib.flask_mailplusr�__name__rr4�routerMrzrKr^rdrqrxr!r!r!r*�<module>sN,e
D