o
    fsi:                     @   s   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
mZ ddlmZmZ ddlmZmZ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ZG dd deZdS )    )timezone)viewsetsstatus)Response)APIView)IsAuthenticatedIsAdminUser   )ApparelItemCollectionRecord)ApparelItemSerializerCollectionRecordSerializerScanApparelSerializer)RegisteredMemberc                   @   s&   e Zd ZeZegZdd Zdd ZdS )ApparelItemViewSetc                 C   s>   t jd }| jjd}|d ur|j| dkd}|S )Nevent	is_activetruer   )	r
   objectsselect_relatedallrequestquery_paramsgetfilterlower)selfqsr    r   9/var/www/html/smartRegister/backend/apps/apparel/views.pyget_queryset   s
   zApparelItemViewSet.get_querysetc                 C   s   | j dv r	t gS t gS )N)listretrieve)actionr   r   )r   r   r   r    get_permissions   s   
z"ApparelItemViewSet.get_permissionsN)	__name__
__module____qualname__r   serializer_classr   permission_classesr!   r%   r   r   r   r    r      s
    r   c                   @   s   e Zd ZeZegZdd ZdS )CollectionRecordViewSetc                 C   s^   t jdd }| jjd}| jjd}|r|j|d}|r-|j|d|j|dB }|S )Napparel_itemrecorded_byitem_idsearch)apparel_item_id)full_name__icontains)registration_code__icontains)r   r   r   r   r   r   r   r   )r   r   r.   r/   r   r   r    r!   !   s   z$CollectionRecordViewSet.get_querysetN)r&   r'   r(   r   r)   r   r*   r!   r   r   r   r    r+          r+   c                   @   s   e Zd ZdZegZdd ZdS )ScanApparelViewz+Record apparel collection via barcode scan.c              
   C   sn  t |jd}| st|jtjdS |jd  }|jd }|j	dd}z
t
jj	|dd}W n t
jyC   td	d
dtjd Y S w d }z	tjj	|d}W n
 tjyY   Y nw |d u retd	ddS |jsttd	d|j ddS tjj||d }|j|j|j|j|jd}	|rtddd|j|	dS tjj|||j|j|jt |j|d}
tdd	d|
j|	dS )N)data)r   registration_coder0   notes T)idr   Fz#Apparel item not found or inactive.)successmessage)r6   zRRegistration code not found. Only pre-registered paid members can collect apparel.zMember payment status is "z)". Only PAID members can collect apparel.)r,   r6   )	full_nameemailr6   payment_statusr,   z'Member has already collected this item.)r:   already_collectedr;   collected_atmember)r,   r6   r<   r=   r>   r@   r-   r7   z!Collection recorded successfully.)r   r5   is_validr   errorsr   HTTP_400_BAD_REQUESTvalidated_datastripr   r
   r   DoesNotExistHTTP_404_NOT_FOUNDr   is_paidr>   r   r   firstr<   r=   r6   namer@   creater   nowuser)r   r   
serializerr6   r0   r7   r,   rA   existingmember_datarecordr   r   r    post0   sp   
zScanApparelView.postN)r&   r'   r(   __doc__r   r*   rS   r   r   r   r    r4   ,   r3   r4   c                   @   s   e Zd ZegZdd ZdS )ApparelDashboardViewc                 C   sx   t jdjdd}g }|D ]$}||j|j|jr|jjnd |jt	|j
dd d ddjd qt|t|dS )	NcollectionsTr   z-collected_at   )many)r9   rK   
event_namecollection_countrecent_collections)itemstotal_active_items)r
   r   prefetch_relatedr   appendr9   rK   r   rZ   r   rV   order_byr5   r   len)r   r   r\   r5   itemr   r   r    r   x   s   
	zApparelDashboardView.getN)r&   r'   r(   r   r*   r   r   r   r   r    rU   u   s    rU   N)django.utilsr   rest_frameworkr   r   rest_framework.responser   rest_framework.viewsr   rest_framework.permissionsr   r   modelsr
   r   serializersr   r   r   apps.attendance.modelsr   ModelViewSetr   ReadOnlyModelViewSetr+   r4   rU   r   r   r   r    <module>   s    I