<?php

namespace Database\Seeders;

use App\Models\Activity;
use App\Models\MemberPoint;
use App\Models\Post;
use App\Models\User;
use Illuminate\Database\Seeder;

class MemberPointSeeder extends Seeder
{
    public function run(): void
    {
        // Poin kehadiran dari kegiatan yang sudah executed
        Activity::whereNotNull('executed_at')->each(function ($activity) {
            $activity->participants()->wherePivot('status', 'hadir')->each(function ($user) use ($activity) {
                MemberPoint::firstOrCreate(
                    ['user_id' => $user->id, 'source_type' => Activity::class, 'source_id' => $activity->id],
                    ['points' => 10, 'reason' => "Hadir di kegiatan: {$activity->title}"]
                );
            });
        });

        // Poin dari artikel yang sudah approved
        Post::where('status', 'approved')->orWhere('status', 'published')->each(function ($post) {
            MemberPoint::firstOrCreate(
                ['user_id' => $post->author_id, 'source_type' => Post::class, 'source_id' => $post->id],
                ['points' => 5, 'reason' => "Artikel disetujui: {$post->title}"]
            );
        });
    }
}
