from flask import (
    Blueprint,
    render_template,
    redirect,
    url_for,
    session,
    flash,
    request
)

from extensions import db
from models import SiteSetting


settings_bp = Blueprint("settings", __name__)


# ============================================================
# ADMIN SETTINGS
# ============================================================

@settings_bp.route(
    "/admin/settings",
    methods=["GET", "POST"],
    endpoint="admin_settings"
)
def admin_settings():

    if "user_id" not in session:
        return redirect(url_for("auth.login"))

    site_setting = SiteSetting.query.first()

    if not site_setting:

        site_setting = SiteSetting()

        db.session.add(site_setting)
        db.session.commit()

    if request.method == "POST":

        site_setting.business_name = request.form.get(
            "business_name",
            ""
        ).strip()

        site_setting.site_url = request.form.get(
            "site_url",
            ""
        ).strip()

        site_setting.logo = request.form.get(
            "logo",
            ""
        ).strip()

        site_setting.phone = request.form.get(
            "phone",
            ""
        ).strip()

        site_setting.email = request.form.get(
            "email",
            ""
        ).strip()

        site_setting.address = request.form.get(
            "address",
            ""
        ).strip()

        site_setting.whatsapp_number = request.form.get(
            "whatsapp_number",
            ""
        ).strip()

        site_setting.facebook_url = request.form.get(
            "facebook_url",
            ""
        ).strip()

        site_setting.instagram_url = request.form.get(
            "instagram_url",
            ""
        ).strip()

        site_setting.default_meta_title = request.form.get(
            "default_meta_title",
            ""
        ).strip()

        site_setting.default_meta_description = request.form.get(
            "default_meta_description",
            ""
        ).strip()

        db.session.commit()

        flash(
            "Website settings updated successfully.",
            "success"
        )

        return redirect(
            url_for("settings.admin_settings")
        )

    return render_template(
        "admin/settings.html",
        site_setting=site_setting
    )