<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Article;
use App\Helpers\Helper;
use Carbon\Carbon;

class NewsArticleSeeder extends Seeder
{
    /**
     * Seed articles for news page pagination testing.
     * Creates enough articles so total published articles >= 25.
     */
    public function run()
    {
        $currentCount = Article::where('type', 'article')
            ->where('is_activated', 1)
            ->where('is_deleted', 0)
            ->count();

        $needed = max(0, 25 - $currentCount);

        if ($needed === 0) {
            print "Already have {$currentCount} published articles. No seeding needed.\n";
            return;
        }

        print "Current published articles: {$currentCount}. Creating {$needed} more...\n";

        $titles = [
            '春の着物コーディネート特集 - 桜の季節にぴったりの一着',
            '振袖レンタルの選び方ガイド2026',
            '結婚式にふさわしい着物の装い',
            '七五三の着物準備ガイド - お子様の晴れ姿を',
            '夏祭りに映える浴衣の着こなし術',
            '成人式の振袖トレンド最新情報',
            '着物のお手入れ方法 - 長く美しく保つために',
            '卒業式の袴スタイル完全ガイド',
            'お宮参りの着物マナーと選び方',
            '秋の紅葉シーズンに合う着物特集',
            '着物で楽しむ京都観光おすすめスポット',
            '初めての着物レンタル - よくある質問まとめ',
            '帯の結び方バリエーション紹介',
            '着物に合うヘアアレンジ特集',
            '冬の着物コーディネート - 防寒対策も万全に',
            'お正月の着物スタイル - 新年を華やかに',
            '着物の種類と格式について知ろう',
            '半幅帯で楽しむカジュアル着物',
            '着物アクセサリーの選び方',
            '雨の日の着物対策 - 便利グッズ紹介',
            '着物でお出かけ - 食事マナーのポイント',
            '男性の着物入門ガイド',
            'アンティーク着物の魅力と着こなし',
            '着物の色合わせの基本ルール',
            '季節の花柄着物コレクション',
            '着物のサイズ選びで失敗しないコツ',
            'レンタル着物の返却方法と注意点',
            '着物写真の撮り方テクニック',
            '着物でのお茶会マナー入門',
            '最新着物トレンド - モダンと伝統の融合',
        ];

        $baseDate = Carbon::now();

        for ($i = 0; $i < $needed; $i++) {
            $title = $titles[$i % count($titles)];
            if ($i >= count($titles)) {
                $title .= ' Vol.' . (intdiv($i, count($titles)) + 1);
            }

            $slug = Helper::slug($title) . '-' . time() . '-' . $i;
            $publishAt = $baseDate->copy()->subDays($needed - $i)->format('Y-m-d H:i:s');

            $content = '<div class="article-content">'
                . '<h2>' . $title . '</h2>'
                . '<p>着物は日本の伝統的な衣装であり、その美しさと優雅さは世界中で愛されています。'
                . '季節や行事に合わせた着物選びは、日本文化の奥深さを感じさせてくれます。</p>'
                . '<p>当店では、さまざまなシーンに合わせた着物をご用意しております。'
                . 'レンタルから購入まで、お客様のニーズに合わせたサービスを提供いたします。</p>'
                . '<p>ぜひお気軽にご相談ください。専門スタッフが丁寧にご案内いたします。</p>'
                . '</div>';

            Article::create([
                'title'        => $title,
                'slug'         => $slug,
                'description'  => mb_substr($title, 0, 100) . ' - 着物レンタル・販売のお知らせ',
                'content'      => $content,
                'type'         => 'article',
                'important'    => 0,
                'view_number'  => rand(0, 150),
                'publish_at'   => $publishAt,
                'user_id'      => 1,
                'is_published' => 1,
                'is_activated' => 1,
                'is_deleted'   => 0,
                'created_at'   => $publishAt,
                'updated_at'   => $publishAt,
            ]);

            print "Created: {$title}\n";
        }

        $newTotal = Article::where('type', 'article')
            ->where('is_activated', 1)
            ->where('is_deleted', 0)
            ->count();

        print "Done. Total published articles: {$newTotal}\n";
    }
}
