o
    Hia                     @   s^   d dl mZ d dlmZ d dlmZ G dd dejZG dd dejZG dd	 d	ejZ	d
S )    )models)User)timezonec                   @   s  e Zd ZejdddZe ZejddZej	dej
ddddd	Zejddd
Zejddd
ZejddddZejddddZejddddZejddddZejddZejddddZejddZejddZG dd dZdd Zedd Zedd Zd d! Zd"S )#RegisteredMemberd   T)
max_lengthunique   )r   zevents.EventCategoryregistered_memberszKThe umbrella event category this member is registered under (e.g. AGM 2026))	on_deletenullblankrelated_name	help_text)r   r   z"ICTAZ membership number (from EMS))r   r   r   z!NRC or passport number (from EMS)   zPhone number (from EMS)zaDetermines which sub-events the member may attend (e.g. "Training & Conference", "Training only"))r   
      r   )
max_digitsdecimal_placesdefaultauto_now_add)auto_nowc                   @   s   e Zd ZdZdZdgZdS )zRegisteredMember.MetazRegistered MemberzRegistered Members	full_nameN)__name__
__module____qualname__verbose_nameverbose_name_pluralordering r    r    =/var/www/html/smartRegister/backend/apps/attendance/models.pyMeta&   s    
r"   c                 C   s   | j  d| j dS )Nz ())r   registration_codeselfr    r    r!   __str__+   s   zRegisteredMember.__str__c                 C   s   | j jdd S )NCHECK_IN)	scan_type)attendance_recordsfilterexistsr%   r    r    r!   has_attended.      zRegisteredMember.has_attendedc                 C   s   | j   dkS )NPAID)payment_statusstripupperr%   r    r    r!   is_paid2   r.   zRegisteredMember.is_paidc                 C   sj   t | jj|djddd}|sd S h d|rdS ddh|r$d	S dd
h|r-dS d|v r3dS d S )N)event_idr)   T)flat>   SESSIONr(   	CHECK_OUTzVerified Full Attendancer(   r7   zFull Attendancer6   zPartial AttendancezAttended Briefly)setr*   r+   values_listissubset)r&   r4   scansr    r    r!   get_attendance_status6   s   z&RegisteredMember.get_attendance_statusN)r   r   r   r   	CharFieldr$   
EmailFieldemailr   
ForeignKeySET_NULLevent_categorystatusr0   membership_numberdocument_numberphone_numberpackage_name	TextFieldpackage_descriptionDecimalFieldactivity_priceDateTimeField
created_at
updated_atr"   r'   propertyr-   r3   r<   r    r    r    r!   r      sL    


r   c                   @   s   e Zd Zg dZejeejddZejdejddZ	ej
deddZejejdZejeejd	d	d
ZG dd dZdd ZdS )AttendanceRecord))r(   zCheck-In)r6   zSession Verification)r7   z	Check-Outr*   r   r   events.Eventr   r(   )r   choicesr   r   T)r   r   r   c                   @   s"   e Zd Zg dZdZdZdgZdS )zAttendanceRecord.Meta)membereventr)   zAttendance RecordzAttendance Recordsz
-scan_timeN)r   r   r   unique_togetherr   r   r   r    r    r    r!   r"   T   s
    
r"   c              	   C   s0   | j j d|   d| jj d| jd dS )Nu    — z @ z [z%Y-%m-%d %H:%M])rU   r   get_scan_type_displayrV   name	scan_timestrftimer%   r    r    r!   r'   Z   s   0zAttendanceRecord.__str__N)r   r   r   
SCAN_TYPESr   r@   r   CASCADErU   rV   r=   r)   rL   r   nowr[   r   rA   recorded_byr"   r'   r    r    r    r!   rP   G   s    rP   c                   @   s^   e Zd ZejeejddZejdejddZej	ddZ
ejddZG dd dZd	d
 ZdS )ScannerAssignmentscanner_assignmentsrQ   rR   TrT   r   c                   @   s   e Zd ZddgZdZdZdS )zScannerAssignment.MetauserrV   zScanner AssignmentzScanner AssignmentsN)r   r   r   rW   r   r   r    r    r    r!   r"   d   s    r"   c                 C   s   | j j d| jj S )Nu    → )rc   usernamerV   rZ   r%   r    r    r!   r'   i   s   zScannerAssignment.__str__N)r   r   r   r   r@   r   r^   rc   rV   BooleanField	is_activerL   assigned_atr"   r'   r    r    r    r!   ra   ^   s    ra   N)
	django.dbr   django.contrib.auth.modelsr   django.utilsr   Modelr   rP   ra   r    r    r    r!   <module>   s    A