"""Celery application configuration for PREPOC ERP."""
import os

from celery import Celery
from celery.schedules import crontab

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "config.settings.development")

app = Celery("prepoc_erp")
app.config_from_object("django.conf:settings", namespace="CELERY")
app.autodiscover_tasks()

# ─── Periodic Tasks ───────────────────────────────────────────────────────────

app.conf.beat_schedule = {
    # Mark overdue invoices daily at 08:00
    "mark-overdue-invoices": {
        "task": "apps.finance.tasks.mark_overdue_invoices",
        "schedule": crontab(hour=8, minute=0),
    },
    # Send attendance reminders daily at 09:30
    "attendance-reminder": {
        "task": "apps.hr.tasks.send_attendance_reminder",
        "schedule": crontab(hour=9, minute=30),
    },
    # Generate monthly payslips on 28th at 10:00
    "generate-monthly-payslips": {
        "task": "apps.payroll.tasks.generate_monthly_payslips",
        "schedule": crontab(hour=10, minute=0, day_of_month=28),
    },
    # Clean expired sessions daily at midnight
    "clean-expired-sessions": {
        "task": "apps.accounts.tasks.clean_expired_sessions",
        "schedule": crontab(hour=0, minute=0),
    },
    # Send meeting reminders every 15 minutes
    "send-meeting-reminders": {
        "task": "apps.communication.tasks.send_meeting_reminders",
        "schedule": crontab(minute="*/15"),
    },
}


@app.task(bind=True, ignore_result=True)
def debug_task(self):
    print(f"Request: {self.request!r}")
