from django.core.management.base import BaseCommand
from products.models import Settings
from django.conf import settings
import os, logging, json
from pathlib import Path

logging.basicConfig(
    level=logging.DEBUG, format="%(asctime)s - %(levelname)s - %(message)s"
)

BASE_DIR = Path(__file__).resolve().parent.parent.parent.parent


class Command(BaseCommand):
    help = "Create a setting if none exists"

    def handle(self, *args, **options):
        file_path = f"{BASE_DIR}/caracole_ph_api/app_settings.json"
        if not os.path.exists(file_path):
            logging.error(
                f"Settings JSON File not found at {file_path}. Cannot creating settings."
            )
            pass
        else:
            logging.info("Creating settings from JSON file.")

            with open(file_path, "r") as file:
                settings_data = json.load(file)

            all_settings = settings_data["settings"]

            for setting in all_settings:
                existing_setting = Settings.objects.filter(
                    name__icontains=setting["name"]
                ).exists()

                if not existing_setting:
                    Settings.objects.create(
                        name=setting["name"],
                        type=setting["type"],
                        options=setting["options"],
                        value=setting["value"],
                    )
                    self.stdout.write(
                        self.style.SUCCESS(f"Setting '{setting["name"]}' created.")
                    )
                else:
                    self.stdout.write(
                        self.style.SUCCESS(
                            f"Setting '{setting["name"]}' already exists."
                        )
                    )
