from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from backend.app.api.deps import require_roles from backend.app.db import get_db_session from backend.app.schemas.common import success_payload from backend.app.services.reminder_service import reminder_service router = APIRouter(prefix="/api/reminders", tags=["reminders"]) @router.get("") def list_reminders( reminder_type: str | None = Query(default=None), status: str | None = Query(default=None), receiver_user_id: int | None = Query(default=None), page_no: int = Query(default=1), page_size: int = Query(default=20), session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("salesman", "manager", "admin")), ) -> dict: return success_payload( reminder_service.list_reminders( session, { "reminder_type": reminder_type, "status": status, "receiver_user_id": receiver_user_id, "page_no": page_no, "page_size": page_size, }, ) ) @router.post("/{reminder_id}/read") def read_reminder( reminder_id: int, session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("salesman", "manager", "admin")), ) -> dict: return success_payload(reminder_service.read_reminder(reminder_id, session)) @router.post("/arrears/check") def check_arrears_reminders( session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), ) -> dict: return success_payload(reminder_service.check_arrears(session)) @router.post("/inactive-customers/check") def check_inactive_customer_reminders( session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), ) -> dict: return success_payload(reminder_service.check_inactive_customers(session)) @router.post("/logistics-timeout/check") def check_logistics_timeout_reminders( session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), ) -> dict: return success_payload(reminder_service.check_logistics_timeout(session)) @router.post("/check-all") def check_all_reminders( session: Session = Depends(get_db_session), current_user: dict = Depends(require_roles("manager", "admin")), ) -> dict: return success_payload(reminder_service.check_all(session))