o
    mi;                     @   s   d dl mZ d dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ G dd	 d	eZG d
d deZG dd deZdS )    )Project)ActivityType)User)timedelta_to_custom_formatduration_string_to_timedeltaformat_amount_with_currency)ModelSerializer)serializers)Decimalc                       s2   e Zd Ze ZG dd dZ fddZ  ZS )ProjectSerializerc                   @      e Zd ZeZdZdS )zProjectSerializer.Meta)idnametotal_hoursN)__name__
__module____qualname__r   modelfields r   r   K/var/www/html/kuke-dev/django-kuke/apps/user/serializers/admin_dashboard.pyMeta       r   c                    $   t  |}tt|d |d< |S )Nr   superto_representationr   r   selfinstanceres	__class__r   r   r         z#ProjectSerializer.to_representation)	r   r   r   r	   DurationFieldr   r   r   __classcell__r   r   r!   r   r      s    r   c                   @   s"   e Zd Ze ZG dd dZdS )ActivityTypeSerializerc                   @   r   )zActivityTypeSerializer.Meta)r   r   activity_countN)r   r   r   r   r   r   r   r   r   r   r      r   r   N)r   r   r   r	   IntegerFieldr'   r   r   r   r   r   r&      s    r&   c                       sP   e Zd Ze ZejdddZe Z	G dd dZ
dd Z fdd	Z  ZS )
UserSerializerget_full_nameT)source	read_onlyc                   @   r   )zUserSerializer.Meta)r   	full_nametotal_durationtotal_amountN)r   r   r   r   r   r   r   r   r   r   r   '   r   r   c                 C   sF   | j d}| j d}|jj||d}tdd |D }t|}|S )N
start_dateend_date)Zstart_date_time__date__gteZstart_date_time__date__ltec                 s   s4    | ]}|j r|jr|j  d  |j ndV  qdS )i  r   N)r.   pay_per_hourtotal_seconds).0activityr   r   r   	<genexpr>3   s   2 z2UserSerializer.get_total_amount.<locals>.<genexpr>)contextgetactivity_setfiltersumr   )r   r   r0   r1   
activitiesr/   formatted_total_amountr   r   r   get_total_amount+   s   zUserSerializer.get_total_amountc                    r   )Nr.   r   r   r!   r   r   r   7   r#   z UserSerializer.to_representation)r   r   r   r	   r$   r.   	CharFieldr-   SerializerMethodFieldr/   r   r>   r   r%   r   r   r!   r   r)   "   s    r)   N)apps.project.modelsr   apps.employee.modelsr   apps.user.modelsr   core.utils.helperr   r   r   rest_framework.serializersr   rest_frameworkr	   decimalr
   r   r&   r)   r   r   r   r   <module>   s    