from rest_framework.serializers import ModelSerializer, Serializer
from rest_framework import serializers

from core.utils.helper import format_amount_with_currency

from decimal import Decimal

from apps.employee.models import Activity



class SummaryActivitySerializer(ModelSerializer):
    project_name = serializers.CharField(source='project.name')
    activity_type = serializers.CharField(source='activity_type.name')
    employee_name = serializers.CharField(source='user.get_full_name', read_only=True)
    is_resumable_activity = serializers.BooleanField()
    total_amount = serializers.SerializerMethodField()

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

    def get_total_amount(self, obj):

        total_amount= sum(obj.total_duration.total_seconds() / 3600 * obj.pay_per_hour if obj.total_duration and obj.pay_per_hour else 0 for obj in [obj])

        formatted_total_amount = format_amount_with_currency(total_amount)
        return formatted_total_amount


class SummaryActivityDurationSerializer(Serializer):
    date = serializers.DateField()
    total_duration_sum = serializers.DurationField()
