from rest_framework import serializers
from company_portfolio_business.serializers.company_portfolio_business import CompanyPortfolioBusinessSerializer
from company_review.serializers.service_review_serializer import CompanyReviewSerializer
from service.models.services import Services
from company_benefits.serializers.service_benefits_serializer import CompanyBenefitsSerializer
# from service_category.serializers.category_serializer import ServiceCategorySerializer
from company_service_offered.serializers.service_offered_serializers import CompanyServiceOfferedSerializer
from company_social_medias.serializers.serive_social_media_serializers import CompanySocialMediaSerializer
from contact_service_provider.serializers.contact_service_provider_serializer import ContactServiceProviderSerializer
from company_services.models.company import Companies

class CompanySerializer(serializers.ModelSerializer):
    id = serializers.ReadOnlyField()
    social_benefits = CompanyBenefitsSerializer(many=True, read_only=True)
    # categories = ServiceCategorySerializer(many=True,read_only=True)
    # service_offered = CompanyServiceOfferedSerializer(many=True,read_only=True)
    # social_medias = CompanySocialMediaSerializer(many=True,read_only=True)
    company_social_medias = CompanySocialMediaSerializer(many=True, read_only=True)
    # contact_service = ContactServiceProviderSerializer(many=True,read_only=True)
    company_business = CompanyPortfolioBusinessSerializer(many=True, read_only=True)
    company_service_offered = CompanyServiceOfferedSerializer(many=True, read_only=True)
    company_review = CompanyReviewSerializer(many=True,read_only=True)

    profile_picure_url_path = serializers.SerializerMethodField('get_profile_url')
    cover_picture_url_path = serializers.SerializerMethodField('get_cover_url')

    class Meta:
        model = Companies
        fields = ['id', 'name', 'title', 'category', 'location', 'service_type', 'employee_size', 'profile_picure_url','profile_picure_url_path', 'cover_picture_url','cover_picture_url_path', 'cover_picture_title', 'descriptions', 'website', 'phone_number',
            'created_by', 'updated_by', 'social_benefits','company_service_offered','company_social_medias','company_business','company_review','contact_number'
        ]
        read_only_fields = ['id', 'created_at', 'updated_at','social_benefits','company_service_offered','company_social_medias','company_business','company_review']
# 'company_benefits','service_category','company_service_offered','service_social'

    def get_profile_url(self, obj):
        request = self.context.get("request")
        if obj.profile_picure_url and hasattr(obj.profile_picure_url, 'url'):
            return request.build_absolute_uri(obj.profile_picure_url.url)
        return None

    def get_cover_url(self, obj):
        request = self.context.get("request")
        if obj.cover_picture_url and hasattr(obj.cover_picture_url, 'url'):
            return request.build_absolute_uri(obj.cover_picture_url.url)
        return None