o
    fsi                     @   s   d dl mZ d dlmZ ddlmZmZmZ G dd dejZ	G dd dejZ
G d	d
 d
ejZG dd dejZG dd dejZdS )    )serializers)User   )RegisteredMemberAttendanceRecordScannerAssignmentc                   @   s   e Zd Ze Ze ZejdddZe	 Z
e	 Ze	 Ze	 Ze	 ZG dd dZdd Zdd	 Zd
d Zdd Zdd Zdd Zdd ZdS )RegisteredMemberSerializerzevent_category.nameTsource	read_onlyc                   @      e Zd ZeZg dZdS )zRegisteredMemberSerializer.Meta)idregistration_codeemail	full_namemembership_numberdocument_numberevent_categoryevent_category_namestatuspayment_statuspackage_namepackage_descriptionactivity_pricehas_attendedhas_attended_eventattendance_statuscheck_in_timesession_timecheck_out_timeis_paid
created_at
updated_atN)__name__
__module____qualname__r   modelfields r(   r(   B/var/www/html/smartRegister/backend/apps/attendance/serializers.pyMeta       r*   c                 C   s    | j d}|r|jdS d S )Nrequestevent_id)contextgetquery_params)selfr,   r(   r(   r)   _get_event_id   s   z(RegisteredMemberSerializer._get_event_idc                 C   s2   |   }|r|jj|dd S |jjdd S )NCHECK_INr-   	scan_type)r5   )r2   attendance_recordsfilterexistsr1   objr-   r(   r(   r)   get_has_attended_event"   s   z1RegisteredMemberSerializer.get_has_attended_eventc                 C   s   |   }|r||S d S N)r2   get_attendance_statusr9   r(   r(   r)   r=   (   s   
z0RegisteredMemberSerializer.get_attendance_statusc                 C   s6   |   }|sd S |jj||d }|r|j S d S )Nr4   )r2   r6   r7   first	scan_time	isoformat)r1   r:   r5   r-   recordr(   r(   r)   _get_scan_time.   s
   z)RegisteredMemberSerializer._get_scan_timec                 C      |  |dS )Nr3   rB   r1   r:   r(   r(   r)   get_check_in_time5      z,RegisteredMemberSerializer.get_check_in_timec                 C   rC   )NSESSIONrD   rE   r(   r(   r)   get_session_time8   rG   z+RegisteredMemberSerializer.get_session_timec                 C   rC   )N	CHECK_OUTrD   rE   r(   r(   r)   get_check_out_time;   rG   z-RegisteredMemberSerializer.get_check_out_timeN)r#   r$   r%   r   ReadOnlyFieldr   r    	CharFieldr   SerializerMethodFieldr   r   r   r   r   r*   r2   r;   r=   rB   rF   rI   rK   r(   r(   r(   r)   r      s"    r   c                   @   sp   e Zd ZejdddZejdddZejdddZejdddZejdddZ	e
 ZG dd	 d	Zd
d ZdS )AttendanceRecordSerializerzmember.full_nameTr	   zmember.emailzmember.registration_code
event.nameget_scan_type_displayc                   @   r   )zAttendanceRecordSerializer.Meta)r   membermember_namemember_emailmember_codeevent
event_namer5   scan_type_displayr?   recorded_byrecorded_by_nameN)r#   r$   r%   r   r&   r'   r(   r(   r(   r)   r*   G   r+   r*   c                 C   s   |j r|j  p|j jS d S r<   )rY   get_full_nameusernamerE   r(   r(   r)   get_recorded_by_nameO   s   z/AttendanceRecordSerializer.get_recorded_by_nameN)r#   r$   r%   r   rM   rS   rT   rU   rW   rX   rN   rZ   r*   r]   r(   r(   r(   r)   rO   ?   s    rO   c                   @   sD   e Zd ZejdddZejdddZejdddZG dd dZ	dS )	ScannerAssignmentSerializerrP   Tr	   zevent.start_datezuser.usernamec                   @   r   )z ScannerAssignmentSerializer.Meta)r   userr\   rV   rW   event_start_date	is_activeassigned_atN)r#   r$   r%   r   r&   r'   r(   r(   r(   r)   r*   Z   r+   r*   N)
r#   r$   r%   r   rM   rW   DateTimeFieldr`   r\   r*   r(   r(   r(   r)   r^   U   s
    r^   c                   @   s2   e Zd ZejddZe Zejg dddZ	dS )ScanBarcodeSerializerd   )
max_length)r3   rH   rJ   r3   )choicesdefaultN)
r#   r$   r%   r   rM   r   IntegerFieldr-   ChoiceFieldr5   r(   r(   r(   r)   rd   _   s    
rd   c                   @   s"   e Zd Ze ZejdddZdS )CSVUploadSerializerFT)required
allow_nullN)r#   r$   r%   r   	FileFieldcsv_fileri   event_category_idr(   r(   r(   r)   rk   h   s    rk   N)rest_frameworkr   django.contrib.auth.modelsr   modelsr   r   r   ModelSerializerr   rO   r^   
Serializerrd   rk   r(   r(   r(   r)   <module>   s    9
	