from rest_framework import serializers
from .models import *
from admin_panel.models  import *
from auth_apis.models import *


class HelpAndSupportSerializer(serializers.Serializer):
    title = serializers.CharField(required = True)
    description = serializers.CharField(required=True)


class GetSubCategoriesDataArabic(serializers.ModelSerializer):
    class Meta:
        model=Subcategories
        fields=['id','category_name_arabic','maincategory','category_icon','category_content_arabic','status']

class GetCategoriesDataArabic(serializers.ModelSerializer):
    subCategories_arabic=serializers.SerializerMethodField(source='get_subCategories_arabic')
    class Meta:
        model=MainCategories
        fields=['id','category_name_arabic','category_icon','category_content_arabic','status','subCategories_arabic']
    
    def get_subCategories_arabic(self,obj):
        theSubCategories=Subcategories.objects.filter(maincategory=obj,status=1,end_date__isnull=True).order_by('id')
        return GetSubCategoriesDataArabic(theSubCategories,many=True).data


class GetSubCategoriesDataEnglish(serializers.ModelSerializer):
    class Meta:
        model=Subcategories
        fields=['id','category_name_english','maincategory','category_icon','category_content_english','status']

class GetCategoriesDataEnglish(serializers.ModelSerializer):
    subCategories_english=serializers.SerializerMethodField(source='get_subCategories_english')
    class Meta:
        model=MainCategories
        fields=['id','category_name_english','category_icon','category_content_english','status','subCategories_english']
    
    def get_subCategories_english(self,obj):
        theSubCategories=Subcategories.objects.filter(maincategory=obj,status=1,end_date__isnull=True).order_by('id')
        return GetSubCategoriesDataEnglish(theSubCategories,many=True).data

class StoreRequestSerializer(serializers.Serializer):
    first_name =  serializers.CharField(required = True,error_messages={'required':'First name is required.'})
    last_name =  serializers.CharField(required = True,error_messages={'required':'Last name is required.'})
    address =  serializers.CharField(required = True,error_messages={'required':'Address is required.'})
    email =  serializers.CharField(required = True,error_messages={'required':'Email is required.'})
    isd_code = serializers.CharField(required = True,error_messages={'required':'Country code is required.'})
    mobile_number =  serializers.CharField(required = True,error_messages={'required':'Phone number is required.'})
    id_number =  serializers.CharField(required = True,error_messages={'required':'Id number is required.'})
    bank_name =  serializers.CharField(required = True,error_messages={'required':'Bank name is required.'})
    bank_account_number =   serializers.CharField(required = True,error_messages={'required':'Bank account number is required.'})

class AddToCartSerializer(serializers.Serializer):
    product_id = serializers.CharField(required=True,error_messages={'required':'Product Id is required.'})
    quantity = serializers.CharField(required=True,error_messages={'required':'Quantity is required.'})

class GetAddressData(serializers.ModelSerializer):
    class Meta:
        model = Addresses
        fields = ['id','address_label','name','address_line','country','state','city','latitude','longitude','pin_code','isd_code','phone_number','user','is_default']

