2026-04-04 06:44:54 +07:00
|
|
|
<?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', 'source_id' => $activity->id],
|
|
|
|
|
['points' => 10, 'reason' => "Hadir di kegiatan: {$activity->title}"]
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Poin dari artikel yang sudah published
|
|
|
|
|
Post::where('status', 'published')->each(function ($post) {
|
|
|
|
|
MemberPoint::firstOrCreate(
|
2026-04-04 08:25:27 +07:00
|
|
|
['user_id' => $post->author_id, 'source_type' => 'post', 'source_id' => $post->id],
|
2026-04-04 06:44:54 +07:00
|
|
|
['points' => 5, 'reason' => "Artikel dipublikasi: {$post->title}"]
|
|
|
|
|
);
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|