"""Seed sample notifications for the admin user."""
import sys, os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

from datetime import datetime, timedelta
from app.database import SessionLocal
from app.models.alert import Notification
from app.models.user import User
import uuid

db = SessionLocal()

admin = db.query(User).filter(User.username == "admin").first()
if not admin:
    print("No admin user found.")
    sys.exit(1)

now = datetime.utcnow()

sample_notifications = [
    {
        "title": "Watering due today for Tomato",
        "message": "Watering is scheduled for today. Don't forget to water your Tomato plants!",
        "type": "care_due",
        "link": "/farmer/tasks",
        "offset_hours": -1,
        "is_read": False,
    },
    {
        "title": "Fertilizer due today for Aloe Vera",
        "message": "Apply NPK fertilizer to your Aloe Vera plants today.",
        "type": "care_due",
        "link": "/farmer/tasks",
        "offset_hours": -2,
        "is_read": False,
    },
    {
        "title": "Watering overdue for Tomato",
        "message": "Watering was due 2 days ago. Your Tomato plants need water urgently!",
        "type": "care_overdue",
        "link": "/farmer/tasks",
        "offset_hours": -48,
        "is_read": False,
    },
    {
        "title": "Spray treatment due for Aloe Vera",
        "message": "Neem oil spray is due today for pest prevention.",
        "type": "care_due",
        "link": "/farmer/tasks",
        "offset_hours": -3,
        "is_read": True,
    },
    {
        "title": "Harvest window approaching for Tomato",
        "message": "Your Tomato plants were activated 50 days ago. Consider harvesting soon for best quality.",
        "type": "harvest_reminder",
        "link": "/farmer/plants/c92682ad-3c28-41d3-a512-1ebe5b33bab5",
        "offset_hours": -5,
        "is_read": False,
    },
    {
        "title": "Pruning overdue for Aloe Vera",
        "message": "Pruning was due 3 days ago. Remove dead leaves to improve growth.",
        "type": "care_overdue",
        "link": "/farmer/tasks",
        "offset_hours": -72,
        "is_read": True,
    },
    {
        "title": "Inspection completed for Tomato",
        "message": "Weekly plant inspection has been recorded. Health status: Good.",
        "type": "info",
        "link": "/farmer/plants/c92682ad-3c28-41d3-a512-1ebe5b33bab5",
        "offset_hours": -10,
        "is_read": True,
    },
    {
        "title": "Weather alert: Rain expected tomorrow",
        "message": "Heavy rain is forecast for tomorrow. Consider delaying watering schedules.",
        "type": "weather_alert",
        "link": "/farmer/tasks",
        "offset_hours": -6,
        "is_read": False,
    },
]

count = 0
for n in sample_notifications:
    existing = db.query(Notification).filter(
        Notification.user_id == admin.id,
        Notification.title == n["title"],
    ).first()
    if existing:
        continue

    notif = Notification(
        id=str(uuid.uuid4()),
        user_id=admin.id,
        title=n["title"],
        message=n["message"],
        type=n["type"],
        link=n["link"],
        is_read=n["is_read"],
        created_at=now + timedelta(hours=n["offset_hours"]),
    )
    db.add(notif)
    count += 1

db.commit()
print(f"Created {count} sample notifications for admin user.")
db.close()
