package app.closer.data.repository

import app.closer.domain.model.DateCostLevel
import app.closer.domain.model.DateIdea

/**
 * Seed catalog of curated date ideas for the Date Match MVP.
 *
 * 30+ ideas across Adventure, Travel, Food, Learning, Romance, Intimacy, and
 * Seasonal categories. A subset are premium (isPremium = true). The same seed
 * is also written to the Firestore `date_ideas` collection via server-side seed
 * function; the app ships an in-memory copy so ideas are immediately available
 * offline.
 */
object DateIdeaSeed {

    val all: List<DateIdea> = listOf(
        // Adventure
        DateIdea(
            id = "adventure_sunrise_hike",
            title = "Sunrise hike + thermos coffee",
            description = "Pick a nearby overlook, pack warm drinks, and watch the sky change together.",
            category = "adventure",
            estimatedDuration = "2–3 hours",
            estimatedCost = DateCostLevel.FREE,
            isPremium = false
        ),
        DateIdea(
            id = "adventure_kayak",
            title = "Kayak or canoe rental",
            description = "Spend a quiet morning paddling a local lake or river.",
            category = "adventure",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "adventure_rock_climbing",
            title = "Indoor rock climbing",
            description = "Try a beginner climbing gym session and cheer each other up the wall.",
            category = "adventure",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "adventure_overnight_camping",
            title = "Overnight camping getaway",
            description = "Pack a tent and disappear for one night somewhere with dark skies.",
            category = "adventure",
            estimatedDuration = "1–2 days",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = true
        ),
        DateIdea(
            id = "adventure_zipline",
            title = "Zipline canopy tour",
            description = "Fly through the trees on a guided zip-line course.",
            category = "adventure",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),

        // Travel
        DateIdea(
            id = "travel_day_town",
            title = "Day trip to a nearby town",
            description = "Drive somewhere neither of you has explored and wander without an itinerary.",
            category = "travel",
            estimatedDuration = "Full day",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "travel_scenic_drive",
            title = "Scenic drive with a playlist",
            description = "Build a shared playlist, pick a pretty route, and stop for snacks.",
            category = "travel",
            estimatedDuration = "3–4 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "travel_weekend_escape",
            title = "Surprise weekend escape",
            description = "One partner plans the destination; the other packs a bag blind.",
            category = "travel",
            estimatedDuration = "2 days",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),
        DateIdea(
            id = "travel_roadside_attractions",
            title = "Roadside attractions tour",
            description = "Find the weirdest small attractions within a two-hour radius and visit three.",
            category = "travel",
            estimatedDuration = "Full day",
            estimatedCost = DateCostLevel.LOW,
            isPremium = true
        ),

        // Food
        DateIdea(
            id = "food_farmers_market",
            title = "Farmers market breakfast",
            description = "Buy fresh pastries and fruit, then eat somewhere people-watching is easy.",
            category = "food",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "food_cook_together",
            title = "Cook a new cuisine together",
            description = "Pick a recipe neither of you has made, shop together, and make a mess.",
            category = "food",
            estimatedDuration = "3 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "food_food_truck_crawl",
            title = "Food truck crawl",
            description = "Share three different dishes from three different trucks.",
            category = "food",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "food_tasting_menu",
            title = "Tasting menu dinner",
            description = "Book a special restaurant and make an evening of every course.",
            category = "food",
            estimatedDuration = "3 hours",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),
        DateIdea(
            id = "food_winery_tour",
            title = "Winery or brewery tour",
            description = "Taste flights, learn something, and bring home a bottle to share later.",
            category = "food",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),
        DateIdea(
            id = "food_pizza_night",
            title = "Homemade pizza night",
            description = "Make dough from scratch and compete for the most ridiculous topping combo.",
            category = "food",
            estimatedDuration = "2–3 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),

        // Learning
        DateIdea(
            id = "learning_museum",
            title = "Museum or gallery visit",
            description = "Walk slowly through an exhibit and share the one piece that moved you most.",
            category = "learning",
            estimatedDuration = "2–3 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "learning_dance_class",
            title = "Beginner dance class",
            description = "Try salsa, swing, or ballroom — no experience required.",
            category = "learning",
            estimatedDuration = "1.5 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "learning_workshop",
            title = "Creative workshop",
            description = "Pottery, painting, woodworking — make something tangible together.",
            category = "learning",
            estimatedDuration = "2–3 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "learning_language",
            title = "Learn a language lesson together",
            description = "Pick a travel destination and learn ten phrases as a team.",
            category = "learning",
            estimatedDuration = "1 hour",
            estimatedCost = DateCostLevel.FREE,
            isPremium = true
        ),
        DateIdea(
            id = "learning_lecture",
            title = "Attend a lecture or talk",
            description = "Find a local speaker on a topic you both know nothing about.",
            category = "learning",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = true
        ),

        // Romance
        DateIdea(
            id = "romance_sunset_picnic",
            title = "Sunset picnic",
            description = "Pack a blanket, simple snacks, and watch the sun go down somewhere quiet.",
            category = "romance",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "romance_stargazing",
            title = "Stargazing with blankets",
            description = "Drive away from city lights, lie back, and name constellations.",
            category = "romance",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.FREE,
            isPremium = false
        ),
        DateIdea(
            id = "romance_couples_massage",
            title = "Couples massage",
            description = "Book side-by-side treatments and unwind together.",
            category = "romance",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),
        DateIdea(
            id = "romance_sunset_sail",
            title = "Sunset sail or boat cruise",
            description = "Catch the golden hour from the water with a drink in hand.",
            category = "romance",
            estimatedDuration = "2–3 hours",
            estimatedCost = DateCostLevel.HIGH,
            isPremium = true
        ),
        DateIdea(
            id = "romance_home_spa",
            title = "At-home spa night",
            description = "Face masks, candles, soft music, and zero pressure to do anything else.",
            category = "romance",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),

        // Intimacy
        DateIdea(
            id = "intimacy_question_deck",
            title = "Deeper question card night",
            description = "Use a deck of intimacy prompts and answer them honestly over wine or tea.",
            category = "intimacy",
            estimatedDuration = "1.5 hours",
            estimatedCost = DateCostLevel.FREE,
            isPremium = false
        ),
        DateIdea(
            id = "intimacy_slow_cook",
            title = "Slow-cook dinner with no phones",
            description = "Make a meal that takes real time and spend every minute talking.",
            category = "intimacy",
            estimatedDuration = "3–4 hours",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "intimacy_letters",
            title = "Write each other letters",
            description = "Handwrite what you appreciate about each other, seal them, then read aloud.",
            category = "intimacy",
            estimatedDuration = "1 hour",
            estimatedCost = DateCostLevel.FREE,
            isPremium = true
        ),
        DateIdea(
            id = "intimacy_trust_exercise",
            title = "Guided trust exercise",
            description = "Follow a short couples communication exercise with eye contact and listening.",
            category = "intimacy",
            estimatedDuration = "1 hour",
            estimatedCost = DateCostLevel.FREE,
            isPremium = true
        ),
        DateIdea(
            id = "intimacy_walk_memory_lane",
            title = "Walk down memory lane",
            description = "Visit the place you first met or had your first real date and retell the story.",
            category = "intimacy",
            estimatedDuration = "1.5 hours",
            estimatedCost = DateCostLevel.FREE,
            isPremium = false
        ),

        // Seasonal
        DateIdea(
            id = "seasonal_ice_skating",
            title = "Ice skating",
            description = "Hold hands, wobble, and warm up with hot cocoa afterward.",
            category = "seasonal",
            estimatedDuration = "2 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = false
        ),
        DateIdea(
            id = "seasonal_fall_foliage",
            title = "Fall foliage drive",
            description = "Take the prettiest route, stop for cider, and take a silly photo together.",
            category = "seasonal",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "seasonal_beach_day",
            title = "Off-season beach day",
            description = "Go to the beach when it is nearly empty and walk the shoreline.",
            category = "seasonal",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),
        DateIdea(
            id = "seasonal_holiday_lights",
            title = "Holiday lights walk",
            description = "Find the most over-decorated neighborhood and stroll after dark.",
            category = "seasonal",
            estimatedDuration = "1 hour",
            estimatedCost = DateCostLevel.FREE,
            isPremium = true
        ),
        DateIdea(
            id = "seasonal_pumpkin_patch",
            title = "Pumpkin patch or apple orchard",
            description = "Pick seasonal produce and turn it into something tasty at home.",
            category = "seasonal",
            estimatedDuration = "Half day",
            estimatedCost = DateCostLevel.LOW,
            isPremium = false
        ),

        // Bonus evening-friendly ideas
        DateIdea(
            id = "romance_rooftop_drink",
            title = "Rooftop drink at golden hour",
            description = "Find the highest bar with outdoor space and watch the city light up.",
            category = "romance",
            estimatedDuration = "1.5 hours",
            estimatedCost = DateCostLevel.MEDIUM,
            isPremium = true
        ),
        DateIdea(
            id = "adventure_bike_ride",
            title = "Neighborhood bike ride",
            description = "Borrow or rent bikes and explore streets you usually drive past.",
            category = "adventure",
            estimatedDuration = "1.5 hours",
            estimatedCost = DateCostLevel.FREE,
            isPremium = false
        )
    )

    fun byId(id: String): DateIdea? = all.find { it.id == id }
}
