U
    YŸHgƒ  ã                   @   s~   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ G dd„ deƒZG d	d
„ d
ƒZG dd„ dee	jƒZdS )é    )Úabsolute_import)Ú	BaseQuery)Úfunc)Úget_current_isttime)Údb)ÚTimestampMixinc                   @   s>   e Zd Zdd„ Zdd„ Zddd„Zdd	„ Zd
d„ Zdd„ ZdS )Ú"PreCalculatedUserCampaignDataQueryc                 C   s   |   tj|k¡ ¡ S ©N)ÚfilterÚPreCalculatedUserCampaignDataÚidÚfirst)ÚselfZ$pre_calculated_user_campaign_data_id© r   úJ/var/www/dostadmin/dostadmin/db_model/pre_calculated_user_campaign_data.pyÚget_details_by_id
   s    ÿz4PreCalculatedUserCampaignDataQuery.get_details_by_idc                 C   s   |   tj|k¡ ¡ S r	   )r
   r   Úexperience_idr   )r   r   r   r   r   Úget_data_by_experience_id   s    ÿz<PreCalculatedUserCampaignDataQuery.get_data_by_experience_idTc                 C   s   |   tj|k¡ ¡ S r	   )r
   r   Úis_eligible_to_callÚall)r   Zis_eligibler   r   r   Úget_all_records_by_eligibility   s    ÿzAPreCalculatedUserCampaignDataQuery.get_all_records_by_eligibilityc                 C   s$   t ƒ  ¡ }|  t tj¡|k¡ ¡ S r	   )r   Údater
   r   ÚDATEr   Úprevious_nudge_call_deploy_timer   ©r   Útodayr   r   r   Úget_today_nudge_calls   s    

ÿÿz8PreCalculatedUserCampaignDataQuery.get_today_nudge_callsc                 C   s$   t ƒ  ¡ }|  t tj¡|k¡ ¡ S r	   )r   r   r
   r   r   r   Úprevious_blast_call_deploy_timer   r   r   r   r   Úget_today_blast_calls    s    

ÿÿz8PreCalculatedUserCampaignDataQuery.get_today_blast_callsc                 C   s   |   ¡ S r	   )r   )r   r   r   r   Úget_all_records'   s    z2PreCalculatedUserCampaignDataQuery.get_all_recordsN)T)	Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r   r   r   r   r   	   s   
r   c                   @   s   e Zd Zdd„ ZdS )ÚCustomizedUserCampaignDatac                 C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _d S r	   )Úexp_idÚphoneÚ
program_idÚlanguage_idÚtimecategory_idÚprovider_numberÚexperience_typeÚexperience_statusÚcurrent_content_idÚcurrent_content_version_idÚnext_content_idÚnext_content_version_id)r   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r   r   r   Ú__init__,   s    z#CustomizedUserCampaignData.__init__N)r    r!   r"   r0   r   r   r   r   r#   +   s   r#   c                   @   s  e Zd ZdZeZG dd„ dƒZejej	ddZ
e ej¡Zejej	e d¡ddZe ej¡Ze ej	e d¡¡Ze ej	e d	¡¡Ze ej	e d¡¡Ze ej	e d	¡¡Ze ej	¡Ze ej	¡Ze ej	¡Ze ej	¡Ze e d
¡¡Ze e d
¡¡Ze e d
¡¡Ze ej¡Ze ej¡Ze ej¡Z e ej¡Z!e e d¡¡Z"e e d¡¡Z#e e d¡¡Z$e e d¡¡Z%e ej	e d¡¡Z&e ej	e d¡¡Z'e ej	e d	¡¡Z(e ej	e d	¡¡Z)ejej	dddZ*e+dd„ ƒZ,e+dd„ ƒZ-e+dd„ ƒZ.dS )r   Ú!pre_calculated_user_campaign_datac                   @   s   e Zd ZdZdZdS )z$PreCalculatedUserCampaignData.StatusÚactiveÚ	completedN)r    r!   r"   ÚACTIVEÚ	COMPLETEDr   r   r   r   ÚStatusM   s   r6   T)Úprimary_keyzexperience.id)Úuniquez
content.idzcontent_version.idéd   é   FÚ0)ÚnullableÚserver_defaultc                 C   s   d|_ tj ¡  d S )NF©r   r   ÚsessionÚcommit©Úclsr1   r   r   r   Úmark_non_eligible_to_callv   s    z7PreCalculatedUserCampaignData.mark_non_eligible_to_callc                 C   s   d|_ tj ¡  d S )NTr>   rA   r   r   r   Úmark_eligible_to_call{   s    z3PreCalculatedUserCampaignData.mark_eligible_to_callc              
   C   sb   z.| j j|d ¡ }tj |¡ tj ¡  W dS  tk
r\ } zt|ƒ W Y ¢S d }~X Y nX d S )N)r   T)	ÚqueryÚ	filter_byr   r   r?   Údeleter@   Ú	ExceptionÚstr)rB   r$   Zpre_calculated_dataÚer   r   r   Ú,delete_pre_calculated_data_for_experience_id€   s    
zJPreCalculatedUserCampaignData.delete_pre_calculated_data_for_experience_idN)/r    r!   r"   Ú__tablename__r   Úquery_classr6   r   ÚColumnÚIntegerr   ÚDateZcall_details_for_dateÚ
ForeignKeyr   ÚBooleanr   Zprevious_content_idZprevious_content_version_idZtoday_content_idZtoday_content_version_idZprevious_regular_campaign_idZ previous_missed_call_campaign_idZprevious_blast_campaign_idZprevious_nudge_campaign_idÚStringÚprevious_campaign_nameZprevious_blast_campaign_nameZprevious_nudge_campaign_nameÚDateTimer   Z previous_missed_call_deploy_timeZ!previous_regular_call_deploy_timer   Z previous_regular_campaign_statusZ$previous_missed_call_campaign_statusZ#previous_blast_call_campaign_statusZprevious_nudge_campaign_statusZprevious_blast_content_idZprevious_nudge_content_idZ!previous_blast_content_version_idZ!previous_nudge_content_version_idZmax_retry_flagÚclassmethodrC   rD   rK   r   r   r   r   r   I   sb    ÿ ÿ ÿ ÿ

r   N)Ú
__future__r   Úflask_sqlalchemyr   Ú
sqlalchemyr   Úutils.helpers.helpersr   Ú	dostadminr   Údostadmin.mixinsr   r   r#   ÚModelr   r   r   r   r   Ú<module>   s   "