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/agents/__pycache__/endpoints.cpython-310.pyc
o

we-{�@s�ddlZddlmZmZmZddlmZmZddl	m
Z
ddlmZm
Z
mZddlmZmZmZddlmZddlmZmZdd	lmZmZdd
lmZededd
�Ze�e�Z dd�Z!edd�dd��Z"eedd�dd���Z#dd�Z$eddd�dd��Z%dd�Z&ed�dd��Z'ed�d d!��Z(d"d#�Z)ed�d$d%��Z*edd�d&d'��Z+edddd�d(d)��Z,edd�d*d+��Z-edd�d,d-��Z.edd�d.d/��Z/edd�d0d1��Z0ed�d2d3��Z1dS)4�N)�	Blueprint�jsonify�request)�current_user�login_required)�and_)�
AgentSchedule�Agent�Team)�Email�
EmailIdentity�
EmailTemplate)�Source)�api_role_required�
role_required)�db�
ses_client)�api_jsonify�	agentsapiz/api/agents)�
url_prefixcCs*|dks|dkst|t�r|dkrdSdS)N�true�TrueTF)�
isinstance�bool)�param�r�G/home/arjun/projects/buyercall/buyercall/blueprints/agents/endpoints.py�
getbooleans"r�agent�adminc
sz�d}d}d}g}t��}g}tj�tjtjjk����ddl	m
}|j�|jtjk���}�s9d}d}d}g}n�t
j�t
j�jk���}	�j�d	|vrP|d	}d
|vr]|d
�_���|	dkr�|D]%}
d|
vr�|
dr�t
�|
dt|
d�t|
d
�tt|
d��t���qcn#|r���fdd�|D�}|r�|r�t
j�t
j�jk���t
j|�}n	tjddtj�dtj��|j�d�d�}
ddlm}|di|
��}t�d|���Wn#t y�}zt�!|��d}d}d|��}g}WYd}~nd}~wwt"||||d��}|S)N��Tz3Agent schedule & availability updated successfully!r)�Partnership�FzAgent not found!�availableHours�allHours�schedule_id�start�stop�	is_activec	sLg|]"}t|d�t|d�t|d�tt|d��t��t�j�d��qS)�day_idr&r'r(��day�available_from�available_tor(�partnership_account_id�agent_id)�int�strr�id)�.0�dayobj�rr.rr�
<listcomp>Cs
�


�z#update_schedule.<locals>.<listcomp>�SCHEDULE_SETTINGS_EDITEDzYou've� z	/settings)�user_id�notify_message_type�user_related_entities�other_user_related_entities�	hyperlink)�send_notificationszUpdated schedule for agent: ��z/Agent schedule & availability updation failed! ��
statusCode�success�message�datar)#r�get_jsonr	�query�filter�sidrr�first�'buyercall.blueprints.partnership.modelsr!r2�partnership_idrr/�countr.�	all_hours�save�updater1rr0�delete�create�	firstname�lastname�partner_url�+buyercall.blueprints.notification.utilitiesr>�logger�info�	Exception�errorr)rH�status_coderBrCrD�	form_data�available_hoursr!�partnership�schedules_exist�day_obj�
day_params�
day_result�es_datar>�es_response�e�responserr5r�update_schedules�


���
�	
�
��
���rfc
Cs�zSd}d}d}i}tj�tjtjk���}d}g}|rJ|j}tj�tj	|jk�}g}|D]}|j
|j|j|j
|jd�}	|�|	�q,||d<||d<nd}d}d	}g}Wntyp}
zd
}d}d|
��}g}WYd}
~
nd}
~
wwt||||d��}|S)
Nr Tz3Agent schedule & availability fetched successfully!F)r(r)r%r&r'r$r#r"zAgent not foundr?z6Agent schedule & availability fetching failed! Error: r@)r	rFrGr9rr2rIrMrr/r(r+rHr,r-�appendrXr)rZrBrCrDrrM�agent_schedulesr\�schedule�
_day_schedule�exrerrr�get_schedulemsL�
�
���rlc%Csdt��}|�dd�}|�dd�}d}d}d}d}i}ddlm}m}	ddlm}
|�r�|�r�|	j�	|	j
|k���}|j�	t|j
|k|j
|jk����}|�r�|�r�d}
d	}d	}d	}d	}d	}d	}d	}d
}d|vrk|d}
d|vrs|d}d
|vr{|d
}d|vr�|d}d|vr�|d}d|vr�|d}d|vr�|d}d|vr�|d}d|vr�|d}d|||||d|d|||j|
|d�
}t�|�}|dk�r/dddd|jt|�d�}dddd|jt|�d�}dddd|jt|�d�}dddd|jt|�d�}dddd|jt|�d�}dddd|jt|�d�}dddd|jt|�d�}t�|||||||�}|�r/|�r/|}d} zTd |j|j|jd	|j�p?d	|j�pDd	|j|j|j|j| d!�}|
d'i|��}!|!��|!j|_tj�|�tj��|!� �}"dd"l!m"}#|#�#|!j|"|!j$j%|!j$j&|!j$j'�Wn%t(�y�}$ztj�)�WYd}$~$nd}$~$wwd#}d$}d}nd%}d&}d}t*||||�S)(NrKr.TzAgent added successfully!r r)�PartnershipAccountr!��User�z
US/CentralrMrRrS�title�email�
department�description�timezone�
mobile_number�phone_number)
r9rRrSrqrr�phonenumber�mobile�	extensionrsrtr.rMruz08:00 AMz17:00 PMFr*������r)�rolerRrSrr�companyrqrsrxrzrKr.�
tos_agreement)�send_agent_invitation_emailr"zPartnership account not found!�zInvalid parameters!r)+rrE�getrJrmr!� buyercall.blueprints.user.modelsrorFrGrHrIrrKr2r	rQr0rrRrSrrrqrsrxrzrNr9r�session�add�commit�serialize_token�buyercall.blueprints.user.tasksr��delayr]�name�logorTrX�rollbackr)%�received�partnership_sid�partnership_account_sidrrBrCrZrDrmr!ror]�partnership_account�result_all_hours�result_firstname�result_lastname�result_title�result_email�
result_mobile�result_department�result_description�result_timezone�params�agent_added�	day1param�	day2param�	day3param�	day4param�	day5param�	day6param�	day7paramra�tos�user�reset_tokenr�rdrrr�create_agent�s<
���

�
�
�
�
�
�
�	�

�
���r��sysadmin�partnercCs2d}d}d}ddlm}m}|j�|jtjk���}d}|s2|j�|jtj	k���}|s2|j�
d�}ddlm}ddl
m}m}	|r\|j�|jj	|jk���}
tj�tj	|jk���}n|j�|j|jk���}
tj�tj|jk���}|dd	��|
�}|	dd	��|�}
|
D]}d|d
<|�|�q�t||||�S)NT�Agents fetched successfully!r r�r!rmr{)r	)�AgentMiniSchema�
TeamSchema��many�isTeam)rJr!rmrFrGr2rr.rIrKr��"buyercall.blueprints.agents.modelsr	�'buyercall.blueprints.agents.serializersr�r�r��allr
�dumprgr)rBrCrZr!rmr��_partnershipr	r�r��	pa_agents�pa_teamsrD�	team_data�tdrrr�get_all_account_agentshs6
��r�cCs�d}d}d}ddlm}m}|j�|jtjk���}|s0|j�|jtj	k���}|s0|j�
d�}ddlm}|sE|j�|j	|jk��
�}n|j�|j|jk��
�}g}	|D]}
|
j|
j|
j|
j|
j|
rf|
jndd�}|	�|�qUt|	|||�S)	NTr�r rr�r{rn)rHrRrSrxrrr�)rJr!rmrFrGr2rr.rIrKr�r�ror�rHrRrSrxrrr�rgr)rBrCrZr!rmr�r]ro�pa_usersrDr��_userrrr�get_all_agents_only�s0
���r�cCs,ddlm}d}t|dd��tjj�|d�S)Nr)r�zTeams fetched successfully!Tr��rC)r�r�rr�rr�teams)r�rCrrr�	get_teams�sr�cCsZddlm}m}d}d}d}|�|�pi}|sd}d}d}t|r&|��|�ni|||d	�S)
Nr)r�r
zTeam fetched successfully!r T�Team not foundr"F�rCrZrB)r�r�r
�
get_by_sidrr�)�team_idr�r
rCrZrB�teamrrr�get_team_by_id�s�r�cCs`ddlm}m}d}d}d}|�|�pi}|sd}d}d}t|r)|dd	��|j�ng|||d
�S)Nr)�AgentWithoutTeamSchemar
z!Successfully fetched team agents!r Tr�r"Fr�r�)r�r�r
r�rr��agents)r�r�r
rCrZrBr�rrr�get_agents_by_team_id�s�r�cCs�t��}|r5d}d}d}tj�tj|k���}|�dg�}|r.|r.dd�|D�|_|�	�n
d}d}d	}nd
}d}d	}t
|||d�S)
NzAgents added successfully��Tr�cSsg|]}t�|��qSr)r	�get_id_from_sid)r3�	agent_sidrrrr6�sz&add_agents_to_team.<locals>.<listcomp>r�r"F�Invalid parametersr�)rZrCrB)rrEr
rFrGrHrIr�r�rNr)r�r�rCrZrBr�r�rrr�add_agents_to_team�s"
r�c

Cs�d}ddlm}m}tj�dd�}tj�dd�}tj�dd�}|�tj�}dd�|D�}|�	||||�}g}	t
|d	d
�D]\}
}|j|j|j
|��|j|jpOd|j|
d�}|	�|�q<t|	|d
�S)NzLeads fetched successfully!r)�ContactChannelTie�Contact�contact-type�statuszintent-scorecSsg|]
}|jdur|j�qS)N)�contact)r3�cidrrrr6�szget_leads.<locals>.<listcomp>r{)r&�cold)�leadIdr��
primaryTag�
secondaryTags�manualStatus�intentScore�	updatedOn�sort)rDrC)�$buyercall.blueprints.contacts.modelsr�r�r�argsr��get_by_partnership_accountrr.�	get_leads�	enumeraterHr��
bdc_status�get_secondary_tag_namesr��get_intent_state�
updated_onrgr)
rCr�r��contact_typer��intent_score�contact_channel_ties�contact_ids�contacts�leads�idxr��contact_datarrrr��s*�
r�cCsbddlm}ddlm}d}d}d}|j�|j|k���}|s%d}d}d	}t|��	|�|||d
�S)Nr�r���
ContactSchemaz"Lead details fetched successfully!Tr �Contact not found.r"F�rCrBrZ)
r�r��)buyercall.blueprints.contacts.serializersr�rFrGrHrIrr�)�
contact_idr�r�rCrBrZr�rrr�get_lead_detailsr�cCs
ddlm}m}ddlm}d}d}d}|j�|j|k���}t	�
�}|s,d}d}d	}n�|s5d
}d}d	}n�|�dd
�}	|�dd
�}
|�dd
�}|�dd
�}|�dd
�}
|�dd
�}|�dd
�}|�dd
�}|�dd
�}|�dd
�}|�dd	�}|�dd
�}|�dd
�}|�dd
�}d|	fd|
fd|fd|fd|
fd|fd|fd|fd|fd|fd|fd|fd|fg
}|D]4\}}|dkr�t|||�|r�|dkr�|d vr�t|||�q�|dkr�|d!vr�t|||�q�t|||�q�|r�|�
|�}|r�||_|��t|��|�|||d"�S)#Nr)r��ContactTagsr�zLead updated successfully!Tr r�r"FzInvalid details given.r��
first_namerp�	last_name�phone_1�phone_2rr�	address_1�	address_2�city�state�zip�
is_subscribedr�r�r�rRrS�
phonenumber_1�
phonenumber_2r�)�lead�customer�prospectzreturning customer�spam��new�open�	completed�archiver�)r�r�r�r�r�rFrGrHrIrrEr��setattr�get_by_sids�contact_tagsrNrr�)r�r�r�r�rCrBrZr�r�r�r��phone_number_1�phone_number_2rrr�r�rr�zipcoderr��
manual_status�secondary_tags�details�attr�valuerrrr�update_lead&s~����
rcCs�ddlm}d}d}d}t��}|�dd�}|�dd�}|r3|dvr,|r,|j||d	�}n
d
}d}d}nd
}d}d}t|||d
�S)Nrr�z)Leads manual status updated successfully!Tr r��leadIdsr
)�
new_status�contact_sidszInvalid input data!Fr�r�)r�r�rrEr��update_manual_statusr)r�rCrBrZr�rr�resprrrrjs"rc
CsBt��}ddlm}ddlm}ddlm}|�dd�}|�dd�}|�dd�}|�dd�}|�d	d�}t	�
|�}	|�
|�}
|�d
i�}|
r�|	r�|r�|	j|	j|	j
t�|�d|�|�|�d
i�|�|�|
j
gd�	}|jdi|��}
|�d
d�}d}|�dd|	j���}|r�|�d�}tj|
j
g||	j
|||d�ntd�tdd�S)Nrr�)rm)rrK�lead_id�	source_idr.r/�payloadF)	r�r�rr�source�
is_inboundr��	meta_datar.�
recipients�contentrp�subject�Email message from �-config_set)r&�config_set_name�senderr(�text�htmlr��Mail sent successfullyr�r)rrEr�r�rJrm�!buyercall.blueprints.email.modelsrr�r	r�r�r�rrrr�rQ�	full_namer�
send_email�printr)r�r�rmrrKr r!�
account_idr/rr�r"�email_paramsrr�payload_content�html_payloadr(r+rrr�send_email_to_lead�sF


�
��
r8cCs6t��}|s
tdddd�S|�d�}|�d�}|�d�}|�d�}|�d	�}d
dlm}d
dlm}m}t	j
}	|�|�}
|�t	j
�}|�t	j�}t�|�}
|
rR|
jnd}|
rY|
jnd}|rb|�|�nd
}t|t�r�|sy|�ddt	j�dt	j���}|�d|�}nt	j�dt	j�d|j��}|}t	jt	j|	t�|�dd|
j||p�|d�|j|
j
gd�
}z
tjd i|��}Wnty�}ztd|�WYd}~nd}~wwd
dlm }|j!�d�}|j"||
j
g||||	d�d
dl#m$}d
dl%m&}|j'�d�}||�j(t)|
j!�|dt)t	j!�gt)|j!�t)|j!�d|�p|d�}tdd�S)!Ni�Fr�)rZrBrCr#r��
templateId�templateDatar'rr�r�rpr(r)r8�bodyz from )r(r;)
r�r�rrr#r$�channelr�r%r.r&zError : )�send_generic_mailr*)r(r&r+r-r.r,)�InboxConnector)�current_app�SOCKET_ENDPOINT�EMAIL)r�r!�interaction_type�	agent_idsrKr.�	from_leadr"r/r�r)*rrErr�r�r�rJr!rmrrrr��	get_by_idr.rKr
r(r'�formatr�dictrRrSr�rr�r2rrQrXr3r�r=rHr��6buyercall.blueprints.agents.webhooks.inbox_interactionr>�flaskr?�config�send_interactionr1)r��
source_sid�contact_sid�template_sid�
template_data�
email_contentr�r!rm�
from_emailr�r�r]�email_template_datar(�body_contentr7�
plain_bodyr�rrrdr=r+r>r?�endpointrrrr�send_email_to_lead_from_inbox�st







����

�
rVcCs�d}d}d}g}tj}ddddddddd�g}g}g}|j|j|j|j|jdtjdddddddddd|d�gdddddddddddddddddd�	d�	gd	�	}t||||�S)
NTzInbox fetched successfully!r rp)rH�typer#�detail�
created_atr��	is_banned�is_read)rHrRrSrrr�r�r�r��avatar�tags�interactions)	rRrSrrr�r��countryr�r�r])	rH�appointment_date�appointment_type�slot_start_time�
slot_end_time�is_deactivated�deactivated_onrur�)	rHrRrSrrrw�appointment_linkr�r��appointments)	rrrHrRrSrrrxr�r)rBrCrZrDrr^r�rgrrr�	get_inbox�sv��������1rh)2�logging�logrIrrr�flask_loginrr�
sqlalchemyrr�rr	r
r0rrr
�#buyercall.blueprints.sources.modelsr�$buyercall.blueprints.user.decoratorsrr�buyercall.extensionsrr�buyercall.lib.util_restr�__name__�	agent_api�	getLoggerrVrrfrlr�r�r�r�r�r�r�r�r�rrr8rVrhrrrr�<module>sX

S-
M
 



2

C

*
B