"""
Simple test to trigger burnout notification
"""

import os
import sys
import django

sys.path.append(os.path.dirname(os.path.abspath(__file__)))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'worktimeapp.settings')
django.setup()

from datetime import datetime, date, timedelta
from stamps.models import Stamp
from user.models import User
from functions.models import Function

TEST_USER_ID = "575f8050-e027-4db9-9ff1-31e0b1b7dfad"

print("Creating test stamps...")
try:
    user = User.objects.get(id=TEST_USER_ID)
    print(f"Found user: {user.firstname} {user.lastname}")
except:
    print(f"User {TEST_USER_ID} not found")
    sys.exit(1)

# Get clock in/out functions
clock_in_func = Function.objects.filter(question_type='clock_in').first()
clock_out_func = Function.objects.filter(question_type='clock_out').first()

if not clock_in_func or not clock_out_func:
    print("Creating functions...")
    clock_in_func, _ = Function.objects.get_or_create(
        function_ref_id='clock_in_001',
        defaults={'name': 'Clock In', 'out': False, 'break_flag': False, 'pre_function': False, 'question_type': 'clock_in'}
    )
    clock_out_func, _ = Function.objects.get_or_create(
        function_ref_id='clock_out_001',
        defaults={'name': 'Clock Out', 'out': True, 'break_flag': False, 'pre_function': False, 'question_type': 'clock_out'}
    )

# Create 5 days of excessive work (10 hours/day)
for day in range(5):
    stamp_date = date.today() - timedelta(days=day)
    
    clock_in = datetime.combine(stamp_date, datetime.strptime('07:00:00', '%H:%M:%S').time())
    clock_out = datetime.combine(stamp_date, datetime.strptime('17:30:00', '%H:%M:%S').time())
    
    Stamp.objects.update_or_create(
        user=user, date=stamp_date, time=clock_in.time(), stamp_function=clock_in_func.id,
        defaults={'description': f'Test - {day+1}', 'start_date': clock_in}
    )
    
    Stamp.objects.update_or_create(
        user=user, date=stamp_date, time=clock_out.time(), stamp_function=clock_out_func.id,
        defaults={'description': f'Test - {day+1}', 'start_date': clock_out}
    )
    
    print(f"Day {day+1}: Created stamps for {stamp_date}")

print("\nTest stamps created!")
print("Now run the analysis...")

# Trigger analysis
from ml_service.burnout_detector import BurnoutDetector
detector = BurnoutDetector(TEST_USER_ID)
analysis = detector.analyze_user(days=30)

if analysis:
    print(f"\nRisk Score: {analysis['risk_score']}/100")
    print(f"Severity: {analysis['severity']}")
    
    # Create notification
    from ml_service.models import BurnoutNotification
    notif = BurnoutNotification.objects.create(
        user_id=TEST_USER_ID,
        notification_type='burnout_alert',
        title='Warning: High Burnout Risk',
        message=f'Your work patterns show {analysis["risk_score"]}/100 burnout risk.',
        risk_score=analysis['risk_score'],
        recommendation=analysis['recommendations'][0] if analysis['recommendations'] else {}
    )
    print(f"\nNotification created: {notif.id}")
    print(f"Title: {notif.title}")
    print(f"Message: {notif.message}")
    print("\nCheck your app for the notification!")
else:
    print("No analysis returned")

