from rest_framework.views import APIView
from rest_framework.response import Response
from apps.masterdata.platform_setting import PlatformSetting


class PlatformSettingsView(APIView):
    authentication_classes = []
    permission_classes = []

    LANGUAGE_OPTIONS = [
        {"code": "en", "name": "English"},
        {"code": "hi", "name": "Hindi"},
        {"code": "bn", "name": "Bengali"},
        {"code": "te", "name": "Telugu"},
        {"code": "mr", "name": "Marathi"},
        {"code": "ta", "name": "Tamil"},
        {"code": "ur", "name": "Urdu"},
        {"code": "gu", "name": "Gujarati"},
        {"code": "kn", "name": "Kannada"},
        {"code": "ml", "name": "Malayalam"},
        {"code": "pa", "name": "Punjabi"},
        {"code": "or", "name": "Odia"},
        {"code": "es", "name": "Spanish"},
        {"code": "fr", "name": "French"},
        {"code": "de", "name": "German"},
        {"code": "ar", "name": "Arabic"},
        {"code": "zh-CN", "name": "Chinese (Simplified)"},
        {"code": "ru", "name": "Russian"},
        {"code": "ja", "name": "Japanese"},
        {"code": "pt", "name": "Portuguese"},
    ]

    @classmethod
    def _parse_enabled_languages(cls):
        raw = PlatformSetting.get_value(
            "enabled_languages",
            "en,hi,bn,te,mr,ta,ur,gu,kn,ml,pa,or",
        )
        values = [segment.strip() for segment in str(raw or "").split(",") if segment.strip()]
        if not values:
            values = ["en", "hi", "bn", "te", "mr", "ta", "ur", "gu", "kn", "ml", "pa", "or"]
        return values

    def get(self, request):
        active_mode = PlatformSetting.get_value("razorpay_active_mode", "test") or "test"
        active_key_id = PlatformSetting.get_value(
            "razorpay_live_key_id" if active_mode == "live" else "razorpay_test_key_id",
            "",
        )
        enabled_languages = self._parse_enabled_languages()

        return Response({
            "lucky_dip_allow_main_wallet": PlatformSetting.get_bool("lucky_dip_allow_main_wallet", True),
            "razorpay_active_mode": active_mode,
            "razorpay_active_key_id": active_key_id,
            "social_links": {
                "facebook": PlatformSetting.get_value("social_facebook_url", "") or "",
                "instagram": PlatformSetting.get_value("social_instagram_url", "") or "",
                "youtube": PlatformSetting.get_value("social_youtube_url", "") or "",
                "linkedin": PlatformSetting.get_value("social_linkedin_url", "") or "",
                "x": PlatformSetting.get_value("social_x_url", "") or "",
                "telegram": PlatformSetting.get_value("social_telegram_url", "") or "",
            },
            "enabled_languages": enabled_languages,
            "language_options": self.LANGUAGE_OPTIONS,
        })
