U
    XHgj3                     @   s   d dl mZ d dlmZmZ d dlmZmZmZmZ d dl	m
Z
mZ d dlmZmZmZmZmZm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 )    )absolute_import)datetime	timedelta)appdbdb_model
app_logger)and_desc)replace_charsformat_partner_name"user_already_has_active_experiencecontent_not_foundpartner_does_not_existduplicate_phone_numbersc                 C   st   | D ]`}t jjt|d j}t jtt|d t|d t|d t|d |d}tj	
| qtj	  d S )N   r            )nameareacityemail
channel_id)r   Channelqueryget_by_namer   idPartnerr   r   sessionaddcommit)partnerspr   partner_rec r%   )/var/www/dostadmin/dostadmin/db_helper.pyadd_to_partner_table   s    


r'   c                 C   s8   | D ]$}t jtt|d}tj| qtj  d S )N)r   )r   r   r   r   r   r   r    r!   )channelscZchannel_recr%   r%   r&   add_to_channel_table   s    r*   c           	      C   s   g }g }t jj|}| D ]}t jj|d t jjj}t	t
|d d }|rt jj|js|t|  d dd }|td|d }t j|j|||t jjjd}tj| q||d  q||d  qtj  ||fS )Nr   r   %m/%d/%Y)daysweeks)experience_idpause_start_datepause_end_datenext_program_idstatus)r   
Programseqr   get_program_len
Experience!find_experience_with_phone_statusStatusACTIVEr   strptimer   dateExperiencePauseLogpending_pause_log_existsr   r   weekdayPENDINGr   r   r    appendr!   )	pause_log_datanext_programno_experiencepending_pause_logprogram_len	pause_logexp
start_dater0   r%   r%   r&   add_experience_pause_log%   s8      
rH   c                 C   s>   g }| D ]0}t |d }tjj|}|s|t| q|S )Nr   )r   r   ContentVersionr   !find_content_id_with_exotel_appidr?   r   )providernumber_dataerrorsdataexotel_appid
content_idr%   r%   r&   )get_error_list_for_adding_provider_numberD   s    rP   c                 C   s   t | }|s| D ]}t|d }t|d }t|d }t|d }t|d }tjj|}tjj|}	tjj	|}
tj
|||	|
|j q|S )Nr   r   r   r   r   )rP   r   r   r   r   r   rI   rJ   Languagefind_language_id_with_nameProviderNumberadd_provider_numberr   )rK   rL   rM   phoner   rN   Zlanguage_namepartner_namepartnerrO   language_idr%   r%   r&   rT   Q   s0        rT   c           
      C   s   i }g }g }| D ]}t |d }tjj|tjjj}|rT|tt |d |d |	|dsjd||< n
|| t |d }tj
j|}|dkr|t| q|rd|}	|t|	 |S )	Nr   r   userFTr   z, )r   r   r5   r   r6   r7   r8   r?   r   getr   get_id_with_namer   joinr   )
usersphones
duplicatesrL   r#   rU   
experiencerV   
partner_idduplicate_phonesr%   r%   r&    get_error_list_for_non_mvp_usersj   s0     


rd   c              	   C   s   t | }|s| D ]}t|d }tjj|}t|d |t|d t|d t|d ||d}|tjjjtjjj	fkrt|d |d< n|tjjj
krt|d |d	< t|tjjj q|S )
Nr   r   r   r   r   )r   rb   rU   rG   batchexperience_typeprovider_number   programwa_phone)rd   r   r   r   r   r\   r5   Type	PHONECASTSELFPACEDPCWHATSAPPadd_to_users_tableUserTypePARENT)r^   rf   rg   rL   r#   rV   rb   	user_datar%   r%   r&   add_non_mvp_users   s,    



	rs   c              
   C   sR  t d|  t d| d  | d tjjjkr2dS tjj| d }tjj	| d }| 
drrtjj| d }tjj|}tjj }|}t| d	 d
 }| d tjjjkr|tdd7 }|r|j}	| d |	_| d |	_||	_|jtjjjtjjjtjjjtjjjtjjj fkrj|jtjjjkr<tjjj|_||_!||_"||_#| d |_$||_%| d |_&nRtj|	j'|tjj | d |d | d | d d}
tjjj|
_||
_%t(j)*|
 |
}ntj+| d | d |i d}	t(j)*|	 t(j),  tj|	j'|tjj | d |d | d | d d}
t(j)*|
 tjjj|
_||
_%|
}t(j),  |	|fS )Nzadding user %szFinding Partner: %srb   rf   )NNrU   re   ri   rG   r+   r   )r,   r   rg   )user_idtimecategory_idrX   rU   rG   end_daterg   type)r   rb   user_type_idprogram_order)-r   infor   r5   rk   rn   r   find_experience_with_phoneTimecategoryfind_timecategory_id_with_namer[   Programfind_program_id_with_namerp   get_user_type_id_by_namerQ   rR   r   r9   r:   rm   r   rY   r   rb   rx   r2   r7   SIGNUPSIGNUP_CONFIRMEDSIGNUP_UNCONFIRMEDr8   SIGNUP_REJECTEDrG   ru   rX   rU   
program_idrg   r   r   r   r    Userr!   )rr   	user_typera   ru   r   rx   rX   user_experiencerG   rY   exp_recr%   r%   r&   ro      s    








ro   c              	   C   s   |D ]}t jjtt jjt|d kt jj| k }|rtt j	j
|d |_t|d |_t|d |_| |_qt jt j	j
|d | t|d t|d t|d d}tj| qtj  d S )Nr   r   r   r   )rO   r   sequence_indexweekday)r   r3   r   filterr	   r   intr   firstContentfind_content_id_with_namerO   r   r   r   r   r    r!   )r   pdatar#   Zpseq_recr%   r%   r&   add_to_program   s*    



r   c                 C   s$  |t jd krt jd S |t jd t jd fkr:t jd S tjjttjj| ktjjdk	 }|rtj
jttj
j|jktj
jdkttj
jd	 }|r|jr|jjS tjjttjj|jktjjdk	 }|r|jr|jjS |r|jstd	 ntd
|  t jd S )NEXOTEL_CALLIN_PHONEEXOTEL_CALLIN_DEFAULT_APPIDEXOTEL_POSTER_PHONE1EXOTEL_POSTER_PHONE2EXOTEL_POSTER_DEFAULT_APPIDactive	completedr   zProgramseq/Content not foundz3User/Experience not found: New user with Phone %s ?EXOTEL_DEFAULT_APPID)r   configr   r5   r   r   r	   rU   r2   r   Campaignr.   r   order_byr
   deploy_datetimelimitcontentrN   r3   r   r   r   error)rU   	exo_phoner   last_campaignZ
first_pseqr%   r%   r&   get_appid_for_userphone  sH    






r   c              	   C   s   | D ]}i }i }t |d }tt |d d }tt |d d }|d  d}|d  d}	|D ](}
dd	 |
d
D }|\}}|||< qt|	D ](}dd	 |d
D }|\}}|||< qtj||||||d}tj	
| qtj	  d S )Nr   r   r+   r   r   ,r   c                 S   s   g | ]}|  qS r%   strip.0xr%   r%   r&   
<listcomp>P  s     z"create_cohorts.<locals>.<listcomp>:c                 S   s   g | ]}|  qS r%   r   r   r%   r%   r&   r   T  s     )r   experiment_idrG   rv   inputsoutputs)r   r   r9   r:   rstripsplitr   Cohortr   r   r    r!   )rM   r   valZinputs_jsonZoutputs_jsoncohort_namerG   rv   r   r   Z
input_itemZinput_type_val
input_typeZ	input_valZoutput_itemZoutput_type_valoutput_typeZ
output_valcohortr%   r%   r&   create_cohortsF  s4    

r   N)
__future__r   r   r   	dostadminr   r   r   r   
sqlalchemyr	   r
   utils.helpers.helpersr   r   r   r   r   r   r'   r*   rH   rP   rT   rd   rs   ro   r   r   r   r%   r%   r%   r&   <module>   s    Z.