U
    YHg
                     @   st   d dl mZ d dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ G dd deZG d	d
 d
eejZdS )    )absolute_import)	BaseQuery)db)and_desc)replace_chars)TimestampMixinc                   @   s&   e Zd Zdd Zdd ZdddZdS )	ChurnedUsersQueryc                 C   s   |  tj|k S N)filterChurnedUsersidfirst)selfZchurned_user_id r   6/var/www/dostadmin/dostadmin/db_model/churned_users.pyget_details_by_id   s    z#ChurnedUsersQuery.get_details_by_idc                 C   s   |  tj|ktjd  S r
   )r   r   experience_idend_dateis_r   )r   exp_idr   r   r   (get_active_churned_user_by_experience_id   s    
z:ChurnedUsersQuery.get_active_churned_user_by_experience_idNc                 C   s<   |d kr|  tjd  S |  tjd tj|k S r
   )r   r   r   r   allexperience_type)r   r   r   r   r   /get_all_active_churned_users_by_experience_type   s    
zAChurnedUsersQuery.get_all_active_churned_users_by_experience_type)N)__name__
__module____qualname__r   r   r   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	edZeej	edZejedd	d
Zejedd	dZeejZejejdd
ZeedZeej	edZeedZejdd ddZejdd ddZejdd ddZdd Zedd ZdS )r   churned_usersc                   @   s   e Zd ZdZdZdZdS )zChurnedUsers.PreviousStatusactivependingchurnedN)r   r   r   ACTIVEPENDINGCHURNEDr   r   r   r   PreviousStatus"   s   r%   T)primary_keyzusers.idzexperience.id   F)nullable2   )uniquez
program.idUserzChurnedUsers.user_id == User.id)backrefprimaryjoin
Experiencez+ChurnedUsers.experience_id == Experience.idProgramz%ChurnedUsers.program_id == Program.idc                 C   s6   |  ttjt|ktjd ttj	
 }|S r
   )r   r   r   phoner   r   r   order_byr   
start_dater   )r   r0   churned_userr   r   r   find_churned_user_with_phoneB   s    

z)ChurnedUsers.find_churned_user_with_phonec                 C   s   ||_ tj  d S r
   )r   r   sessioncommit)cls
experiencedater   r   r   update_churned_user_end_dateO   s    z)ChurnedUsers.update_churned_user_end_dateN)r   r   r   __tablename__r	   query_classr%   r   ColumnIntegerr   
ForeignKeyuser_idr   String
user_phoneexperience_statusDater2   r   r   
program_idprovider_numberrelationshipuserr8   programr4   classmethodr:   r   r   r   r   r      s>   r   N)
__future__r   flask_sqlalchemyr   	dostadminr   
sqlalchemyr   r   utils.helpers.helpersr   dostadmin.mixinsr   r	   Modelr   r   r   r   r   <module>   s   