U
    XHg                     @   sF   d dl mZmZmZ d dlmZ d dlmZmZm	Z	 G dd dZ
dS )    )CustomizedExperience
ExperienceChurnedUsers)get_current_isttime)db_modelappdbc                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ExperienceServicec                 C   s   d}| | g }| D ]l}t|d |d |d |d |d d d d |d |d |d	 |d
 |d |d |d |d d}|| q|S )NaZ  SELECT ex.id, ex.user_id, ex.program_id, ex.start_date, tc.time, ex.timecategory_id, ex.provider_number, ex.type, ex.status, ex.phone, ex.experiment_id, ex.experiment_group_name, ex.created_on FROM experience ex INNER JOIN timecategory tc ON ex.timecategory_id = tc.id WHERE ex.status in ('active', 'pending') AND ex.type in ('pc', 'selfpacedpc')r                           	   
         )exp_iduser_id
program_id
start_datetimeprev_content_idprev_content_version_idprev_deploy_datetimetimecategory_idprovider_numberexperience_typestatusphoneexperiment_idexperiment_group_nameexperience_created_on)executefetchallr   append)selfcursorSQLZactive_experiencesexpZexp_obj r-   F/var/www/dostadmin/dostadmin/services/experience/experience_service.pyget_active_experiences   s4    
z(ExperienceService.get_active_experiencesc                 C   s   |dd  }t j|t jjt jjg}|r.|S t j|t jjg}|rJ|S t j|t jjgd d}|r|tj	|j
}|r||S t j|t jjt jjt jjg}|S )Nidesc)r   query!find_experience_with_phone_statusStatusACTIVEPENDINGDND_WAITCHURNEDr   (get_active_churned_user_by_experience_ididfind_experience_with_phoneType	PHONECASTWHATSAPPSELFPACEDPC)r)   user_number
user_phone
experiencechurned_userr-   r-   r.   check_for_existing_experience7   sH       	z/ExperienceService.check_for_existing_experiencec                 C   sJ   t |j|j|j|j|t  t jj|j	|j
d	}tj| tj  |S )N)	r   r"   language_idr   r   r   r!   r   type)r   r   r"   rD   r   r   dater3   r4   r   rE   r   sessionaddcommit)r)   Zprevious_experiencenew_program_idrA   r-   r-   r.   .create_new_experience_from_previous_experiencee   s    
z@ExperienceService.create_new_experience_from_previous_experiencec                 C   s$   t jjtjd }| ||}|S )N DEFAULT_MISSED_CALL_PROGRAM_NAME)r   Programr1   find_program_id_with_namer   configrK   )r)   rA   Zdefault_missedcall_program_idnew_experiencer-   r-   r.   #create_new_experience_for_DND_usersx   s     z5ExperienceService.create_new_experience_for_DND_usersN)__name__
__module____qualname__r/   rC   rK   rQ   r-   r-   r-   r.   r	      s   0.r	   N)dostadmin.db_modelr   r   r   utils.helpers.helpersr   	dostadminr   r   r   r	   r-   r-   r-   r.   <module>   s   