from django.core.management.base import BaseCommand
from django.utils import timezone
from datetime import datetime, timedelta
from news.models import (
    News, NewsCategory, NewsTag, NewsComment, NewsView, 
    NewsLike, NewsShare, Announcement, NotificationSettings
)
from core.models import CustomUser
import random

class Command(BaseCommand):
    help = 'Create comprehensive dummy news data with categories, comments, announcements'

    def add_arguments(self, parser):
        parser.add_argument(
            '--news-count',
            type=int,
            default=20,
            help='Number of news articles to create (default: 20)'
        )
        parser.add_argument(
            '--categories-count',
            type=int,
            default=20,
            help='Number of categories to create (default: 20)'
        )

    def handle(self, *args, **options):
        news_count = options['news_count']
        categories_count = options['categories_count']
        
        self.stdout.write('Creating comprehensive dummy news data...')
        
        # Get or create admin user
        admin_user, created = CustomUser.objects.get_or_create(
            username='admin',
            defaults={
                'email': 'admin@pulosarok.desa.id',
                'first_name': 'Administrator',
                'last_name': 'Desa Pulo Sarok',
                'is_staff': True,
                'is_superuser': True
            }
        )
        
        if created:
            admin_user.set_password('admin123')
            admin_user.save()
            self.stdout.write(f'Created admin user: {admin_user.username}')

        # Create categories
        categories_data = [
            {'name': 'Pemerintahan Desa', 'slug': 'pemerintahan-desa', 'description': 'Berita tentang pemerintahan dan kebijakan desa', 'color': '#007bff', 'icon': 'fas fa-landmark'},
            {'name': 'Pembangunan', 'slug': 'pembangunan', 'description': 'Berita tentang pembangunan infrastruktur desa', 'color': '#28a745', 'icon': 'fas fa-hammer'},
            {'name': 'Sosial Budaya', 'slug': 'sosial-budaya', 'description': 'Berita tentang kegiatan sosial dan budaya masyarakat', 'color': '#ffc107', 'icon': 'fas fa-users'},
            {'name': 'Ekonomi', 'slug': 'ekonomi', 'description': 'Berita tentang perkembangan ekonomi desa', 'color': '#17a2b8', 'icon': 'fas fa-chart-line'},
            {'name': 'Lingkungan', 'slug': 'lingkungan', 'description': 'Berita tentang kelestarian lingkungan hidup', 'color': '#20c997', 'icon': 'fas fa-leaf'},
            {'name': 'Pendidikan', 'slug': 'pendidikan', 'description': 'Berita tentang pendidikan dan pengembangan SDM', 'color': '#6f42c1', 'icon': 'fas fa-graduation-cap'},
            {'name': 'Kesehatan', 'slug': 'kesehatan', 'description': 'Berita tentang kesehatan masyarakat', 'color': '#dc3545', 'icon': 'fas fa-heartbeat'},
            {'name': 'Olahraga', 'slug': 'olahraga', 'description': 'Berita tentang kegiatan olahraga dan prestasi', 'color': '#fd7e14', 'icon': 'fas fa-running'},
            {'name': 'Teknologi', 'slug': 'teknologi', 'description': 'Berita tentang perkembangan teknologi di desa', 'color': '#6c757d', 'icon': 'fas fa-laptop'},
            {'name': 'Pertanian', 'slug': 'pertanian', 'description': 'Berita tentang sektor pertanian dan peternakan', 'color': '#28a745', 'icon': 'fas fa-seedling'},
            {'name': 'Keamanan', 'slug': 'keamanan', 'description': 'Berita tentang keamanan dan ketertiban masyarakat', 'color': '#dc3545', 'icon': 'fas fa-shield-alt'},
            {'name': 'Pariwisata', 'slug': 'pariwisata', 'description': 'Berita tentang pariwisata dan potensi wisata', 'color': '#17a2b8', 'icon': 'fas fa-camera'},
            {'name': 'Pemuda', 'slug': 'pemuda', 'description': 'Berita tentang kegiatan pemuda dan remaja', 'color': '#ffc107', 'icon': 'fas fa-user-friends'},
            {'name': 'Perempuan', 'slug': 'perempuan', 'description': 'Berita tentang kegiatan PKK dan perempuan', 'color': '#e83e8c', 'icon': 'fas fa-female'},
            {'name': 'Anak', 'slug': 'anak', 'description': 'Berita tentang kegiatan anak dan balita', 'color': '#fd7e14', 'icon': 'fas fa-child'},
            {'name': 'Lansia', 'slug': 'lansia', 'description': 'Berita tentang kegiatan lansia dan veteran', 'color': '#6c757d', 'icon': 'fas fa-wheelchair'},
            {'name': 'Bencana', 'slug': 'bencana', 'description': 'Berita tentang penanganan bencana dan darurat', 'color': '#dc3545', 'icon': 'fas fa-exclamation-triangle'},
            {'name': 'Hukum', 'slug': 'hukum', 'description': 'Berita tentang aspek hukum dan peraturan', 'color': '#343a40', 'icon': 'fas fa-gavel'},
            {'name': 'Komunikasi', 'slug': 'komunikasi', 'description': 'Berita tentang komunikasi dan informasi', 'color': '#007bff', 'icon': 'fas fa-bullhorn'},
            {'name': 'Lainnya', 'slug': 'lainnya', 'description': 'Berita kategori lainnya', 'color': '#6c757d', 'icon': 'fas fa-ellipsis-h'}
        ]
        
        categories = {}
        for i, cat_data in enumerate(categories_data[:categories_count]):
            category, created = NewsCategory.objects.get_or_create(
                slug=cat_data['slug'],
                defaults=cat_data
            )
            categories[cat_data['slug']] = category
            if created:
                self.stdout.write(f'Created category: {category.name}')

        # Create tags
        tags_data = [
            {'name': 'Pulo Sarok', 'slug': 'pulo-sarok', 'color': '#007bff'},
            {'name': 'Aceh Singkil', 'slug': 'aceh-singkil', 'color': '#28a745'},
            {'name': 'Gotong Royong', 'slug': 'gotong-royong', 'color': '#ffc107'},
            {'name': 'Pembangunan', 'slug': 'pembangunan', 'color': '#17a2b8'},
            {'name': 'Budaya', 'slug': 'budaya', 'color': '#6f42c1'},
            {'name': 'Lingkungan', 'slug': 'lingkungan', 'color': '#20c997'},
            {'name': 'Masyarakat', 'slug': 'masyarakat', 'color': '#fd7e14'},
            {'name': 'Pemerintah Desa', 'slug': 'pemerintah-desa', 'color': '#dc3545'},
            {'name': 'Pendidikan', 'slug': 'pendidikan', 'color': '#6c757d'},
            {'name': 'Kesehatan', 'slug': 'kesehatan', 'color': '#e83e8c'},
            {'name': 'Ekonomi', 'slug': 'ekonomi', 'color': '#28a745'},
            {'name': 'Pemuda', 'slug': 'pemuda', 'color': '#ffc107'},
            {'name': 'Wanita', 'slug': 'wanita', 'color': '#e83e8c'},
            {'name': 'Anak', 'slug': 'anak', 'color': '#fd7e14'},
            {'name': 'Lansia', 'slug': 'lansia', 'color': '#6c757d'},
            {'name': 'Bencana', 'slug': 'bencana', 'color': '#dc3545'},
            {'name': 'Hukum', 'slug': 'hukum', 'color': '#343a40'},
            {'name': 'Teknologi', 'slug': 'teknologi', 'color': '#6c757d'},
            {'name': 'Pertanian', 'slug': 'pertanian', 'color': '#28a745'},
            {'name': 'Pariwisata', 'slug': 'pariwisata', 'color': '#17a2b8'}
        ]
        
        tags = {}
        for tag_data in tags_data:
            tag, created = NewsTag.objects.get_or_create(
                slug=tag_data['slug'],
                defaults=tag_data
            )
            tags[tag_data['slug']] = tag
            if created:
                self.stdout.write(f'Created tag: {tag.name}')

        # Create comprehensive news data
        news_data = [
            {
                'title': 'Masyarakat Pulo Sarok Bersatu dalam Aksi Bersih Sampah Menyambut HUT Kabupaten Aceh Singkil',
                'slug': 'aksi-bersih-sampah-hut-aceh-singkil',
                'content': '''
                <p>Desa Pulo Sarok, Aceh Singkil - Dalam rangka menyambut Hari Ulang Tahun ke-25 Kabupaten Aceh Singkil, masyarakat Desa Pulo Sarok bersama kelompok pemuda dan pemerintah desa mengadakan aksi gotong royong membersihkan sampah di sekitar simpang pelabuhan crude palm oil (CPO) atau dekat Pelabuhan Sahbandar Pulo Sarok.</p>
                
                <p>Kegiatan yang digelar pada 21 April 2024 ini melibatkan seluruh komponen masyarakat, mulai dari tokoh masyarakat, pemuda, hingga ibu-ibu PKK. Aksi bersih-bersih ini bertujuan untuk menjaga kebersihan lingkungan dan menciptakan suasana yang bersih dan indah dalam menyambut perayaan HUT Kabupaten Aceh Singkil.</p>
                
                <p>Kepala Desa Pulo Sarok, Bapak Ahmad Fauzi, mengapresiasi semangat gotong royong masyarakat yang begitu tinggi. "Kegiatan ini menunjukkan bahwa masyarakat Pulo Sarok memiliki kesadaran tinggi akan pentingnya menjaga kebersihan lingkungan," ujarnya.</p>
                ''',
                'excerpt': 'Masyarakat Desa Pulo Sarok mengadakan aksi gotong royong membersihkan sampah di sekitar pelabuhan untuk menyambut HUT Kabupaten Aceh Singkil.',
                'category': 'sosial-budaya',
                'tags': ['pulo-sarok', 'aceh-singkil', 'gotong-royong', 'lingkungan'],
                'status': 'published',
                'is_featured': True,
                'is_breaking': False,
                'priority': 'high'
            },
            {
                'title': 'Desa Pulo Sarok Diusulkan Menjadi Desa Budaya oleh Disdikbud Aceh Singkil',
                'slug': 'pulo-sarok-desa-budaya-disdikbud',
                'content': '''
                <p>Aceh Singkil - Dinas Pendidikan dan Kebudayaan (Disdikbud) Aceh Singkil mengusulkan Desa Pulo Sarok bersama dua desa lainnya untuk menjadi desa budaya ke Balai Pelestarian Kebudayaan Aceh (BPKA).</p>
                
                <p>Usulan ini disampaikan pada 23 Desember 2024 dengan tujuan melestarikan dan menjaga warisan adat dan budaya yang ada di Desa Pulo Sarok. Kepala Disdikbud Aceh Singkil, Drs. Muhammad Ali, menjelaskan bahwa Desa Pulo Sarok memiliki potensi budaya yang sangat kaya dan perlu dilestarikan.</p>
                
                <p>"Desa Pulo Sarok memiliki tradisi dan adat istiadat yang unik yang perlu kita jaga dan lestarikan. Dengan menjadi desa budaya, kita berharap dapat mengembangkan potensi budaya yang ada," jelas Muhammad Ali.</p>
                ''',
                'excerpt': 'Disdikbud Aceh Singkil mengusulkan Desa Pulo Sarok menjadi desa budaya untuk melestarikan warisan adat dan budaya.',
                'category': 'sosial-budaya',
                'tags': ['pulo-sarok', 'aceh-singkil', 'budaya', 'pemerintah-desa'],
                'status': 'published',
                'is_featured': True,
                'is_breaking': False,
                'priority': 'high'
            },
            {
                'title': 'Pembangunan Jembatan Pulo Sarok Menimbulkan Keluhan Masyarakat',
                'slug': 'pembangunan-jembatan-pulo-sarok-keluhan',
                'content': '''
                <p>Pulo Sarok, Aceh Singkil - Proyek pembangunan jembatan di Desa Pulo Sarok menimbulkan keluhan dari masyarakat karena tidak disediakannya jalan alternatif selama proses pembangunan. Hal ini menyebabkan warga harus menempuh jarak lebih jauh untuk ke pasar atau mengantar anak ke sekolah.</p>
                
                <p>Keluhan ini disampaikan oleh sejumlah warga pada September 2024. Mereka mengaku kesulitan dalam menjalankan aktivitas sehari-hari karena akses jalan yang terbatas. "Kami harus memutar jauh untuk ke pasar atau mengantar anak sekolah," ujar salah satu warga.</p>
                ''',
                'excerpt': 'Pembangunan jembatan di Desa Pulo Sarok menimbulkan keluhan masyarakat karena tidak ada jalan alternatif.',
                'category': 'pembangunan',
                'tags': ['pulo-sarok', 'aceh-singkil', 'pembangunan', 'masyarakat'],
                'status': 'published',
                'is_featured': False,
                'is_breaking': True,
                'priority': 'urgent'
            },
            {
                'title': 'Desa Pulo Sarok Jadi Pionir Program Desa Cinta Statistik di Aceh Singkil',
                'slug': 'pulo-sarok-desa-cantik-bps',
                'content': '''
                <p>Aceh Singkil - Desa Pulo Sarok resmi menjadi desa binaan Badan Pusat Statistik (BPS) dalam program Desa Cinta Statistik (Desa Cantik). Program ini diluncurkan pada 7 Mei 2025 dengan tujuan meningkatkan kapabilitas aparatur desa dalam pengelolaan data statistik yang akurat dan valid.</p>
                
                <p>Program Desa Cantik ini merupakan inisiatif BPS untuk membantu desa dalam mengelola data statistik yang diperlukan untuk perencanaan pembangunan. Desa Pulo Sarok dipilih sebagai pionir karena memiliki komitmen yang tinggi dalam pengelolaan data.</p>
                ''',
                'excerpt': 'Desa Pulo Sarok menjadi pionir program Desa Cinta Statistik (Desa Cantik) yang digagas BPS Aceh Singkil.',
                'category': 'pemerintahan-desa',
                'tags': ['pulo-sarok', 'aceh-singkil', 'pembangunan', 'pemerintah-desa'],
                'status': 'published',
                'is_featured': True,
                'is_breaking': False,
                'priority': 'high'
            },
            {
                'title': 'Kebakaran Hutan Melanda Desa Pulo Sarok, Empat Hektare Lahan Terbakar',
                'slug': 'kebakaran-hutan-pulo-sarok-aceh-singkil',
                'content': '''
                <p>Pulo Sarok, Aceh Singkil - Kebakaran hutan dan lahan melanda wilayah Desa Pulo Sarok pada 2 Juni 2025, menghanguskan sekitar empat hektare lahan. Peristiwa ini menimbulkan keprihatinan masyarakat dan memerlukan upaya pemadaman yang serius.</p>
                
                <p>Kebakaran yang terjadi di lahan perkebunan dan hutan sekunder ini diduga disebabkan oleh cuaca kering dan kemungkinan aktivitas manusia yang tidak bertanggung jawab. Tim gabungan dari BPBD, TNI, Polri, dan masyarakat setempat segera melakukan upaya pemadaman.</p>
                ''',
                'excerpt': 'Kebakaran hutan melanda Desa Pulo Sarok menghanguskan empat hektare lahan, tim gabungan melakukan pemadaman.',
                'category': 'lingkungan',
                'tags': ['pulo-sarok', 'aceh-singkil', 'lingkungan', 'bencana'],
                'status': 'published',
                'is_featured': False,
                'is_breaking': True,
                'priority': 'urgent'
            }
        ]

        # Generate additional news data
        additional_news_templates = [
            {
                'title': 'Program Posyandu Desa Pulo Sarok Raih Penghargaan Terbaik',
                'content': 'Program Posyandu Desa Pulo Sarok berhasil meraih penghargaan sebagai Posyandu Terbaik se-Kabupaten Aceh Singkil pada tahun 2024.',
                'category': 'kesehatan',
                'tags': ['pulo-sarok', 'kesehatan', 'masyarakat']
            },
            {
                'title': 'Festival Budaya Desa Pulo Sarok Sukses Digelar',
                'content': 'Festival Budaya Desa Pulo Sarok berhasil digelar dengan meriah, menampilkan berbagai kesenian tradisional dan kuliner khas daerah.',
                'category': 'sosial-budaya',
                'tags': ['pulo-sarok', 'budaya', 'masyarakat']
            },
            {
                'title': 'Pembangunan Jalan Desa Pulo Sarok Dimulai',
                'content': 'Pembangunan jalan desa di Pulo Sarok resmi dimulai dengan target selesai dalam 6 bulan ke depan.',
                'category': 'pembangunan',
                'tags': ['pulo-sarok', 'pembangunan', 'infrastruktur']
            },
            {
                'title': 'Program Beasiswa untuk Anak Desa Pulo Sarok',
                'content': 'Pemerintah desa meluncurkan program beasiswa untuk membantu anak-anak kurang mampu melanjutkan pendidikan.',
                'category': 'pendidikan',
                'tags': ['pulo-sarok', 'pendidikan', 'anak']
            },
            {
                'title': 'Pelatihan Teknologi untuk Masyarakat Pulo Sarok',
                'content': 'Masyarakat Desa Pulo Sarok mengikuti pelatihan teknologi untuk meningkatkan kemampuan digital.',
                'category': 'teknologi',
                'tags': ['pulo-sarok', 'teknologi', 'masyarakat']
            },
            {
                'title': 'Program Pertanian Organik di Desa Pulo Sarok',
                'content': 'Desa Pulo Sarok mengembangkan program pertanian organik untuk meningkatkan kualitas hasil pertanian.',
                'category': 'pertanian',
                'tags': ['pulo-sarok', 'pertanian', 'lingkungan']
            },
            {
                'title': 'Kegiatan Olahraga Masyarakat Pulo Sarok',
                'content': 'Masyarakat Desa Pulo Sarok rutin mengadakan kegiatan olahraga untuk menjaga kesehatan dan kebugaran.',
                'category': 'olahraga',
                'tags': ['pulo-sarok', 'olahraga', 'masyarakat']
            },
            {
                'title': 'Program Keamanan Lingkungan Desa Pulo Sarok',
                'content': 'Desa Pulo Sarok menggalakkan program keamanan lingkungan dengan melibatkan seluruh elemen masyarakat.',
                'category': 'keamanan',
                'tags': ['pulo-sarok', 'keamanan', 'masyarakat']
            },
            {
                'title': 'Potensi Wisata Desa Pulo Sarok Dikembangkan',
                'content': 'Pemerintah desa mengembangkan potensi wisata alam dan budaya untuk meningkatkan perekonomian masyarakat.',
                'category': 'pariwisata',
                'tags': ['pulo-sarok', 'pariwisata', 'ekonomi']
            },
            {
                'title': 'Kegiatan Pemuda Desa Pulo Sarok',
                'content': 'Pemuda Desa Pulo Sarok aktif mengadakan berbagai kegiatan positif untuk kemajuan desa.',
                'category': 'pemuda',
                'tags': ['pulo-sarok', 'pemuda', 'masyarakat']
            },
            {
                'title': 'Program PKK Desa Pulo Sarok',
                'content': 'Program PKK Desa Pulo Sarok berhasil meningkatkan peran perempuan dalam pembangunan desa.',
                'category': 'perempuan',
                'tags': ['pulo-sarok', 'wanita', 'masyarakat']
            },
            {
                'title': 'Kegiatan Anak-anak Desa Pulo Sarok',
                'content': 'Anak-anak Desa Pulo Sarok mengikuti berbagai kegiatan edukatif dan kreatif.',
                'category': 'anak',
                'tags': ['pulo-sarok', 'anak', 'pendidikan']
            },
            {
                'title': 'Program Lansia Desa Pulo Sarok',
                'content': 'Desa Pulo Sarok memberikan perhatian khusus kepada lansia dengan berbagai program kesehatan dan sosial.',
                'category': 'lansia',
                'tags': ['pulo-sarok', 'lansia', 'kesehatan']
            },
            {
                'title': 'Penanganan Bencana di Desa Pulo Sarok',
                'content': 'Desa Pulo Sarok memiliki sistem penanganan bencana yang terkoordinasi dengan baik.',
                'category': 'bencana',
                'tags': ['pulo-sarok', 'bencana', 'keamanan']
            },
            {
                'title': 'Penyuluhan Hukum di Desa Pulo Sarok',
                'content': 'Masyarakat Desa Pulo Sarok mengikuti penyuluhan hukum untuk meningkatkan kesadaran hukum.',
                'category': 'hukum',
                'tags': ['pulo-sarok', 'hukum', 'masyarakat']
            }
        ]

        # Combine all news data
        all_news_data = news_data + additional_news_templates

        # Create news articles
        created_count = 0
        for i, news_item in enumerate(all_news_data[:news_count]):
            # Generate unique slug if not provided
            if 'slug' not in news_item:
                news_item['slug'] = f"berita-{i+1}-{random.randint(1000, 9999)}"
            
            # Check if news already exists
            if not News.objects.filter(slug=news_item['slug']).exists():
                # Get category
                category = categories.get(news_item['category'], categories['lainnya'])
                
                # Get tags
                news_tags = []
                for tag_slug in news_item.get('tags', []):
                    if tag_slug in tags:
                        news_tags.append(tags[tag_slug])
                
                # Random dates
                days_ago = random.randint(1, 90)
                published_date = timezone.now() - timedelta(days=days_ago)
                
                news = News.objects.create(
                    title=news_item['title'],
                    slug=news_item['slug'],
                    content=news_item.get('content', news_item.get('content', '')),
                    excerpt=news_item.get('excerpt', news_item.get('content', '')[:200] + '...'),
                    category=category,
                    author=admin_user,
                    status=news_item.get('status', 'published'),
                    is_featured=news_item.get('is_featured', False),
                    is_breaking=news_item.get('is_breaking', False),
                    priority=news_item.get('priority', 'normal'),
                    published_date=published_date
                )
                
                # Add tags
                for tag in news_tags:
                    news.tags.add(tag)
                
                created_count += 1
                self.stdout.write(f'Created news: {news.title}')
            else:
                self.stdout.write(f'News already exists: {news_item["title"]}')

        # Create announcements
        announcement_data = [
            {
                'title': 'Pemberitahuan Penting: Pemadaman Listrik',
                'content': 'Diberitahukan kepada seluruh warga bahwa akan ada pemadaman listrik pada hari ini pukul 14.00 - 18.00. Mohon untuk mempersiapkan diri dan menyimpan makanan di kulkas.',
                'announcement_type': 'urgent',
                'priority': 'high',
                'target_audience': 'Semua Warga',
                'location': 'Seluruh Wilayah Desa',
                'contact_person': 'Budi Santoso',
                'contact_phone': '081234567890'
            },
            {
                'title': 'Jadwal Posyandu Bulan Ini',
                'content': 'Posyandu akan dilaksanakan pada tanggal 15 setiap bulan di Balai Desa. Mohon untuk membawa buku KIA dan kartu keluarga.',
                'announcement_type': 'schedule',
                'priority': 'normal',
                'target_audience': 'Ibu dan Balita',
                'location': 'Balai Desa',
                'contact_person': 'Siti Nurhaliza',
                'contact_phone': '081234567891'
            },
            {
                'title': 'Acara Gotong Royong Bersih Desa',
                'content': 'Dalam rangka memperingati Hari Kemerdekaan RI, akan diadakan kegiatan gotong royong bersih desa. Semua warga diharapkan berpartisipasi.',
                'announcement_type': 'event',
                'priority': 'normal',
                'target_audience': 'Semua Warga',
                'location': 'Seluruh Wilayah Desa',
                'contact_person': 'Rudi Hartono',
                'contact_phone': '081234567893'
            }
        ]

        for announcement_item in announcement_data:
            start_date = timezone.now() + timedelta(days=random.randint(1, 30))
            end_date = start_date + timedelta(days=random.randint(1, 7)) if random.choice([True, False]) else None
            
            announcement = Announcement.objects.create(
                title=announcement_item['title'],
                content=announcement_item['content'],
                announcement_type=announcement_item['announcement_type'],
                priority=announcement_item['priority'],
                target_audience=announcement_item['target_audience'],
                location=announcement_item['location'],
                contact_person=announcement_item['contact_person'],
                contact_phone=announcement_item['contact_phone'],
                author=admin_user,
                start_date=start_date,
                end_date=end_date,
                status='published',
                is_pinned=random.choice([True, False, False, False]),
                is_popup=random.choice([True, False, False, False, False])
            )
            self.stdout.write(f'Created announcement: {announcement.title}')

        # Create comments for news
        comments_data = [
            {
                'content': 'Alhamdulillah, kegiatan gotong royong seperti ini sangat bermanfaat untuk menjaga kebersihan lingkungan. Semoga bisa dilakukan secara rutin.',
                'author_name': 'Ahmad Fauzi',
                'author_email': 'ahmad.fauzi@email.com',
                'status': 'approved'
            },
            {
                'content': 'Program desa budaya ini sangat bagus untuk melestarikan warisan budaya leluhur kita. Mari kita dukung bersama.',
                'author_name': 'Siti Aminah',
                'author_email': 'siti.aminah@email.com',
                'status': 'approved'
            },
            {
                'content': 'Semoga pembangunan jembatan bisa segera selesai dan tidak mengganggu aktivitas masyarakat lagi.',
                'author_name': 'Muhammad Ali',
                'author_email': 'muhammad.ali@email.com',
                'status': 'approved'
            },
            {
                'content': 'Program Desa Cantik ini sangat membantu dalam pengelolaan data desa. Terima kasih atas bantuannya.',
                'author_name': 'Hasan Basri',
                'author_email': 'hasan.basri@email.com',
                'status': 'approved'
            },
            {
                'content': 'Kebakaran hutan ini sangat meresahkan. Mari kita jaga lingkungan kita bersama-sama.',
                'author_name': 'Bustami',
                'author_email': 'bustami@email.com',
                'status': 'approved'
            }
        ]

        # Add comments to news articles
        news_articles = News.objects.filter(status='published')
        for news in news_articles:
            # Add 2-5 comments per news
            num_comments = random.randint(2, 5)
            selected_comments = random.sample(comments_data, min(num_comments, len(comments_data)))
            
            for comment_data in selected_comments:
                comment_date = timezone.now() - timedelta(days=random.randint(1, 30))
                
                comment = NewsComment.objects.create(
                    news=news,
                    content=comment_data['content'],
                    author_name=comment_data['author_name'],
                    author_email=comment_data['author_email'],
                    status=comment_data['status'],
                    created_at=comment_date
                )
                self.stdout.write(f'Created comment for news: {news.title[:50]}...')

        # Create views for news
        for news in news_articles:
            # Create 10-50 views per news
            num_views = random.randint(10, 50)
            
            for i in range(num_views):
                view_date = timezone.now() - timedelta(
                    days=random.randint(0, 30),
                    hours=random.randint(0, 23),
                    minutes=random.randint(0, 59)
                )
                
                NewsView.objects.create(
                    news=news,
                    view_date=view_date,
                    ip_address=f'192.168.1.{random.randint(1, 255)}',
                    user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
                    session_key=f'session_{random.randint(100000, 999999)}_{i}',
                    device_type=random.choice(['desktop', 'mobile', 'tablet']),
                    browser=random.choice(['Chrome', 'Firefox', 'Safari', 'Edge']),
                    operating_system=random.choice(['Windows', 'macOS', 'Linux', 'Android', 'iOS'])
                )

        # Create likes for news
        for news in news_articles:
            num_likes = random.randint(5, 25)
            
            for i in range(num_likes):
                NewsLike.objects.create(
                    news=news,
                    ip_address=f'192.168.1.{random.randint(1, 255)}',
                    session_key=f'session_{random.randint(100000, 999999)}_{i}',
                    user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
                )

        # Create shares for news
        platforms = ['facebook', 'twitter', 'whatsapp', 'telegram', 'email', 'copy_link']
        for news in news_articles:
            num_shares = random.randint(3, 15)
            
            for i in range(num_shares):
                NewsShare.objects.create(
                    news=news,
                    platform=random.choice(platforms),
                    ip_address=f'192.168.1.{random.randint(1, 255)}',
                    session_key=f'session_{random.randint(100000, 999999)}_{i}',
                    user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
                )

        # Create notification settings
        NotificationSettings.objects.get_or_create(
            name='default',
            defaults={
                'is_enabled': True,
                'show_in_navbar': True,
                'auto_show_delay': 1000,
                'auto_hide_delay': 15000,
                'show_count_badge': True,
                'max_notifications': 5,
                'slide_animation': True,
                'sound_enabled': False,
                'vibration_enabled': True,
            }
        )

        self.stdout.write(
            self.style.SUCCESS(
                f'Successfully created comprehensive dummy data:\n'
                f'- {created_count} news articles\n'
                f'- {len(categories)} categories\n'
                f'- {len(tags)} tags\n'
                f'- {len(announcement_data)} announcements\n'
                f'- Comments, views, likes, and shares for news articles'
            )
        )
