from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from src.core.database import get_db
from src.apps.auth.utils.auth import get_current_merchant, get_current_superuser
from src.apps.settings import services
from src.apps.settings.schemas.discounts import (
    SeedSettingsRequest,
    SeedSettingsResponse,
    ResetSettingsRequest,
    ResetSettingsResponse,
)

router = APIRouter()


@router.post("/reset")
async def reset_settings(
    data: ResetSettingsRequest,
    current_merchant=Depends(get_current_merchant),
    db: Session = Depends(get_db),
):
    result = services.reset_settings(current_merchant.id, data.groups, db)
    db.commit()
    return ResetSettingsResponse(reset_groups=data.groups, settings=result)


@router.post("/seed", response_model=SeedSettingsResponse)
async def seed_merchant_settings(
    data: SeedSettingsRequest,
    _=Depends(get_current_superuser),
    db: Session = Depends(get_db),
):
    result = services.seed_for_merchant(data.merchant_id, data.groups, data.overwrite, db)
    db.commit()
    return SeedSettingsResponse(merchant_id=data.merchant_id, **result)


@router.post("/seed/all")
async def seed_all_merchants(
    _=Depends(get_current_superuser),
    db: Session = Depends(get_db),
):
    result = services.seed_all_merchants(db)
    db.commit()
    return result
