59 lines
2.0 KiB
Python
59 lines
2.0 KiB
Python
from fastapi import APIRouter
|
|
|
|
from backend.db.database import get_connection
|
|
from backend.services.settings_service import get_income_settings, set_income_settings
|
|
from pydantic import BaseModel
|
|
|
|
router = APIRouter(prefix="/api/settings", tags=["settings"])
|
|
|
|
|
|
class IncomeSettingsBody(BaseModel):
|
|
count_income_only_salary_card: bool
|
|
salary_account_id: int | None = None
|
|
|
|
|
|
@router.get("/income")
|
|
def get_income_settings_api():
|
|
"""Настройки учёта доходов + список счетов зарплатного банка для выбора карты."""
|
|
only_card, account_id = get_income_settings()
|
|
conn = get_connection()
|
|
try:
|
|
rows = conn.execute("""
|
|
SELECT a.id, a.external_id, a.name, b.name as bank_name
|
|
FROM accounts a
|
|
JOIN banks b ON a.bank_id = b.id
|
|
WHERE b.is_salary = 1
|
|
ORDER BY a.external_id
|
|
""").fetchall()
|
|
salary_accounts = [dict(r) for r in rows]
|
|
finally:
|
|
conn.close()
|
|
return {
|
|
"count_income_only_salary_card": only_card,
|
|
"salary_account_id": account_id,
|
|
"salary_accounts": salary_accounts,
|
|
}
|
|
|
|
|
|
@router.put("/income")
|
|
def put_income_settings(body: IncomeSettingsBody):
|
|
set_income_settings(body.count_income_only_salary_card, body.salary_account_id)
|
|
return {"count_income_only_salary_card": body.count_income_only_salary_card, "salary_account_id": body.salary_account_id}
|
|
|
|
|
|
@router.get("/exclude-transfers")
|
|
def get_exclude_transfers_api():
|
|
from backend.services.settings_service import get_exclude_transfers
|
|
return {"exclude_transfers": get_exclude_transfers()}
|
|
|
|
|
|
class ExcludeTransfersBody(BaseModel):
|
|
exclude_transfers: bool
|
|
|
|
|
|
@router.put("/exclude-transfers")
|
|
def put_exclude_transfers_api(body: ExcludeTransfersBody):
|
|
from backend.services.settings_service import set_exclude_transfers
|
|
set_exclude_transfers(body.exclude_transfers)
|
|
return {"exclude_transfers": body.exclude_transfers}
|