# PortalREMax/panel/apps.py
from django.apps import AppConfig
from django.conf import settings
import os
import logging

# Set up logging
logger = logging.getLogger('panel.apps')

class PanelConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'panel'

    def ready(self):
        import panel.signals  # Import signals when the app is ready

        def load_email_settings():
            from panel.models import EmailSettings
            try:
                email_settings = EmailSettings.objects.first()
                if email_settings:
                    settings.EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
                    settings.EMAIL_HOST = email_settings.smtp_server
                    settings.EMAIL_PORT = email_settings.smtp_port
                    settings.EMAIL_USE_SSL = email_settings.smtp_ssl
                    settings.EMAIL_USE_TLS = email_settings.smtp_tls
                    settings.EMAIL_HOST_USER = email_settings.smtp_user
                    settings.EMAIL_HOST_PASSWORD = email_settings.smtp_password
                    settings.DEFAULT_FROM_EMAIL = f"{email_settings.smtp_from_name} <{email_settings.smtp_from}>"
                    settings.EMAIL_REPLY_TO = email_settings.smtp_reply_to

                    # Email Test Settings
                    settings.EMAIL_USE_TEST = email_settings.smtp_test
                    settings.EMAIL_TEST = email_settings.smtp_test_email
                    settings.EMAIL_TEST_SUBJECT = email_settings.smtp_test_subject
                    settings.EMAIL_TEST_BODY = email_settings.smtp_test_message

                    # Handle Header & Footer Images (S3 or Local)
                    def get_file_url_or_path(file_field):
                        if file_field:
                            try:
                                return file_field.path  # Try local storage
                            except NotImplementedError:
                                return file_field.url  # Use S3 URL if `.path` fails
                        return None

                    settings.EMAIL_HEADER_IMAGE_PATH = get_file_url_or_path(email_settings.header_image)
                    settings.EMAIL_FOOTER_IMAGE_PATH = get_file_url_or_path(email_settings.footer_image)

                    logger.info("Email settings loaded successfully.")

                    # Additional email configuration if needed
                    settings.EMAIL_IMAP_SERVER = "mail.rdmail.com.br"
                    settings.EMAIL_IMAP_PORT = 993
                    settings.EMAIL_POP3_PORT = 995
                    settings.EMAIL_SMTP_PORT = 465

                else:
                    logger.warning("No email settings found in the database.")

            except Exception as e:
                logger.error(f"Error loading email settings: {e}")

        # Load the email settings when the app is ready
        load_email_settings()
