o
    ȟ1i                     @   s   d dl mZ d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZmZ G dd deZG dd	 d	eeZG d
d deeZG dd deeZG dd deZdS )    )Enum)datetime)ColumnIntegerStringBooleanDate
ForeignKeyTextDoubleFloatDateTimer   )relationship)BaseTimestampMixinc                   @   s,   e Zd ZdZdZdZdZdZedd Z	dS )	UserTypesEnumadminparentparticipantZgueststaffc                 C   s   ddl m} ddlm} ddlm} | j | jjkr tS  | j	jkr& |S  | j
jkr/ |S  | jjkr8 tS | jjkr?|S d S )N   )Parent)Participant)Staff)r   r   r   r   r   r   valueADMINUserPARENTPARTICIPANTGUESTSTAFF)selfr   r   r    r"   /app/models/user.pymodel   s   zUserTypesEnum.modelN)
__name__
__module____qualname__r   r   r   r   r    propertyr$   r"   r"   r"   r#   r   
   s    r   c                   @   s  e Zd ZdZeedddZeedddZeedddZ	eeddddZ
eedddZeedddZeedddZeedddZeed	ddZeed
ddZeedddZeedddZeeddZeedddZeeddZedd ZdS )r   ZusersTprimary_keyautoincrement   Fnullableuniquer.   2         r.   defaultc                 C      d| j  S Nz/images/profile_imager!   r"   r"   r#   profile_image_url2      zUser.profile_image_urlN)r%   r&   r'   __tablename__r   r   idr   
first_namesur_nameemailaddress	post_codehashed_password	user_typeZcountry_codemobile_numberalternative_contact_emailZalternative_phone_numberr   wallet_amountr   Zterm_and_condition_acceptedr
   r9   r(   r;   r"   r"   r"   r#   r      s&    r   c                   @   s  e Zd ZdZeedddZeeedddZee	dddZ
ee	dddZee	dddZeeddZeeddZee	dddZee	dddZee	dddZee	dddZee	dddZee	dddZee	dddZee	dddZee	dddZee	d	ddZee	d	ddZee	dddZeeddZee	dddZeeddd
Z eeddd
Z!eeddd
Z"e#dd Z$e#dd Z%dS )UserProfileZuser_profileTr)   users.idFr-   r,   r1      r4   c                 C   r6   r7   r8   r:   r"   r"   r#   r;   U   r<   zUserProfile.profile_image_urlc                 C   s
   | j jjS N)useruser_walletbalancer:   r"   r"   r#   walletY   s   
zUserProfile.walletN)&r%   r&   r'   r=   r   r   r>   r	   user_idr   r?   r@   middle_namer   dobagerB   rC   local_authoritygenderrA   emergency_contact_nameZsecond_emergency_contactZmedical_needs	ethnicitycare_experienceage_above_threewac_receiptr
   r9   how_did_you_knowr   Zemail_consentZterms_and_conditions_consentZcode_of_consent_availabilityr(   r;   rP   r"   r"   r"   r#   rI   8   s<    
rI   c                   @   s@   e Zd ZdZeedddZeeeddddZee	dddZ
d	S )

UserWalletrN   Tr)   rJ   F)r.   r0   r   )r5   r.   N)r%   r&   r'   r=   r   r   r>   r	   rQ   r   rO   r"   r"   r"   r#   r]   _   s
    r]   c                   @   sj   e Zd ZdZeedddZeeddZeedddZ	ee
ddZee
ejdZeeeddZdd	 Zd
S )PasswordResetTokenZpassword_reset_tokensT)r*   indexFr-   r/   )r5   c                 C   s   | j t k S rL   )expiryr   utcnowr:   r"   r"   r#   
is_expiredq   s   zPasswordResetToken.is_expiredN)r%   r&   r'   r=   r   r   r>   rQ   r   tokenr   r`   r   ra   
created_atSqlAlchemyEnumr   rE   rb   r"   r"   r"   r#   r^   g   s    r^   N)enumr   r   
sqlalchemyr   r   r   r   r   r	   r
   r   r   r   re   sqlalchemy.ormr   models.baser   r   r   r   rI   r]   r^   r"   r"   r"   r#   <module>   s    4'