from django.shortcuts import render, redirect, get_object_or_404
from django.views import View
from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator
from django.contrib import messages
from .models import WebsiteSettings
from codesofy_lib.custom_config import get_global_master_details, set_menu_items, set_user_profile
from datetime import datetime

menu_item = "settings"

def get_local_master_details():
    return get_global_master_details()


@method_decorator(login_required, name='dispatch')
class SettingsView(View):
    def get(self, request):
        if not request.user.is_staff:
            messages.error(request, "You don't have permission to access this page.")
            return redirect('welcome')
        
        context = get_local_master_details()
        context = set_menu_items(menu_item, 'settings', context)
        
        # Get or create settings
        settings, created = WebsiteSettings.objects.get_or_create(id=1)
        context['settings'] = settings
        context['dt_string'] = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        
        user_profile = set_user_profile(request, context)
        context['logged_user_profile'] = user_profile
        
        return render(request, 'settings.html', context)
    
    def post(self, request):
        if not request.user.is_staff:
            messages.error(request, "You don't have permission to access this page.")
            return redirect('welcome')
        
        settings, created = WebsiteSettings.objects.get_or_create(id=1)
        
        # General Settings
        settings.company_name = request.POST.get('company_name')
        settings.company_tagline = request.POST.get('company_tagline')
        
        if request.FILES.get('company_logo'):
            settings.company_logo = request.FILES.get('company_logo')
        if request.FILES.get('company_favicon'):
            settings.company_favicon = request.FILES.get('company_favicon')
        if request.FILES.get('footer_logo'):
            settings.footer_logo = request.FILES.get('footer_logo')
        
        # Contact Settings
        settings.contact_email = request.POST.get('contact_email')
        settings.contact_phone = request.POST.get('contact_phone')
        settings.contact_address = request.POST.get('contact_address')
        settings.contact_map = request.POST.get('contact_map', '')
        
        # Social Media
        settings.facebook_url = request.POST.get('facebook_url', '')
        settings.twitter_url = request.POST.get('twitter_url', '')
        settings.linkedin_url = request.POST.get('linkedin_url', '')
        settings.instagram_url = request.POST.get('instagram_url', '')
        settings.youtube_url = request.POST.get('youtube_url', '')
        
        # SEO Settings
        settings.meta_title = request.POST.get('meta_title', '')
        settings.meta_description = request.POST.get('meta_description', '')
        settings.meta_keywords = request.POST.get('meta_keywords', '')
        
        # Footer Settings
        settings.footer_copyright = request.POST.get('footer_copyright', '')
        
        settings.save()
        
        messages.success(request, "Settings updated successfully!")
        return redirect('settings')