from rest_framework.serializers import ModelSerializer
from rest_framework import serializers

from core.utils.helper import timedelta_to_custom_format, duration_string_to_timedelta

from apps.employee.models import Activity



class DashboardActivitySerializer(ModelSerializer):
    project_name = serializers.CharField(source='project.name')
    activity_type = serializers.CharField(source='activity_type.name')
    is_activity_type_active = serializers.BooleanField(source='activity_type.is_active')

    class Meta:
        model = Activity
        fields = ('id', 'project_id', 'project_name', 'activity_type_id', 'activity_type', 'is_activity_type_active', 'start_date_time', 'end_date_time', 'total_duration', 'description', 'deleted_at',)
        read_only_fields = fields

    def to_representation(self, instance):
        res = super().to_representation(instance)
        res['total_duration'] = timedelta_to_custom_format(duration_string_to_timedelta(res['total_duration']))

        return res
